{"id":338646,"date":"2021-09-13T15:26:24","date_gmt":"2021-09-13T12:26:24","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/how-to-back-up-your-gitlab-server-cloudsavvy-it\/"},"modified":"2021-09-13T15:26:24","modified_gmt":"2021-09-13T12:26:24","slug":"how-to-back-up-your-gitlab-server-cloudsavvy-it","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/how-to-back-up-your-gitlab-server-cloudsavvy-it\/","title":{"rendered":"#How to Back Up Your GitLab Server \u2013 CloudSavvy IT"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a2d5c88a809a\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a2d5c88a809a\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-back-up-your-gitlab-server-cloudsavvy-it\/#Making_an_On-Demand_Backup\" >Making an On-Demand Backup<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-back-up-your-gitlab-server-cloudsavvy-it\/#Whats_Included_in_a_Backup\" >What\u2019s Included in a Backup?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-back-up-your-gitlab-server-cloudsavvy-it\/#Creating_a_Backup_Schedule\" >Creating a Backup Schedule<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-back-up-your-gitlab-server-cloudsavvy-it\/#Excluding_Data_Types\" >Excluding Data Types<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-back-up-your-gitlab-server-cloudsavvy-it\/#Backing_Up_to_S3\" >Backing Up to S3<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-back-up-your-gitlab-server-cloudsavvy-it\/#The_Copy_Backup_Strategy\" >The Copy Backup Strategy<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-back-up-your-gitlab-server-cloudsavvy-it\/#Dont_Forget_Back_Up_Your_Config_File\" >Don\u2019t Forget: Back Up Your Config File!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-back-up-your-gitlab-server-cloudsavvy-it\/#Conclusion\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<p><strong>&#8220;#How to Back Up Your GitLab Server \u2013 CloudSavvy IT&#8221;<\/strong><\/p>\n<div id=\"article-content-area\">\n<img loading=\"lazy\" decoding=\"async\" class=\"type:primaryImage aligncenter size-full wp-image-9546\" srcset=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/02\/266bb4cf.jpg?width=398&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1 400w, https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/02\/266bb4cf.jpg?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1 1200w\" sizes=\"auto, 400w, 1200w\" src=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/02\/266bb4cf.jpg?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"Graphic showing the GitLab logo, a stylised fox head\" width=\"1602\" height=\"902\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>Organizations using a self-managed GitLab instance usually rely on it to hold their source code, project management, and operational tooling. It\u2019s vital to have functioning backups so your data\u2019s protected in case of a hardware failure, unsuccessful server update, or malicious compromise.<\/p>\n<p>GitLab has a built-in back up component that can create a complete archive of your installation\u2019s data. The archive can be restored a fresh server running the same GitLab version.<\/p>\n<p>Here\u2019s how to <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/docs.gitlab.com\/ee\/raketasks\/backup_restore.html\">setup back ups<\/a> to your local filesystem or an Amazon S3 bucket. These steps are intended for use with GitLab omnibus editions. You\u2019ll need to modify the GitLab CLI commands by prefixing them with <code>bundle exec rake<\/code> if your instance was <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/docs.gitlab.com\/ee\/raketasks\/backup_restore.html\">built from source<\/a>.<\/p>\n<h2 id=\"making-an-on-demand-backup\"><span class=\"ez-toc-section\" id=\"Making_an_On-Demand_Backup\"><\/span>Making an On-Demand Backup<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The simplest way to create a backup is with the on-demand creation command. Run the following command in your shell:<\/p>\n<pre>sudo gitlab-backup create<\/pre>\n<p>This works on GitLab 12.2 and newer. Older versions should use an alternative version instead:<\/p>\n<pre>sudo gitlab-rake gitlab:backup:create<\/pre>\n<p>The backup will be saved as a tar archive in the directory defined by your GitLab configuration file. Omnibus installations default to using <code>\/var\/opt\/gitlab\/backups<\/code>. Each backup archive is named with its creation timestamp and GitLab version.<\/p>\n<h2 id=\"whats-included-in-a-backup\"><span class=\"ez-toc-section\" id=\"Whats_Included_in_a_Backup\"><\/span>What\u2019s Included in a Backup?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>GitLab\u2019s built-in back up utility exports data created by users on your GitLab instance. This includes everything in the GitLab database and your on-disk Git repositories.<\/p>\n<p>Restoring the backup will reinstate your projects, groups, users, issues, uploaded file attachments, and CI\/CD job logs. The backup also covers GitLab Pages websites and Docker images uploaded to the integrated container registry.<\/p>\n<p>Packages added to GitLab\u2019s package registries are not supported. You should <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/docs.gitlab.com\/ee\/administration\/packages\/index.html#using-object-storage\">configure your installation<\/a> to save packages to an external object storage provider if you need them to be recoverable without a manual rebuild.<\/p>\n<h2 id=\"creating-a-backup-schedule\"><span class=\"ez-toc-section\" id=\"Creating_a_Backup_Schedule\"><\/span>Creating a Backup Schedule<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>There\u2019s no integrated mechanism to define an automated backup schedule. You should setup your own <code>cron<\/code> task to run the backup command shown above.<\/p>\n<p>Run <code>sudo crontab -e<\/code> to open root\u2019s crontab, then add the following contents to the file:<\/p>\n<pre>0 21 * * * \/opt\/gitlab\/bin\/gitlab-backup create CRON=1<\/pre>\n<p>Save and close the file to <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/download-scripts-themes-apps\/\" data-internallinksmanager029f6b8e52c=\"9\" title=\"Download Scripts &amp; Themes &amp; Apps\" target=\"_blank\" rel=\"noopener\">app<\/a>ly your crontab change. This example will create a new backup at 9pm each day. Setting the <code>CRON<\/code> environment variable instructs GitLab to hide the backup progress display so you don\u2019t receive redundant <code>cron<\/code> emails with the job output.<\/p>\n<p>Using this task as-is will keep every backup indefinitely until you manually clean them up. This can quickly consume a lot of storage space if you\u2019re running an active GitLab instance containing large projects.<\/p>\n<p>An optional configuration key lets you delete old archives as part of the backup creation script. Open your GitLab configuration file at <code>\/etc\/gitlab\/gitlab.rb<\/code>. Search for <code>backup_keep_time<\/code>, uncomment the line, and set the number of seconds you want to keep each backup for.<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"ruby\">\n<pre class=\"de1\">gitlab_rails<span class=\"br0\">[<\/span><span class=\"st0\">'backup_keep_time'<\/span><span class=\"br0\">]<\/span> = <span class=\"nu0\">432000<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Here backups are retained for five days. GitLab will delete all eligible archives in the backup directory each time the backup creation command is executed.<\/p>\n<p>You need to reconfigure GitLab whenever the configuration file changes. Run <code>sudo gitlab-ctl reconfigure<\/code> to apply your new setting.<\/p>\n<h2 id=\"excluding-data-types\"><span class=\"ez-toc-section\" id=\"Excluding_Data_Types\"><\/span>Excluding Data Types<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Sometimes you might want to run a backup with a subset of the supported data types. Defining the <code>SKIP<\/code> environment variable lets you exclude specific operations from running, slimming down your final archive.<\/p>\n<p>The environment variable takes a comma-separated list of data types. You can find the currently supported options <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/docs.gitlab.com\/ee\/raketasks\/backup_restore.html#excluding-specific-directories-from-the-backup\">in the GitLab wiki<\/a>.<\/p>\n<p>Here\u2019s how to backup everything except container registry images:<\/p>\n<pre>sudo gitlab-backup create SKIP=registry<\/pre>\n<p>Excluding the registry content is often an easy way to significantly reduce your backup size and accelerate its creation speed. A team with several active projects building multiple Docker images a day can quickly accumulate gigabytes of registry data. Excluding them from backup is not necessarily too big a risk, as you can always rebuild the images using the <code>Dockerfile<\/code> in your repository.<\/p>\n<h2 id=\"backing-up-to-s3\"><span class=\"ez-toc-section\" id=\"Backing_Up_to_S3\"><\/span>Backing Up to S3<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>GitLab can automatically save your backups to S3-compatible object storage providers. Uncomment the <code>backup_upload_connection<\/code> lines and add your connection details:<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"ruby\">\n<pre class=\"de1\">gitlab_rails<span class=\"br0\">[<\/span><span class=\"st0\">'backup_upload_connection'<\/span><span class=\"br0\">]<\/span> = <span class=\"br0\">{<\/span>\n    <span class=\"st0\">\"provider\"<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">\"AWS\"<\/span>,\n    <span class=\"st0\">\"region\"<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">\"eu-west-1\"<\/span>,\n    <span class=\"st0\">\"aws_access_key_id\"<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">\"access_key\"<\/span>,\n    <span class=\"st0\">\"aws_secret_access_key\"<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">\"secret_key\"<\/span>,\n    <span class=\"co1\"># \"endpoint\" =&gt; \"https:\/\/...\"<\/span>\n<span class=\"br0\">}<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Add your own access key, secret key, and AWS region ID to complete the connection. You should set the <code>endpoint<\/code> field too if you\u2019re connecting to a provider other than AWS. Supply the URL of your object storage server so GitLab can upload to it.<\/p>\n<p>You must also set a <code>backup_upload_remote_directory<\/code> key. Find this line in the config file, uncomment it, and set an S3 bucket name to upload your backups into:<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"ruby\">\n<pre class=\"de1\">gitlab_rails<span class=\"br0\">[<\/span><span class=\"st0\">'backup_upload_remote_directory'<\/span><span class=\"br0\">]<\/span> = <span class=\"st0\">'gitlab-backups'<\/span>;<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Run <code>sudo gitlab-ctl reconfigure<\/code> to apply your changes.<\/p>\n<p>The backup creation command will now upload its archives to your configured S3 bucket. This gives you much greater redundancy by storing your backups off-site, protecting you against physical hardware failure.<\/p>\n<p>Beware that the <code>backup_keep_time<\/code> setting isn\u2019t supported when you\u2019re using S3 storage. It only applies to locally stored backup archives. You can achieve something similar by using S3\u2019s built-in <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/object-lifecycle-mgmt.html?tag=reviewgeek-20\">expiration policies<\/a> to automatically delete uploads after a set time period has elapsed.<\/p>\n<h2 id=\"the-copy-backup-strategy\"><span class=\"ez-toc-section\" id=\"The_Copy_Backup_Strategy\"><\/span>The Copy Backup Strategy<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>GitLab\u2019s default backup strategy is to stream data continuously to the tar archive. This <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/general\/\" data-internallinksmanager029f6b8e52c=\"3\" title=\"General\" target=\"_blank\" rel=\"noopener\">general<\/a>ly works well but can present problems on very active GitLab instances. Data might change in the source directory before it\u2019s finished reaching the archive, causing tar to skip it with a <code>file changed as we read it<\/code> error.<\/p>\n<p>To combat this, GitLab introduced an optional <code>copy<\/code> strategy. This copies all eligible backup data to a temporary directory, then streams the copied content into the final tar archive. This ensures tar isn\u2019t reading from a live GitLab instance but has the side-effect of temporarily increasing GitLab\u2019s storage consumption. Backup performance can also take a noticeable hit, especially on slower storage devices.<\/p>\n<p>The <code>copy<\/code> strategy is activated by setting the <code>STRATEGY<\/code> environment variable when running the backup command. You should make sure you\u2019ve got enough disk space available. GitLab will run the backup in data type stages so you only need double the size of your largest data type. As an example, if you have 5GB of Git repositories and 10GB of container registries, you\u2019d need to have 10GB of extra available space, not 15GB.<\/p>\n<pre>sudo gitlab-backup create STRATEGY=copy<\/pre>\n<h2 id=\"dont-forget-back-up-your-config-file\"><span class=\"ez-toc-section\" id=\"Dont_Forget_Back_Up_Your_Config_File\"><\/span>Don\u2019t Forget: Back Up Your Config File!<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>GitLab\u2019s back up script only manages user-created data. There are two other critical files essential to the operation of your GitLab server. These must be backed up too to ensure successful recovery of your instance.<\/p>\n<ul>\n<li><strong><code>\/etc\/gitlab\/gitlab.rb<\/code><\/strong> \u2013 This is your GitLab configuration file. All but the most basic of installations will usually acquire many modifications over time. Backing up this file lets you drop it into a new GitLab installation without having to start from scratch.<\/li>\n<li><strong><code>\/etc\/gitlab\/gitlab-secrets.json<\/code><\/strong> \u2013 This file must be backed up. It includes your database encryption key, secrets used for two-factor authentication, and other non-recoverable sensitive data. Misplacing this file could render any recovery effort impossible, even if you\u2019ve got a functioning backup archive available.<\/li>\n<\/ul>\n<p>You could use another <code>cron<\/code> task to backup these two files. They should be copied off your server so you can still access them if you face a hardware failure.<\/p>\n<h2 id=\"conclusion\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Backups are vital to any GitLab administrator. The software is usually critical to every team in an organization so any unexpected downtime could cause severe operational challenges.<\/p>\n<p>GitLab comes with everything you need to make regular backups. The best approach is to create a <code>cron<\/code> task that runs the built-in script on a regular schedule. Save your backup archives to external object storage to protect against hardware loss, failure, or damage. Remember to manually backup your GitLab config and secrets files too as otherwise the recovery process will be significantly more complicated.\n<\/div>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/www.cloudsavvyit.com\/14157\/how-to-back-up-your-gitlab-server\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;#How to Back Up Your GitLab Server \u2013 CloudSavvy IT&#8221; Organizations using a self-managed GitLab instance usually rely on it to hold their source code, project management, and operational tooling. It\u2019s vital to have functioning backups so your data\u2019s protected in case of a hardware failure, unsuccessful server update, or malicious compromise. GitLab has a&#8230;<\/p>\n","protected":false},"author":1,"featured_media":338647,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/02\/266bb4cf.jpg","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-338646","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/338646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=338646"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/338646\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/338647"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=338646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=338646"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=338646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}