I’ve been using GitHub, and conversely git for years now, and its my main version control. It’s a solid platform and its just built into the coding culture, employers, and fellow coders will ask to see your repos. As time passes, and I’m more interested in DevOps, more and more I see the value in self hosting, as with all things, the more you can do yourself, the more money you save (barring electric bills). Not to mention the whole thing with “free” services, being a way to harvest data and monetize their users. No thanks, if anyone is going to make money off my data it’s going to be me (I’ll get back to you, when I actually do make money off my data, but that’s a story for another day).
So being the average GitHub user, I figure why not look for greener pastures? I don’t publish everything I do onto there. Sometimes I make stupid stuff, I don’t want everyone to see my bad code! Sure, I could make a private repo and push to that, but damn it, GitHub doesn’t have to be the end all be all of version control solutions, so to pull myself out GitHub’s many tentacled clutches, and learn something new for a change, we’re going to take a look at 5 self hosted GitHub alternatives that you can try out on your home server!
Gitea (pronounced “git-tea”) is an open source fork of Gogs (another GitHub alternative), forked in 2016, and is actively maintained at the time of this writing. When it comes to GitHub alternatives, Gitea comes up a lot, appearing in many lists, and for good reason. Built on the GO language, it strives to be the fastest, and easiest way to get a self hosted GitHub clone up and running. Which I can definitely attest to, the hardest part about installing gittea is the MySQL setup, which incase you missed it, we do have a quickstart guide available here on linuxman. It is cross platform so anywhere you can compile GO, you can run Gitea, it can also be docker-ized! Its also very lightweight, which I am always an instant fan of, you can even run Gitea off a raspberry pi!
|The UI is very clean and focused||Gitea requires a MySQL database|
|Can be installed in many ways (docker, snap, binary)|
|Lot’s of UI customization|
|Easy setup and install|
GitLab is definitely the most beefy offering in terms of GitHub alternatives, acting as a full development suite for a small team or enterprising individual. Gitlab’s system requirements are far beyond anything else on this list, requiring a 4 core CPU & 4GB of RAM minimum. What you get in return is a vast slew of features including Pull requests, repositories, Wikis, issue tracking, built-in package management, and robust branching options. Perhaps the coolest option that GitLab offers is its CI/CD (Continuous Integration/Deployment) feature that will automatically build, test, and measure your code using pipelines (think of it as a software workflow, where at various stages, the pipeline with preform assigned tasks, all the way to deploying it to a production server). Gitlab is a very full featured GitHub alternative that requires a seasoned self-hoster to take on, but the features that you do get, even on the free tier, are outstanding.
|Free Community Edition||Requires a GitLab account|
|Has many Installation options||High minimum system requirements|
|Supports major Linux distros||Requires external database (Redis Only)|
|Complete end to end DevOps platform|
|Supports up 500 users on a single instance|
|CI/CD pipelines for software development|
Gitbucket is another lightweight offering, built on top of scala, it requires only java to be installed on your system, and then one command to get it up and running. Lightweight as it may be they did not skimp out on options as all your basic GitHub features are here, issue tracking, activity timelines, public/private repos, and gitLFS (large file support). Gitbucket also offers a plugin system to add more features such as notifications, backup systems, and even a Kanban board plug in for project management. Overall a very minimalist choice when it comes to GitHub alternatives, if you are a fan of lightweight software or are raspi enthusiast I would definitely recommend checking out GitBucket, especially if you don’t want to hassle with a lot of setup and prerequisites.
|Super Lightweight||Sparse documentation|
|Only needs Java to run||Almost too minimal|
|Expandable via plugins|
|No external DB needed|
GitPrep is a straight GitHub clone, based on perl, which is all you need to have installed on your server. This one is as lightweight as they come, so this one goes out to all my other fellow lazy admins. What you see is what you get, when compared to the other alternatives on this list, GitPrep is particularly nondescript. Gitprep covers the basic GitHub functionalities (PRs, public/private repos, Issue tracker, etc), but it covers them well enough, so if you aren’t looking for all the bells and whistles but you still want to self host git, check this one out, as its still actively maintained.
|Lightweight||Feels lacking in features|
|No extra setup required|
|Has issue tracking, wiki, pull requests, public/private repos|
|SSL Support with built in Reverse proxy|
|Supports HTTPS & HTTP|
Apache Allura is a self-described ‘software forge’, which at this point, we all know means GitHub clone—that’s not to say that Allura is a complete one, nor is it trying to be. It has a very different interface, that shares almost no resemblance to GitHub (unlike everything else on this list), depending on your preference, you may or may not like this presentation style, but in my opinion it just doesn’t do it for me. Looks aside, Allura is probably 2nd in terms of features on this list, because let me tell you Allura has a lot of them! Along with the regular stuff we’ve come to expect, it has a plugin system, which allows blogs, forums, and even custom themes. It’s also offers Oauth support for the security minded! Allura definitely feels more tailored towards a community or team, like GitLab, than an individual.
|Supports Docker for an easy install!||Cluttered UI|
|Git & SVN support|
|Has Issue tracker, wiki, and plugin support|
There you have it, 5 GitHub alternatives to checkout over a weekend. You gotta love having options especially when you can self host them. A lot of other GitHub alternatives you find out their are cloud based which is just really switching out GitHub with some other corporation that has the reigns over your data. Hopefully after checking some of these alternatives out, the next time you reach for GitHub, you can instead, spend some quality server time and host your code the cool way instead.