{"id":272,"date":"2018-06-06T18:56:49","date_gmt":"2018-06-06T10:56:49","guid":{"rendered":"https:\/\/www.techcoil.com\/blog\/?p=272"},"modified":"2018-06-06T18:57:17","modified_gmt":"2018-06-06T10:57:17","slug":"setting-up-your-own-raspberry-pi-3-git-server-with-go-git-service-gogs-and-raspbian-stretch-lite","status":"publish","type":"post","link":"https:\/\/www.techcoil.com\/blog\/setting-up-your-own-raspberry-pi-3-git-server-with-go-git-service-gogs-and-raspbian-stretch-lite\/","title":{"rendered":"Setting up your own Raspberry Pi 3 git server with Go Git Service (Gogs) and Raspbian Stretch Lite"},"content":{"rendered":"<p>When <a href=\"https:\/\/gizmodo.com\/microsoft-buys-github-and-some-people-are-pissed-1826533362\" rel=\"noopener\" target=\"_blank\">Microsoft bought Github<\/a>, some developers who had trusted GitHub with their code, are considering ditching it. In case you have the same thought, you may want to consider hosting your own Git server. After all, that is the best approach to ensure that your code repository stays under your control.<\/p>\n<p>In view of hosting your own code repository, you may want to setup a Raspberry Pi 3 Git server. Together with <a href=\"https:\/\/gogs.io\/\" rel=\"noopener\" target=\"_blank\">Go Git Service<\/a> and Raspbian Stretch Lite, you can get a Git server with decent performance.<\/p>\n<p>Given these points, this post discusses how you can setup your own Git server on a Raspberry Pi 3 with Go Git Service (Gogs) and Raspbian Stretch Lite.<\/p>\n<h2>Recommended hardware list to build your Raspberry Pi 3 Git server<\/h2>\n<p>In case you need some reference on <a href=\"https:\/\/www.techcoil.com\/raspberry-pi-3-buying-guide\/\" rel=\"noopener\" target=\"_blank\">what you can buy for this Raspberry Pi 3 project<\/a>, the following is a list of hardware recommendations for you:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.amazon.com\/CanaKit-Raspberry-Micro-Supply-Listed\/dp\/B01C6FFNY4\/ref=as_li_ss_tl?s=pc&ie=UTF8&qid=1517212574&sr=1-4&keywords=raspberry+pi+3&linkCode=ll1&tag=clivsperswebs-20&linkId=76113a630916ac804456aa1f5dd76c85\" rel=\"noopener\" target=\"_blank\">CanaKit Raspberry Pi 3 with 2.5A Micro USB Power Supply<\/a> or <a href=\"https:\/\/www.amazon.com\/CanaKit-Raspberry-Power-Supply-Listed\/dp\/B07BC6WH7V\/\/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=clivsperswebs-20&linkId=facc24accf03fbe5cd45b1893a1e9ab1\" rel=\"noopener\" target=\"_blank\">CanaKit Raspberry Pi 3 B+ (B Plus) with 2.5A Power Supply (UL Listed)<\/a><\/li>\n<li><a href=\"https:\/\/www.amazon.com\/dp\/B01F1PSFY6\/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=clivsperswebs-20&linkId=d68c56d79a1d84f89f596fa715743a9e\" rel=\"noopener\" target=\"_blank\">Raspberry Pi 2\/3 official case Black\/Grey<\/a> or <a href=\"https:\/\/www.amazon.com\/dp\/B01CCPKCSK\/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=clivsperswebs-20&linkId=1e69ae5649504fb86c6597e0774eb3d8\" rel=\"noopener\" target=\"_blank\">Raspberry Pi 2\/3 official case Red\/White<\/a><\/li>\n<li><a href=\"https:\/\/www.amazon.com\/Sandisk-Ultra-Micro-UHS-I-Adapter\/dp\/B073JYVKNX\/ref=as_li_ss_tl?s=electronics&ie=UTF8&qid=1519546458&sr=1-1-fkmr0&keywords=Sandisk+Ultra+64GB+Micro+SDHC+UHS-I+Card+with+Adapter+-+98MB\/s+U1+A1&linkCode=ll1&tag=clivsperswebs-20&linkId=63030733e82634a740772cf7f154c197\" rel=\"noopener\" target=\"_blank\">Sandisk Ultra 64GB Micro SDXC UHS-I Card with Adapter - 100MB\/s U1 A1<\/a><\/li>\n<li><a href=\"https:\/\/www.amazon.com\/gp\/product\/B00N2VISLW\/ref=as_li_tl?ie=UTF8&tag=clivsperswebs-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=B00N2VISLW&linkId=132403a064ff21634835c1deee4bc983\" target=\"_blank\">AmazonBasics RJ45 Cat-6 Ethernet Patch Cable - 3 Feet (0.9 Meters)<\/a><\/li>\n<\/ul>\n<h2>Setting up Raspbian Stretch Lite with SSH server enabled on your microSD card<\/h2>\n<p>After you had gathered all the necessary hardware, proceed to <a href=\"https:\/\/www.techcoil.com\/blog\/how-to-setup-raspbian-stretch-lite-with-ssh-server-enabled-on-your-microsd-card\/\" rel=\"noopener\" target=\"_blank\">setup Raspbian Stretch Lite with SSH server enabled on your microSD card<\/a>. Once you had done so, you will be able to SSH into your Raspbian Stretch Lite to perform further configurations.<\/p>\n<h2>Assembling the hardware for the Raspberry Pi 3<\/h2>\n<p>After you had prepared the microSD card with Raspbian Stretch Lite as the operating system, remove the microSD card from your SD card reader and insert it to the microSD card slot on the Raspberry Pi 3 board. After that, proceed to <a href=\"https:\/\/www.techcoil.com\/blog\/how-to-assemble-the-raspberry-pi-3-board-with-the-raspberry-pi-official-case\/\" rel=\"noopener\" target=\"_blank\">assemble the Raspberry Pi 3 board to the Official Raspberry Pi case<\/a>.<\/p>\n<h2>Starting the Raspbian Stretch Lite operating system<\/h2>\n<p>When you had assembled the Raspberry Pi 3 board with the Official Raspberry Pi case, you are ready to start the Raspbian Stretch Lite operating system. In order to do so, first connect one end of the RJ45 cable to the RJ45 port on the Raspberry Pi 3 board and the other end of the cable to one of the switch port of your <a href=\"https:\/\/www.amazon.com\/s\/ref=as_li_ss_tl?url=search-alias=aps&field-keywords=home+router&linkCode=ll2&tag=clivsperswebs-20&linkId=be772faf0f97c209171c09a726221920\" rel=\"noopener\" target=\"_blank\">home router<\/a>. After that, connect the micro USB power supply to the Raspberry Pi 3 board and a wall socket. Lastly, turn on the power socket to supply power to the Raspberry Pi 3 board.<\/p>\n<h2>Changing default password, Locale and Timezone of your Raspbian Stretch Lite<\/h2>\n<p>There are a few configurations that you should perform on the first run of your Raspbian Stretch Lite. With this in mind, <a href=\"https:\/\/www.techcoil.com\/blog\/set-of-configurations-to-perform-on-the-first-run-of-your-raspbian-stretch-lite\/\" rel=\"noopener\" target=\"_blank\">proceed to change the default password, Locale and Timezone of your Raspbian Stretch Lite<\/a>.<\/p>\n<h2>Installing Git on Raspbian Stretch Lite<\/h2>\n<p>Once you had completed the configurations on the first run of your Raspbian Stretch Lite, proceed to install Git. In order to install Git, you have to run the following command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo apt-get update\r\nsudo apt-get install git -y\r\n<\/pre>\n<h2>Downloading a copy of Go Git Service for your Raspberry Pi 3<\/h2>\n<p>After you had installed Git, you can proceed to download a copy of Go Git Service. At this time, the latest version of Gogs is 0.11.53 and available on <a href=\"https:\/\/gogs.io\/docs\/installation\/install_from_binary\" rel=\"noopener\" target=\"_blank\">Go Git Service download page<\/a>. Given these points, run the following commands to download a copy of Go Git Service onto your Raspberry Pi 3:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncd \/opt\r\nsudo wget https:\/\/dl.gogs.io\/0.11.53\/gogs_0.11.53_raspi2_armv6.zip\r\nsudo unzip gogs_0.11.53_raspi2_armv6.zip\r\nsudo rm gogs_0.11.53_raspi2_armv6.zip\r\n<\/pre>\n<p>After the commands complete, you will find the artefacts for running Go Git Service in the <code>\/opt\/gogs<\/code> directory. <\/p>\n<h2>Creating the system user account that will run Go Git Service<\/h2>\n<p>Once you had downloaded Go Git Service, the next step is to create a system user account that will run Go Git Service.<\/p>\n<p>In order to do so, run the following command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo adduser --disabled-login --gecos 'Go Git Service' git\r\n<\/pre>\n<p>After the command completes, you will have a system user account that:<\/p>\n<ul>\n<li>is named as <code>git<\/code>.<\/li>\n<li>cannot be used for logging into Raspbian Stretch Lite.<\/li>\n<li>has a home directory at <code>\/home\/git<\/code>.<\/li>\n<\/ul>\n<h2>Making git the owner of \/opt\/gogs<\/h2>\n<p>In order to enable <code>git<\/code> user account to run Go Git Service, you will need to make it the owner of the <code>\/opt\/gogs<\/code> directory. With this in mind, run the following command to make <code>git<\/code> user account the owner of the <code>\/opt\/gogs<\/code> directory:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo chown -R git:git \/opt\/gogs\r\n<\/pre>\n<h2>Using systemctl to run Go Git Service<\/h2>\n<p>Once you had made the <code>git<\/code> user owner of the <code>\/opt\/gogs<\/code> directory, proceed to configure <code>systemctl<\/code> for running Go Git Service. Firstly, use a text editor to open up <code>\/opt\/gogs\/scripts\/systemd\/gogs.service<\/code>:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo nano \/opt\/gogs\/scripts\/systemd\/gogs.service\r\n<\/pre>\n<p>Once the editor loads the file, change the contents of <code>\/opt\/gogs\/scripts\/systemd\/gogs.service<\/code> to look like the following:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&#x5B;Unit]\r\nDescription=Gogs\r\nAfter=syslog.target\r\nAfter=network.target\r\n#After=mariadb.service mysqld.service postgresql.service memcached.service redis.service\r\n\r\n&#x5B;Service]\r\n# Modify these two values and uncomment them if you have\r\n# repos with lots of files and get an HTTP error 500 because\r\n# of that\r\n###\r\n#LimitMEMLOCK=infinity\r\n#LimitNOFILE=65535\r\nType=simple\r\nUser=git\r\nGroup=git\r\nWorkingDirectory=\/home\/git\/gogs\r\nExecStart=\/opt\/gogs\/gogs web\r\nRestart=always\r\nEnvironment=USER=git HOME=\/home\/git\r\n\r\n&#x5B;Install]\r\nWantedBy=multi-user.target\r\n<\/pre>\n<p>After making changes to <code>\/opt\/gogs\/scripts\/systemd\/gogs.service<\/code>, type 'Ctrl-X' followed by 'Y' to save your changes.<\/p>\n<p>Following that, create the <code>\/home\/git\/gogs<\/code> directory to serve as the working directory for Go Git Service:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo -H -u git mkdir \/home\/git\/gogs\r\n<\/pre>\n<p>After you had created the working directory, get <code>systemctl<\/code> to run Go Git Service by running the following command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo systemctl enable \/opt\/gogs\/scripts\/systemd\/gogs.service\r\n<\/pre>\n<p>As a result of that, symbolic links are created in the <code>\/etc\/systemd\/system\/multi-user.target.wants<\/code> and <code>\/etc\/systemd\/system<\/code> directories. These new symbolic links will link to <code>\/opt\/gogs\/scripts\/systemd\/gogs.service<\/code>.<\/p>\n<p>When <code>systemctl<\/code> is ready to run your Go Git Service, run the following command to start Go Git Service:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo systemctl start gogs.service\r\n<\/pre>\n<p>After the command complete, verify whether Go Git Service had started successfully by running the following command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo systemctl status gogs.service\r\n<\/pre>\n<p>At this point, you should see output similar to the following if Go Git Service was started successfully:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\u25cf gogs.service - Gogs\r\n   Loaded: loaded (\/opt\/gogs\/scripts\/systemd\/gogs.service; enabled; vendor preset: enabled)\r\n   Active: active (running) since Wed 2018-06-06 00:12:45 +08; 2s ago\r\n Main PID: 15658 (gogs)\r\n   CGroup: \/system.slice\/gogs.service\r\n           \u2514\u250015658 \/opt\/gogs\/gogs web\r\n\r\nJun 06 00:12:45 raspberrypi gogs&#x5B;15658]: 2018\/06\/06 00:12:45 &#x5B;TRACE] Log path: \/opt\/gogs\/log\r\nJun 06 00:12:45 raspberrypi gogs&#x5B;15658]: 2018\/06\/06 00:12:45 &#x5B;TRACE] Build Time: 2018-05-17 02:54:34 UTC\r\nJun 06 00:12:45 raspberrypi gogs&#x5B;15658]: 2018\/06\/06 00:12:45 &#x5B;TRACE] Build Git Hash: 91441c3fb29d8ead645d8fffa4658d749d5b3fc3\r\nJun 06 00:12:45 raspberrypi gogs&#x5B;15658]: 2018\/06\/06 00:12:45 &#x5B;TRACE] Log Mode: Console (Trace)\r\nJun 06 00:12:45 raspberrypi gogs&#x5B;15658]: 2018\/06\/06 00:12:45 &#x5B; INFO] Gogs 0.11.53.0603\r\nJun 06 00:12:45 raspberrypi gogs&#x5B;15658]: 2018\/06\/06 00:12:45 &#x5B; INFO] Cache Service Enabled\r\nJun 06 00:12:45 raspberrypi gogs&#x5B;15658]: 2018\/06\/06 00:12:45 &#x5B; INFO] Session Service Enabled\r\nJun 06 00:12:45 raspberrypi gogs&#x5B;15658]: 2018\/06\/06 00:12:45 &#x5B; INFO] SQLite3 Supported\r\nJun 06 00:12:45 raspberrypi gogs&#x5B;15658]: 2018\/06\/06 00:12:45 &#x5B; INFO] Run Mode: Development\r\nJun 06 00:12:47 raspberrypi gogs&#x5B;15658]: 2018\/06\/06 00:12:47 &#x5B; INFO] Listen: http:\/\/0.0.0.0:3000\r\n<\/pre>\n<h2>Triggering the installation process for Go Git Service <\/h2>\n<p>After you are able get <code>systemctl<\/code> to run Go Git Service, the final step is to trigger the installation process of Go Git Service.<\/p>\n<p>In order to do so, you have to access your Go Git Service with your browser via port 3000 of the IP address of your Raspberry 3. As an example, if the IP address of your Raspberry 3 is <strong>192.168.1.115<\/strong>, you will access Go Git Service via <strong>http:\/\/192.168.1.115:3000<\/strong>.<\/p>\n<p>After you had done so, you will see a web page that asks for some initial software configurations. As an example, you can refer to the following screenshots to fill in the initial software configurations:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.techcoil.com\/blog\/wp-content\/uploads\/gogs-v0.11.53-install-steps-for-first-time-run-part-1.gif\" alt=\"gogs v0.11.53 install steps for first-time run part 1\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.techcoil.com\/blog\/wp-content\/uploads\/gogs-v0.11.53-install-steps-for-first-time-run-part-2.gif\" alt=\"gogs v0.11.53 install steps for first-time run part 2\"\/><\/p>\n<p>After you had filled in the software configurations for your Raspberry Pi 3 Go Git Service, click the <strong>Install Gogs<\/strong> button.<\/p>\n<p>Once Go Git Service had initialized itself, you will be able to see a screen similar to the following:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.techcoil.com\/blog\/wp-content\/uploads\/gogs-v0.11.53-dashboard-after-first-time-run-install.gif\" alt=\"gogs v0.11.53 dashboard after first-time run install\" \/><\/p>\n<p>At this point, you will be able to keep your codes with your Raspberry Pi 3 Go Git Service and be sure that your code repository stays under your control.<\/p>\n<h2>Buy the Raspberry Pi 3 hardware to build your own Go Git Service<\/h2>\n<p>If you do not have the Raspberry Pi 3 hardware mentioned in this post yet, you may want to purchase them from Amazon. Simply click on the button below to add the Raspberry Pi 3 hardware to your cart. You may remove anything that you already have or replace some of the hardware with other hardware.<\/p>\n<p><center><\/p>\n<form action=\"https:\/\/www.amazon.com\/gp\/aws\/cart\/add.html\" method=\"GET\" target=\"_blank\"><input name=\"AssociateTag\" type=\"hidden\" value=\"clivsperswebs-20\"><input name=\"SubscriptionId\" type=\"hidden\" value=\"[AKIAIMND5UBCQU2HRSUA]\"><input name=\"ASIN.1\" type=\"hidden\" value=\"B07BC6WH7V\"><input name=\"Quantity.1\" type=\"hidden\" value=\"1\"><input name=\"ASIN.2\" type=\"hidden\" value=\"B01F1PSFY6\"><input name=\"Quantity.2\" type=\"hidden\" value=\"1\"><input name=\"ASIN.3\" type=\"hidden\" value=\"B073JYVKNX\"><input name=\"Quantity.3\" type=\"hidden\" value=\"1\"><input name=\"ASIN.4\" type=\"hidden\" value=\"B00N2VISLW\"><input name=\"Quantity.4\" type=\"hidden\" value=\"1\"><br \/>\n<input alt=\"Buy from Amazon.com\" name=\"add\" type=\"image\" src=\"https:\/\/images-na.ssl-images-amazon.com\/images\/G\/01\/associates\/remote-buy-box\/buy4.gif\" value=\"Buy from Amazon.com\"><\/form>\n<p><\/center><\/p>\n\n      <ul id=\"social-sharing-buttons-list\">\n        <li class=\"facebook\">\n          <a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fwp.me%2Fp245TQ-4o\" target=\"_blank\" role=\"button\" rel=\"nofollow\">\n            <img decoding=\"async\" src=\"\/ph\/img\/3rd-party\/social-icons\/Facebook.png\" alt=\"Facebook icon\"> Share\n          <\/a>\n        <\/li>\n        <li class=\"twitter\">\n          <a href=\"https:\/\/twitter.com\/intent\/tweet?text=&url=https%3A%2F%2Fwp.me%2Fp245TQ-4o&via=Techcoil_com\" target=\"_blank\" role=\"button\" rel=\"nofollow\">\n          <img decoding=\"async\" src=\"\/ph\/img\/3rd-party\/social-icons\/Twitter.png\" alt=\"Twitter icon\"> Tweet\n          <\/a>\n        <\/li>\n        <li class=\"linkedin\">\n          <a href=\"https:\/\/www.linkedin.com\/shareArticle?mini=1&title=&url=https%3A%2F%2Fwp.me%2Fp245TQ-4o&source=https:\/\/www.techcoil.com\" target=\"_blank\" role=\"button\" rel=\"nofollow\">\n          <img decoding=\"async\" src=\"\/ph\/img\/3rd-party\/social-icons\/linkedin.png\" alt=\"Linkedin icon\"> Share\n          <\/a>\n        <\/li>\n        <li class=\"pinterest\">\n          <a href=\"https:\/\/pinterest.com\/pin\/create\/button\/?url=https%3A%2F%2Fwww.techcoil.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F272&description=\" class=\"pin-it-button\" target=\"_blank\" role=\"button\" rel=\"nofollow\" count-layout=\"horizontal\">\n          <img decoding=\"async\" src=\"\/ph\/img\/3rd-party\/social-icons\/Pinterest.png\" alt=\"Pinterest icon\"> Save\n          <\/a>\n        <\/li>\n      <\/ul>\n    ","protected":false},"excerpt":{"rendered":"<p>When <a href=\"https:\/\/gizmodo.com\/microsoft-buys-github-and-some-people-are-pissed-1826533362\" rel=\"noopener\" target=\"_blank\">Microsoft bought Github<\/a>, some developers who had trusted GitHub with their code, are considering ditching it. In case you have the same thought, you may want to consider hosting your own Git server. After all, that is the best approach to ensure that your code repository stays under your control.<\/p>\n<p>In view of hosting your own code repository, you may want to setup a Raspberry Pi 3 Git server. Together with <a href=\"https:\/\/gogs.io\/\" rel=\"noopener\" target=\"_blank\">Go Git Service<\/a> and Raspbian Stretch Lite, you can get a Git server with decent performance.<\/p>\n<p>Given these points, this post discusses how you can setup your own Git server on a Raspberry Pi 3 with Go Git Service (Gogs) and Raspbian Stretch Lite.<\/p>\n","protected":false},"author":1,"featured_media":1017,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"footnotes":""},"categories":[4],"tags":[311,240,308,412,445,312],"jetpack_featured_media_url":"https:\/\/www.techcoil.com\/blog\/wp-content\/uploads\/gogs-v0.11.53-dashboard-after-first-time-run-install.gif","jetpack_shortlink":"https:\/\/wp.me\/p245TQ-4o","jetpack-related-posts":[],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/posts\/272"}],"collection":[{"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/comments?post=272"}],"version-history":[{"count":0,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/posts\/272\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/media\/1017"}],"wp:attachment":[{"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/media?parent=272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/categories?post=272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/tags?post=272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}