Until recently my blog and source code were both hosted on GitHub pages. It worked well and I never ran into issues with it. I use git for version control on the vast majority of my projects and being able to push my Jekyll repository to GitHub and have my changes go live almost instantly was a big bonus.
As you may have noticed from my previous blog posts, if I can sensibly host something myself without making things less convenient for my own use, I will do. There are several reasons behind this, primarily I find that as a kinaesthetic learner I learn best by implementing things myself.
For some time I had been looking into implementing a self hosted alternative to GitHub and recent drama finally gave me the push I needed to move away.
I now had to find two replacement solutions. Firstly I needed a new solution for storing and managing my Git repositories and secondly I needed some new web hosting for this blog.
After a little searching and reading I finally settled on Gitlab to solve the first problem. While Gitlab do offer online repositories like GitHub and other alternatives, they also offer Gitlab Community Edition, exactly what I had been looking for.
The installation instructions for Gitlab are very simple and easy to follow and the system requirements also seemed very reasonable. I tend to use Archlinux on the majority of my servers, however after seeing Archlinux listed as unsupported on the requirements page and having read through the Gitlab Archwiki page, rather than give future me more problems I decided to go with a supported configuration and use Ubuntu 14.04 lts.
The installation of Ubuntu was incredibly easy and after doing the usual post install tasks such as creating a user account for myself, setting up ssh keys, importing dotfiles, setting a static IP and installing updates I was ready to install Gitlab.
As previously mentioned the Gitlab installation instructions are incredibly simple and I see little point in repeating them here.
With Gitlab installed it was a simple case of connecting to the web interface, logging in with the default credentials and setting a user account up for myself.
I found the web interface to be much nicer to use than GitHub and was able to migrate all my repositories over in under an hour.
Since installing Gitlab I have made an effort to clean up my development process somewhat. I do the majority of my development work within one of my virtual machines via ssh and tmux, either using terminal on my Macbook Pro or Putty on my Windows 10 desktop.
My usage of Git has been rather poor in the past but after reading through several Git workflows I decided I rather liked the development model of Vincent Driessen.
In addition I have found Gitlab to be very useful for planning out my projects and blog posts. I now create milestones for new posts and features and create issues for the individual components that make them up. This forces me to make a commit every time I complete an issue which both keeps my commits relatively small as well as making my commit history far more readable.
To sum up, although I have not been using Gitlab very long at all I am very pleased with it so far and would highly recommend it.
You may have noticed at this point that although Gitlab has solved the problem of my Git repository management and hosting I have not made mention of my new web hosting solution. My solution for that has been a Linode VPS and the details regarding that will certainly merit their own blog post, hopefully appearing in the not too distant future.