+++ title = "Git in minutes" date = 2020-07-02 authors = ["_N0x"] draft = false +++ # A Git-Server Setup In Minutes Sometimes I wish I had other hobbies then just trying out new stuff I discovered online. For Some strange reason I felt the need to set up my own git server - because who doesn't need an own server for the two or three projects you keep on github? I looked around and searched for some solutions that would fit my needs. My requirements were: * Easy setup * Very Low System requirements for the host * Account management * Private and Public Repos * Open Source ## The Possibilities There were multiple solutions to choose from. The first one was [GitLab Core](https://about.gitlab.com/install/). [GitLab](https://about.gitlab.com) is widely know and a nice alternative to [GitHub](https://github.com/). But GitLab core does require some more System resources then my current Server has and so I ruled it out. It is good for bigger companies but I just needed something small. [Gitea](https://gitea.io/en-us/) was the next thing I came across. It checks all the boxes: lightweight, simple install, Open Source, etc. I downloaded it but had trouble getting it to run with my current database without exposing my database port to the internet and that is a big No. I don't want to open any more ports in my firewall then I need to. Here is where [GitBucket](https://gitbucket.github.io/) (not to be confused with ATLASSIANs [Bitbucket](https://bitbucket.org/)) came into play. It has similar features as Gitea but I was able to set it up exactly how I wanted to. So now [git.n0x.io](https://git.n0x.io/) is a thing! ## Setting up GitBucket ### Prerequirements Just FYI I am running a little Debian 9 vServer so you might need to adapt the commands and changes to your system - which should be self-explanatory ;) GitBucket is mostly written in Scala so we firstly need to install openJDK on our Server to run it. sudo apt update sudo apt install openjdk-11-jre After installing the JRE I created a user account on which GitBucket should run. This way we make sure that I we do not grant to much privileges to GitBucket - it only gets the minimal things it needs to run sudo adduser --system gitbucket The `--system` parameter creates a systemuser account which mean a user that has no shell so we can't log into it the normal `su` way. To login to the new user use the following command: sudo su - gitbucket -s /bin/bash With `-s /bin/bash` we provide a shell to the user so we don't get logged out immediately. Now we download the [latest version](https://github.com/gitbucket/gitbucket/releases/) of BitBucket (in my case 4.32.0) from GitHub to our local home. cd ~ wget https://github.com/gitbucket/gitbucket/releases/download/4.32.0/gitbucket.war ### Running GitBucket That is pretty much it. Now we can run GitBucket.war for the first time. There are multiple parameters you can specify ([See the official installation guide](https://github.com/gitbucket/gitbucket#installation)) but for now we stick with just specifying the port we want GitBucket to run on initially java -jar gitbucket.war --port=8080 If you have a firewall set up like I do, you of course need to open up the port you specified. For example if you use iptables: sudo iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT