{"id":513,"date":"2016-07-24T13:46:24","date_gmt":"2016-07-24T05:46:24","guid":{"rendered":"https:\/\/www.techcoil.com\/blog\/?p=513"},"modified":"2018-09-04T23:50:11","modified_gmt":"2018-09-04T15:50:11","slug":"setting-up-go-git-service-on-a-ubuntu-server-15-10-3-image-on-my-raspberry-pi-3","status":"publish","type":"post","link":"https:\/\/www.techcoil.com\/blog\/setting-up-go-git-service-on-a-ubuntu-server-15-10-3-image-on-my-raspberry-pi-3\/","title":{"rendered":"Setting up Go Git Service on a Ubuntu Server 15.10.3 image on my Raspberry Pi 3"},"content":{"rendered":"<p>My quest in searching for a suitable self hosted Git Service didn't stop at GitBucket. While GitBucket is easy to setup, <a href=\"https:\/\/www.techcoil.com\/blog\/setting-up-gitbucket-on-raspberry-pi-3-with-an-ubuntu-server-15-10-3-image\/\" title=\"Setting up GitBucket on Raspberry Pi 3 with an Ubuntu Server 15.10.3 image\" target=\"_blank\">running it on a Raspberry Pi 3<\/a> had not been ideal for me. If I had set it up on a more powerful computer \/ VM, I would have stuck with it.<\/p>\n<p>To get a second opinion, I decided to give Go Git Service a try. This post documents my attempt in setting up <a href=\"https:\/\/gogs.io\/\" title=\"Go Git Service home page\" target=\"_blank\">Go Git Service<\/a> on a Ubuntu 15.10.3 image on my Raspberry Pi 3. To make this post complete, the first eight steps are taken from previous posts.<\/p>\n<h2>Getting the hardware<\/h2>\n<p>The hardware that I used for this setup is as follows:<\/p>\n<ol>\n<li>A <a href=\"http:\/\/www.amazon.com\/gp\/product\/B01CD5VC92?ie=UTF8&camp=1789&creativeASIN=B01CD5VC92&linkCode=xm2&tag=clivsperswebs-20\" title=\"Amazon page for Rasberry Pi 3 Model B Mother board\" target=\"_blank\">Raspberry Pi 3 motherboard<\/a><\/li>\n<li>A <a href=\"http:\/\/www.amazon.com\/gp\/product\/B0145IWUDW?ie=UTF8&camp=1789&creativeASIN=B0145IWUDW&linkCode=xm2&tag=clivsperswebs-20\" title=\"Amazon page for PiBlox LEGO\u00ae Compatible Case For Raspberry Pi B+ \/ Raspberry Pi 2 - Black\" target=\"_blank\">PiBlox LEGO\u00ae Compatible Case<\/a><\/li>\n<li>A <a href=\"http:\/\/www.amazon.com\/gp\/product\/B010Q57T02?ie=UTF8&camp=1789&creativeASIN=B010Q57T02&linkCode=xm2&tag=clivsperswebs-20\" title=\"Amazon page for SanDisk Ultra 32GB microSDHC UHS-I Card with Adapter \" target=\"_blank\">SanDisk Ultra 32GB microSDHC UHS-I Card with Adapter<\/a><\/li>\n<\/ol>\n<p>As my laptop came with a SD card reader, I did not have to get a <a href=\"http:\/\/www.amazon.com\/gp\/product\/B00NNF4I5M?ie=UTF8&camp=1789&creativeASIN=B00NNF4I5M&linkCode=xm2&tag=clivsperswebs-20\" title=\"Amazon page for Insten USB 3.0 Super Speed All-in-1 Multi Card Reader \" target=\"_blank\">SD card reader<\/a>. <\/p>\n<h2>Getting the Ubuntu Server 15.10.3 image for my Raspberry Pi 3 onto the micro SD card<\/h2>\n<p>After I got the hardware that I needed, the next step was to get the Ubuntu Server 15.10.3 image for my Raspberry Pi 3. The awesome folks at <a href=\"https:\/\/ubuntu-pi-flavour-maker.org\" title=\"Ubuntu pi flavour maker home page\" target=\"_blank\">Ubuntu Pi Flavour Maker<\/a> had made a few variations of Ubuntu images available for me to <a href=\"https:\/\/ubuntu-pi-flavour-maker.org\/download\/\" title=\"Ubuntu Pi Flavour maker download page for Raspberry Pi images \">download<\/a>. <\/p>\n<p>I downloaded a copy of the Ubuntu Server Standard 15.10.3 image onto my windows machine via torrent. <\/p>\n<p>Once I got the .xz file, I used <a href=\"http:\/\/www.7-zip.org\/download.html\" title=\"7-zip download page\" target=\"_blank\">7-zip<\/a> to extract the .img file. I then <a href=\"https:\/\/www.techcoil.com\/blog\/how-to-prepare-the-operating-system-to-run-your-raspberry-pi-with-your-windows-machine\/\" target=\"_blank\">used Win32 Disk Imager to write the .img file<\/a> into the <a href=\"http:\/\/www.amazon.com\/gp\/product\/B010Q57T02?ie=UTF8&camp=1789&creativeASIN=B010Q57T02&linkCode=xm2&tag=clivsperswebs-20\" title=\"Amazon page for SanDisk Ultra 32GB microSDHC UHS-I Card with Adapter \" target=\"_blank\">SanDisk microSD card<\/a> via the SD card drive on my laptop.<\/p>\n<h2>Booting into Ubuntu Server 15.10.3 on my Raspberry Pi 3<\/h2>\n<p>Once Win32 Disk Imager completed writing the Ubuntu Server 15.10.3 image onto my <a href=\"http:\/\/www.amazon.com\/gp\/product\/B010Q57T02?ie=UTF8&camp=1789&creativeASIN=B010Q57T02&linkCode=xm2&tag=clivsperswebs-20\" title=\"Amazon page for SanDisk Ultra 32GB microSDHC UHS-I Card with Adapter \" target=\"_blank\">SanDisk microSD card<\/a>, I removed it from my SD card reader and inserted it to the SD card slot on the Raspberry Pi 3 motherboard. <strong>Note that unlike the Raspberry Pi 2, the microSD slot of the Raspberry Pi 3 motherboard is not a spring loaded one.<\/strong> This means that you just push to insert your microSD card and pull to remove your microSD card.<\/p>\n<p>I then attached my trusty <a href=\"http:\/\/www.amazon.com\/gp\/product\/B003B4BBFK?ie=UTF8&camp=1789&creativeASIN=B003B4BBFK&linkCode=xm2&tag=clivsperswebs-20\" title=\"Amazon page for Logitech M100 USB Optical Wired Mouse\" target=\"_blank\">mouse<\/a>, <a href=\"http:\/\/www.amazon.com\/gp\/product\/B004VVLZN0?ie=UTF8&camp=1789&creativeASIN=B004VVLZN0&linkCode=xm2&tag=clivsperswebs-20\" title=\"Amazon page for Logitech Classic Keyboard K100\" target=\"_blank\">keyboard<\/a>, <a href=\"http:\/\/www.amazon.com\/gp\/product\/B00M2UIWKQ?ie=UTF8&camp=1789&creativeASIN=B00M2UIWKQ&linkCode=xm2&tag=clivsperswebs-20\" title=\"Amazon page for Samsung Simple LED 24\" Monitor S24D300H with High Glossy Finish\" target=\"_blank\">monitor<\/a>, a RJ45 network cable from my DLink router and my old samsung charger to my Raspberry Pi 3 motherboard. After turning on the power, the login screen appears. The default username is 'ubuntu' and the password is 'ubuntu'.<\/p>\n<h2>Adding a new user to access the server<\/h2>\n<p>I do not like a default username for my web server, even though it is not going to be used as the production server. Hence, I first added a new user via the command as follows:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo adduser techcoil\r\n<\/pre>\n<p>I then went through the following Q and As:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nAdding user `techcoil' ...\r\nAdding new group `techcoil' (1000) ...\r\nAdding new user `techcoil' (1000) with group `techcoil' ...\r\nCreating home directory `\/home\/techcoil' ...\r\nCopying files from `\/etc\/skel' ...\r\nEnter new UNIX password: \r\nRetype new UNIX password: \r\npasswd: password updated successfully\r\nChanging the user information for techcoil\r\nEnter the new value, or press ENTER for the default\r\n\tFull Name &#x5B;]: Techcoil\r\n\tRoom Number &#x5B;]: #1234\r\n\tWork Phone &#x5B;]: 12345678\r\n\tHome Phone &#x5B;]: 12345678\r\n\tOther &#x5B;]: 12345678\r\n<\/pre>\n<p>After I had created my new user account, I proceeded to add it to the sudo group so that I was able to continue with installing the necessary software:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo adduser techcoil sudo\r\n<\/pre>\n<h2>Deleting the default user<\/h2>\n<p>Once I had created my user, I proceeded to delete the default user. <\/p>\n<p>I first restarted the server:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo reboot\r\n<\/pre>\n<p>After the server booted up again, I logged in with my new user.<\/p>\n<p>Once I had logged into the server, I typed the following in the terminal to delete the default user:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo deluser --remove-home ubuntu\r\n<\/pre>\n<h2>Resizing the file system of my Ubuntu Server 15.10.3 image to utilize the entire microSD card space on my Raspberry Pi 3<\/h2>\n<p>By default, the Ubuntu Server 15.10.3 image does not utilize the entire microSD card space on my Raspberry Pi 3.<\/p>\n<p>Therefore, I proceeded on to <a href=\"https:\/\/www.techcoil.com\/blog\/how-i-resized-the-file-system-of-my-ubuntu-server-15-10-3-image-to-utilize-the-entire-microsd-card-space-on-my-raspberry-pi-3\/\" title=\"How I resized the file system of my Ubuntu Server 15.10.3 image to utilize the entire microSD card space on my Raspberry Pi 3\" target=\"_blank\">resize the file system of my Ubuntu Server 15.10.3 image to utilize the entire microSD card space on my Raspberry Pi 3<\/a>.<\/p>\n<h2>Adding swap space to my Ubuntu Server 15.10.3 image<\/h2>\n<p>1 GB of ram is not going to be enough to run Go Git Service alongside the other pieces that run the WordPress instance on my Raspberry Pi 3. As such, I also went on to <a href=\"https:\/\/www.techcoil.com\/blog\/adding-swap-space-for-my-ubuntu-server-15-10-3-image-running-on-my-raspberry-pi-3\/\" title=\"Adding swap space for my Ubuntu Server 15.10.3 image running on my Raspberry Pi 3\" target=\"_blank\">add swap space to the Ubuntu Server 15.10.3 image<\/a> so as to complement the 1GB of ram on my Raspberry Pi 3.<\/p>\n<h2>Installing the MySQL database for Go Git Service<\/h2>\n<p>Upon setting up the Ubuntu 15.10.3 image running on my Raspberry Pi, I proceeded to install the MySQL database server for my Go Git Service.<\/p>\n<p>To do so, I typed the following in the terminal:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo apt-get install mysql-server mysql-client\r\n<\/pre>\n<p>This led to the screen to enter a password for the root user:<br \/>\n<img decoding=\"async\" src=\"\/ph\/img\/blog\/posts\/password-screen-for-installing-mysql-server-on-ubuntu.png\" alt=\"Password screen for MySQL database root user\"\/><\/p>\n<p>And the screen to repeat the password for the root user:<br \/>\n<img decoding=\"async\" src=\"\/ph\/img\/blog\/posts\/repeat-password-screen-for-installing-mysql-server-on-ubuntu.png\" alt=\"Password screen for MySQL database root user\"\/><\/p>\n<p>I verified my MySQL database installation by entering the command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo systemctl status mysql\r\n<\/pre>\n<p>Which produced the following output:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\u25cf mysql.service - MySQL Community Server\r\n   Loaded: loaded (\/lib\/systemd\/system\/mysql.service; enabled; vendor preset: enabled)\r\n   Active: active (running) since Wed 2016-04-06 12:10:25 UTC; 15min ago\r\n Main PID: 4534 (mysqld_safe)\r\n   CGroup: \/system.slice\/mysql.service\r\n           \u251c\u25004534 \/bin\/sh \/usr\/bin\/mysqld_safe\r\n           \u2514\u25004881 \/usr\/sbin\/mysqld --basedir=\/usr --datadir=\/var\/lib\/mysql --...\r\n\r\nApr 06 12:10:23 ubuntu-standard systemd&#x5B;1]: Starting MySQL Community Server...\r\nApr 06 12:10:24 ubuntu-standard mysqld_safe&#x5B;4534]: 160406 12:10:24 mysqld_saf...\r\nApr 06 12:10:24 ubuntu-standard mysqld_safe&#x5B;4534]: 160406 12:10:24 mysqld_saf...\r\nApr 06 12:10:24 ubuntu-standard mysqld_safe&#x5B;4534]: 160406 12:10:24 mysqld_saf...\r\nApr 06 12:10:25 ubuntu-standard systemd&#x5B;1]: Started MySQL Community Server.\r\nHint: Some lines were ellipsized, use -l to show in full.\r\n<\/pre>\n<p>With that, I got myself a MySQL database server and a root account for the database related tasks later on. <\/p>\n<h2>Installing Git<\/h2>\n<p>With the MySQL server running, the next item that I installed was <a href=\"https:\/\/git-scm.com\/\" title=\"Git homepage\" target=\"_blank\">Git<\/a>. To do so, I ran the following command in terminal:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo apt-get install git\r\n<\/pre>\n<h2>Downloading a copy of Go Git Service for Raspberry Pi 3<\/h2>\n<p>After I had installed Git, I proceeded to download a copy of Go Git Service onto my Raspberry Pi 3: <\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncd \/opt\r\nsudo wget https:\/\/dl.gogs.io\/gogs_v0.9.141_raspi2.zip\r\nsudo unzip gogs_v0.9.141_raspi2.zip\r\nsudo rm gogs_v0.9.141_raspi2.zip\r\n<\/pre>\n<p>This would result in the binary source of Go Git Service 0.9.141 to be available in <code>\/opt\/gogs<\/code>.<\/p>\n<h2>Creating a database instance and a new MySQL user for Go Git Service<\/h2>\n<p>Inside <code>\/opt\/gogs\/scripts<\/code>, there is a helper script to aid in the creation of the MySQL database instance for Go Git Service. Hence, I used that script to create the database instance for my Go Git Service:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nmysql -u root -p &lt; \/opt\/gogs\/scripts\/mysql.sql\r\n<\/pre>\n<p>This created an empty database instance named as <code>gogs<\/code> in my MySQL server.<\/p>\n<p>With the database instance created, I then proceeded to create a new MySQL user with privileges to interact with the gogs database instance.<\/p>\n<p>I first got into the mysql shell:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nmysql -u root -p\r\n<\/pre>\n<p>Once inside the mysql shell, I ran the following commands:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nmysql&gt; CREATE USER 'gogsuser'@'localhost' IDENTIFIED BY 'password';\r\nmysql&gt; GRANT ALL ON gogs.* TO 'gogsuser'@'localhost';\r\n<\/pre>\n<p>These commands created a MySQL user with <code>gogsuser<\/code> as the username and <code>password<\/code> as the password. In addition, <code>gogsuser<\/code> has the rights to act on the <code>gogs<\/code> database instance.<\/p>\n<h2>Creating the system user that will run Go Git Service<\/h2>\n<p>Once the database related configurations had been completed, I went on to create a system user that will run Go Git Service:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo adduser --disabled-login --gecos 'Go Git Service' gogs\r\n<\/pre>\n<p>This would create a system user with username <code>gogs<\/code> and Go Git Service as its descriptive name. In addition, this user cannot be used to login to Ubuntu Server<\/p>\n<h2>Making gogs the owner of \/opt\/gogs<\/h2>\n<p>I then changed the owner of <code>\/opt\/gogs<\/code> and its contents to <code>gogs<\/code>:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo chown -R gogs:gogs gogs\r\n<\/pre>\n<p>This would ensure that <code>gogs<\/code> had the appropriate privileges to act on the items inside the <code>\/opt\/gogs<\/code> folder.<\/p>\n<h2>Configuring Go Git Service to be run by systemctl<\/h2>\n<p>To ensure that my Go Git Service is constantly up and running, I also configured my Go Git Service to run as a <code>systemctl<\/code> service.<\/p>\n<p>To do so, I first got into the <code>\/opt\/gogs\/scripts\/systemd<\/code> folder:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncd \/opt\/gogs\/scripts\/systemd\r\n<\/pre>\n<p>Inside this folder, there is a <code>systemd<\/code> unit file, <code>gogs.service<\/code>.<\/p>\n<p>I first made a backup of this file:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo cp gogs.service gogs.service.bak\r\n<\/pre>\n<p>I then opened up <code>gogs.service<\/code> with <code>nano<\/code>:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo nano gogs.service\r\n<\/pre>\n<p>And changed the contents to resemble the following:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&#x5B;Unit]\r\nDescription=Gogs (Go Git Service)\r\nAfter=syslog.target\r\nAfter=network.target\r\nAfter=mysql.service\r\n#After=postgresql.service\r\n#After=memcached.service\r\n#After=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=gogs\r\nGroup=gogs\r\nWorkingDirectory=\/home\/gogs\/systemdwd\r\nExecStart=\/opt\/gogs\/gogs web\r\nRestart=always\r\nEnvironment=USER=gogs HOME=\/home\/gogs\r\n\r\n&#x5B;Install]\r\nWantedBy=multi-user.target\r\n<\/pre>\n<p>After saving changes made to gogs.service, I created the <code>\/home\/gogs\/systemdwd<\/code> folder to serve as the working directory for Go Git Service:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo -H -u gogs mkdir \/home\/gogs\/systemdwd\r\n<\/pre>\n<p>After that, I enabled my Go Git Service so that it can be controlled by <code>systemctl<\/code>:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo systemctl enable \/opt\/gogs\/scripts\/systemd\/gogs.service\r\n<\/pre>\n<p>This would cause symbolic links to be created in the <code>\/etc\/systemd\/system\/multi-user.target.wants<\/code> and <code>\/etc\/systemd\/system<\/code> folders. These new symbolic links will link to \/opt\/gogs\/scripts\/systemd\/gogs.service.<\/p>\n<p>I then started my Go Git Service with the following command:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo systemctl start gogs.service\r\n<\/pre>\n<p>I then verified that Go Git Service runs successfully: <\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo systemctl status gogs.service\r\n<\/pre>\n<p>which the following output:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\u25cf gogs.service - Gogs (Go Git Service)\r\n   Loaded: loaded (\/opt\/gogs\/scripts\/systemd\/gogs.service; enabled; vendor preset: enabled)\r\n   Active: active (running) since Sun 2016-07-24 13:39:59 SGT; 1s ago\r\n Main PID: 3930 (gogs)\r\n   CGroup: \/system.slice\/gogs.service\r\n           \u2514\u25003930 \/opt\/gogs\/gogs web\r\n\r\nJul 24 13:39:59 ubuntu-standard gogs&#x5B;3930]: 2016\/07\/24 13:39:59 &#x5B;I] Gogs: Go...8\r\nJul 24 13:39:59 ubuntu-standard gogs&#x5B;3930]: 2016\/07\/24 13:39:59 &#x5B;I] Log Mode...)\r\nJul 24 13:39:59 ubuntu-standard gogs&#x5B;3930]: 2016\/07\/24 13:39:59 &#x5B;I] Cache Se...d\r\nJul 24 13:39:59 ubuntu-standard gogs&#x5B;3930]: 2016\/07\/24 13:39:59 &#x5B;I] Session ...d\r\nJul 24 13:39:59 ubuntu-standard gogs&#x5B;3930]: 2016\/07\/24 13:39:59 &#x5B;I] Git Vers...0\r\nJul 24 13:39:59 ubuntu-standard gogs&#x5B;3930]: 2016\/07\/24 13:39:59 &#x5B;T] Doing: C...s\r\nJul 24 13:39:59 ubuntu-standard gogs&#x5B;3930]: 2016\/07\/24 13:39:59 &#x5B;I] SQLite3 ...d\r\nJul 24 13:39:59 ubuntu-standard gogs&#x5B;3930]: 2016\/07\/24 13:39:59 &#x5B;I] Run Mode...n\r\nJul 24 13:39:59 ubuntu-standard gogs&#x5B;3930]: &#x5B;mysql] 2016\/07\/24 13:39:59 stat...n\r\nJul 24 13:40:00 ubuntu-standard gogs&#x5B;3930]: 2016\/07\/24 13:40:00 &#x5B;I] Listen: ...0\r\nHint: Some lines were ellipsized, use -l to show in full.\r\n<\/pre>\n<h2>Starting the installation process<\/h2>\n<p>Once the system related configurations are done, it was time to proceed on with the installation process.<\/p>\n<p>To do so, I accessed my Go Git Service with my browser via <code>http:\/\/192.168.0.200:3000<\/code>, where 192.168.0.200 is the ip address of my Raspberry Pi 3. This resulted in a web page that prompted for initial configurations.<\/p>\n<p>I supplied the following values as my initial configurations:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n======== Database Settings ========\r\nDatabase Type: MySQL\r\nHost: 127.0.0.1:3306\r\nUser: gogsuser\r\nPassword: password\r\nDatabase Name: gogs\r\n\r\n======== Application General Settings ========\r\nApplication Name: Gogs: Go Git Service\r\nRepository Root Path: \/home\/gogs\/gogs-repositories\r\nRun User: gogs\r\nDomain: 192.168.0.200\r\nSSH Port: 22\r\nHTTP Port: 3000\r\nApplication URL: http:\/\/192.168.0.200:3000\/\r\nLog Path: \/opt\/gogs\/log\r\n\r\n========  Admin Account Settings ======== \r\nUsername: admin\r\nPassword: password\r\nConfirm password: password\r\nAdmin Email: gogsAdmin@techcoil.com\r\n<\/pre>\n<p>and clicked the <code>Install Gogs<\/code> button. <\/p>\n<p>Once the installation steps were completed, I was shown the following screen in my browser:<\/p>\n<p><img decoding=\"async\" src=\"\/ph\/img\/blog\/posts\/go-git-service-screenshot-after-install-with-user-logged-in.jpg\" alt=\"Go Git Service screenshot after installation steps were completed with user being logged in\" \/><\/p>\n<p>With that, I got a relatively responsive self hosted Git Service running on my Raspberry Pi 3.<\/p>\n<h2>Buying the Raspberry Pi 3 hardware to host your own Go Git Service from Amazon<\/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=\"B01CD5VC92\"><input name=\"Quantity.1\" type=\"hidden\" value=\"1\"><input name=\"ASIN.2\" type=\"hidden\" value=\"B0145IWUDW\"><input name=\"Quantity.2\" type=\"hidden\" value=\"1\"><input name=\"ASIN.3\" type=\"hidden\" value=\"B010Q57T02\"><input name=\"Quantity.3\" 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-8h\" 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-8h&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-8h&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%2F513&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>My quest in searching for a suitable self hosted Git Service didn&#8217;t stop at GitBucket. While GitBucket is easy to setup, <a href=\"https:\/\/www.techcoil.com\/blog\/setting-up-gitbucket-on-raspberry-pi-3-with-an-ubuntu-server-15-10-3-image\/\" title=\"Setting up GitBucket on Raspberry Pi 3 with an Ubuntu Server 15.10.3 image\" target=\"_blank\">running it on a Raspberry Pi 3<\/a> had not been ideal for me. If I had set it up on a more powerful computer \/ VM, I would have stuck with it.<\/p>\n<p>To get a second opinion, I decided to give Go Git Service a try. This post documents my attempt in setting up <a href=\"https:\/\/gogs.io\/\" title=\"Go Git Service home page\" target=\"_blank\">Go Git Service<\/a> on a Ubuntu 15.10.3 image on my Raspberry Pi 3. To make this post complete, the first eight steps are taken from previous posts.<\/p>\n","protected":false},"author":1,"featured_media":1177,"comment_status":"closed","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":true,"_jetpack_newsletter_tier_id":0,"footnotes":""},"categories":[4],"tags":[311,240,308,312,195,190,313,241],"jetpack_featured_media_url":"https:\/\/www.techcoil.com\/blog\/wp-content\/uploads\/Raspberry-Pi-3-with-gogs-window-at-the-background.jpg","jetpack_shortlink":"https:\/\/wp.me\/p245TQ-8h","jetpack-related-posts":[],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/posts\/513"}],"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=513"}],"version-history":[{"count":0,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/posts\/513\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/media\/1177"}],"wp:attachment":[{"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/media?parent=513"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/categories?post=513"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techcoil.com\/blog\/wp-json\/wp\/v2\/tags?post=513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}