12 ms·
How to Host Your Own Private Git Repositories
- falava 10y agoI've been using Gogs happily for two years: https://gogs.io/docs/installation https://gogs.io/docs/installation
- zzalpha 10y agoEh. The method described in this post (ie bare repositories on a filesystem and ssh transport) is perfectly sufficient for my personal use if I'm hosting. The minute there's a MySQL dependency I'm a hard pass... I buy the need for the gitlabs of the world when multiple users show up, if only because managing credentials is a pain. But for single user use cases I wouldn't waste my time.
- simcop2387 10y agoBoth gogs and gitea (forked from gogs) support using sqlite instead of mysql. This means there's no external database server to deal with, and since it's a small use set of private repositories it performs quite well.
- oldrny 10y agoThe instructions say that you can just use SQLite, though. "Based on your choice, install one of supported databases or skip this step"
- bachmeier 10y ago> I buy the need for the gitlabs of the world when multiple users show up, if only because managing credentials is a pain. gitolite has worked well for small multiuser teams for me. No difficulty with managing credentials and no need for a heavy solution.
- rcarmo 10y agoI moved to https://gitea.io/ https://gitea.io/ myself, largely because it seems to be more frequently updated these days.
- ausjke 10y agodefinitely the best git repo for small teams! better than gitolite and manual hosting, lighter than gitlab, the best for me.
- midnitewarrior 10y agoWhy do this when http://bitbucket.com http://bitbucket.com will host private git repos for free? They also have have Large File Storage implemented as well. I use GitHib client using BitBucket for repo hosting with LFS and it works great, no need to host anything.
- 2bluesc 10y agoOr gitlab.com which offers private repos and also allows you to self host your own gitlab instance if you need to.
- newsat13 10y agoMany people (including me) like the idea of self-hosting because we feel more in control.
- RandomOpinion 10y ago> Why do this when http://bitbucket.com http://bitbucket.com will host private git repos for free? Because you never know when one of these online services will suffer an outage, suffer a security breach that leasks your private repos or email & credentials, or even lose your data entirely. The fact that the service is free doesn't mean that it doesn't come without potential issues.
- dbg31415 10y agoBut... you are using another online service to host the service yourself, no? And presumably they are also throwing in backups and redundancy of some sort... certainly it would take you a minute to set those things up, test them, monitor they are working... And isn't GitHub basically like everyone's resume these days? I don't know... at some point you sort of just have to trust someone... be it the hosting provider, or the service provider. And I'm old... but I've had to untangle issues with CVS / VSS / SVN / etc... over the years I don't want anything to do with that crap -- if I can punt it to someone else to manage I'm OK paying some tiny subscription fee. I think there's been one day in the last ~10 years when I couldn't use GitHub. To me that seems worth the $20 a month, or whatever they charge now.
- uiri 10y agoThis is a good setup if you are the only one accessing the repo. If you need something a little bit more complex, I would highly recommend gitolite for managing repositories & users. Configuration is done via some INI/TOML-like files in a git repo. User public keys are stored in the same repo.
- fanf2 10y agogitolite has amazingly powerful access control, not just per-repo but per-branch or per-directory within a repo. It has very flexible self-service features, if you are OK with remote commands over ssh. Lots of nice scripting hooks. Gitolite home page: http://gitolite.com/gitolite/ http://gitolite.com/gitolite/ I run a multi-tenant gitolite setup for the University of Cambridge: https://git.csx.cam.ac.uk/ https://git.csx.cam.ac.uk/
- mnutt 10y agoI've run a ~30-user, ~1000-repo gitolite instance for a few years and while it has done its job admirably, there are a couple of things to know about: It has a pretty clever config management system where the configuration is actually committed to a git repo. It's great if you're managing configuration by hand, but was difficult to automate via chef. In order to let users create their own repos, we enabled "wild repos". It's as simple as a `git clone` with the desired repo name, which is great except that users often make typos and end up accidentally creating typo'd repos. The only person who can delete repos is the user who created them or the server admin deleting directories. Perhaps there are better features I should have used?
- fanf2 10y agoWild repos are the self-service thing I referred to. You can turn off auto-create, so users have to explicitly run the `create` command - I did this, and typos have not been a problem for my users. The other niggle is the `perms` command is not as easy to use as I would like. But on the whole gitolite with wild repos has been really low-maintenance.
- 10y ago
- exceptione 10y agoWhy self-host your repo but store backups without encryption at google or amazon? If you want it to be private, just make it so. edit: thanks anyway for your version!
- Filligree 10y agoPrivacy isn't binary, and there's a large difference between "Amazon could potentially read this, but they'd be breaking their own ToS and some laws to do so" and "Public on the internet".
- exceptione 10y agoBut what is the difference with BitBucket then? Besides, if you worry that state actors are interested in your source code, I do not see how Amazon being law-abiding would be of any help here..
- milesrout 10y agoAmazon breaks dozens of laws all over the world every day just by existing (illegal anti-competitive activities, probable tax evasion, definite illegal tax avoidance, etc.). So I don't think that breaking a few more laws bothers them.
- reza_n 10y agoI do this often. One thing, if you want to have multiple users all working on the same repo, which I believe is a common use case, you have to take group permissions and umask into account. Works really nice.
- agateau 10y agoI do self-host a few repositories as well, but I do not set up a separate user: I just create a git/ dir in the home dir of the account I want to host the repositories on and put the repositories there. To simplify the initial setup, I created a handy shell script, reposetup [1]. It makes to create repositories, push to them and remind me their urls. [1]: https://github.com/agateau/reposetup https://github.com/agateau/reposetup
- RangerScience 10y agoDoes anyone know of a good AMI or Docker container that's got all this already set up, as far as it's possible? (I know it doesn't look complicated, but if there's a decent "standard" already out there...)
- Karunamon 10y agoGitlab has their own docker images, and it includes pretty much anything you could ever want out of a git service. https://hub.docker.com/r/gitlab/gitlab-ce/ https://hub.docker.com/r/gitlab/gitlab-ce/
- simplehuman 10y agoCloudron.io is easily the best for docker deployments.
- microtherion 10y agoI've been quite happy with gitea/gitea.
- arunc 10y agoKallithea is good enough for this use case. We are using it in a 15 member team, without any issue.
- znpy 10y agoQuick note: what this article doesn't explicitly says is that as long as you have a shell account somewhere with a decent amount of disk space, you can host or mirror all the repository you want. If I may make a suggestion, I'd recommend the Super Dimensional Fortress Public Access UNIX System (https://sdf.org/ https://sdf.org/). They're NetBSD-based if I remember correctly, and for a low fee (36$/lifetime ARPA membership + 9$/quarter) you can host most of the things you would like to host. And you don't have to do system maintenance.
- voltagex_ 10y agoI thought the ARPA membership was yearly?
- marcinkuzminski 10y agoRhodeCode is a good option for hosting, it has an advanced permission system, streaming push support and it scales well.
- hathawsh 10y agoThanks for the pointer. Your service looks interesting! A little advice: it's probably best to post a disclaimer that you are the founder of RhodeCode whenever you post about it on HN. OTOH, you get credit for including that info in your HN profile.
- spapas82 10y agoGitlab also can be run in your own server. It actually has an enterprise and an open source version. We use the open source one for a couple of years and it is really great - I recommend it with all my heart. It has great instructions for installing directly from source and you don't really need to be familiar with ruby to install it. It requires some standard components (web server, database) which should exist on all servers and then you follow the instructions and presto! You have your own gitlab!! It also has great upgrade instructions so you can always be up-to-date. I know gitlab can also be used through the cloud version (and it even has free private repos) however some organizations feel better if the source code of their projects stay inside the organization.
- treve 10y agoGitlab is massive though. I think it's a great solution for teams on dedicated hardware, but if you need something quick, low-maintenance and lightweight Gitlab might be a bit overkill.
- kewleus 10y agoYou can't get much quicker or low maintenance than gitlab, though it is definitely not lightweight.
- Mo3 10y agoGogs? Gitolite?
- matt_kantor 10y agoOr just plain git, as in TFA.
- gedrap 10y agoDigital Ocean has so called one click apps, that they can deploy and setup at any droplet and gitlab is one of them: https://www.digitalocean.com/products/one-click-apps/gitlab/ https://www.digitalocean.com/products/one-click-apps/gitlab/ I have tried it before and it just works, took my less than 5 minutes to have a fully working gitlab instance on a $10/month droplet. It's not the cheapest option probably, but very low effort so it's quite worth it.
- sigil 10y agoSecurity question. Can `git-shell` restrict users to their remote home directory? Or if you give me a git shell, can I still do things like `git clone me@example.com:/home/you/secret-sauce` ? This is only an issue if you're sharing the box and/or remote repositories with other people. For shared remote repositories I've been using the following setup: 1. Create a bare, shared repository at `/var/git/foo`. Configure unix group permissions and the directory setuid bit on it. 2. Give alice access via a `/home/alice/foo -> /var/git/foo` symlink. 3. Set alice's shell to a patched version of the git shell I call `git-home-shell` that sanitizes the repository path argument and makes it relative to her home dir. Is there a better way these days?
- Symbiote 10y agoWhy not just set standard file permissions (owner and group)? You could create a group for each repository, and add and remove members as necessary.
- sigil 10y agoThis is precisely what I do. But, I'd prefer it if git-shell didn't let users probe and read git repositories at any absolute path on the remote end. That's not great behavior for a restricted shell.
- tlarkworthy 10y agoJust do it in google drive or dropbox, get backups for free. https://stackoverflow.com/questions/1960799/using-git-and-dropbox-together-effectively/1961515#1961515 https://stackoverflow.com/questions/1960799/using-git-and-dr...
- jis 10y agohttp://gitblit.com/ http://gitblit.com/ is also worth looking into. It is more sophisticated then gitolite (which I also use) and less hairy then gitlab. It is Java based, but doesn't require a database. Also, for backup, rather then tar up the ".git" directory, I use "git bundle <backupfilename> --all" which creates a flat file with all branches included. This file can then be uploaded to GCS or S3.
- Symbiote 10y agoAssuming you already have files in your home directory on the server backed up, and SSH access, then a repository for a single user is as simple as mkdir project.git; cd project.git git init --bare And to clone git clone user@example.com:project.git
- deleted 10y ago[deleted]
- mwfogleman 10y agoI use Gogs and a self-hosted sandstorm.io.
- educar 10y agoThe gogs package is ancient. I woukd be very careful of running outdated stuff much less recommending it to others
- gravypod 10y agoIf you want something light weight and "run and done" then check out GitBucket [0]. You only need the JVM & git installed. When you run the program it sets everything up. Very easy, clean interface, and simple to back up (I just snapshot the entier folder). [0] - https://github.com/gitbucket/gitbucket https://github.com/gitbucket/gitbucket
- _cbdev 10y agoAs others have already stated, this article is a great introduction for when you'll be the only one to access the repositories, as anyone able to authenticate for that account will have access to all repos. There are some tools that restrict access with varying levels of granularity, but if you just want to restrict access on a per-repo-per-sshkey basis, one of my projects is a simple shell script that does just that: https://github.com/cbdevnet/fugit https://github.com/cbdevnet/fugit It originally came to be because I've found gitolite too big to maintain for simply sharing some repositories with a few other people. It has since served me well and is used in some business applications, too.
- alpb 10y agoIf you’re using Google Cloud, you can already use Google Cloud Source Repositories. https://cloud.google.com/source-repositories/ https://cloud.google.com/source-repositories/ It supports git and the Beta release of Cloud Source Repositories provides free hosting of up to 1GB of storage.
- amalag 10y agoYup and it can mirror Bitbucket which is also free. So you can just create it in Bitbucket and get free backups via Google.
- yeukhon 10y agoAnyone use AWS's CodeCommit as a mirror for your GitHub repository?
- peterkelly 10y agoFor those who aren't aware, Git is actually a fully decentralised system. It doesn't require a central server as such - though most teams use one, as it's a convenient setup for most projects. Even if you are hosting on github/bitbucket/et. al. though, that repository is just one of many equals. You can push and pull from multiple peers as long as you have access set up appropriately. I recommend the chapter on distributed workflows in Pro Git: https://git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows https://git-scm.com/book/en/v2/Distributed-Git-Distributed-W... There's also an explanation of the different supported protocols here: https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protoco...
- maccard 10y ago> Even if you are hosting on github/bitbucket/et. al. Normally if you're hosting on one of those sites, you're using other features (wiki/issues), which may _not_ be decentralised
- Chattered 10y agoI kept my office machine as an additional remote for when I was working at home, pushing over ssh to save an extra pull when I got in.
- sandGorgon 10y agoVery interesting benchmark of gitbucket vs gitea vs gitlab on a raspberry pi ;) https://gitbucket.github.io/gitbucket-news/gitbucket/2017/03/29/benchmark-of-gitbucket.html https://gitbucket.github.io/gitbucket-news/gitbucket/2017/03...
- lighttower 10y agopip install git-remote-dropbox Is a git extension to allow a Dropbox to be used as your remote. Works from the CLI. Been using it for two years.
- philsnow 10y agoIf you don't need code review and don't mind a hosted solution, you can get by with the AWS free tier and use IAM for all your access control. AWS CodeCommit: 5 active users per month 50 GB-month of storage per month 10,000 Git requests per month Does not expire at the end of your 12 month AWS Free Tier term. https://aws.amazon.com/s/dm/optimization/server-side-test/free-tier/free_np/ https://aws.amazon.com/s/dm/optimization/server-side-test/fr...
- dreamcompiler 10y agoWhat this article doesn't cover are how to set up the things that make Github so useful like issue tracking and pull requests. Github (and similar services like bitbucket) are more than just Git.
- unlmtd 10y agoThat's not private. If you cant see the silicone, consider it compromised.
- md_ 10y ago"Doing this is cheaper than paying GitHub, and it will give you the satisfaction of being a True Hacker." Or I could work on problems that really matter and leave the sysadmin job to someone who gets paid to do it. ;) More seriously, when I was in college, I spent a lot of time doing things like running my own mailserver, selfhosting various projects, etc. I learned a lot. But in the Real World, I don't want to be responsible for more than I have to be; off the shelf products are just better for me, most of the time. The fact that Bitbucket and Github will pay a guy to run a git server for me is amazing (even if it is evidence of some sort of irrational enthusiasm on part of VC firms). Why would I not want to take advantage?
- hamburglar 10y agoExcept running a git server is little more than having a place to store a git repo and giving ssh access to it. There's really no maintenance if you already have the server. What github et al provide isn't repo hosting so much as fancy UI tools on top of that. Edit: seriously, I wonder how many people who just automatically go to github have ever bothered to try the simple act of creating a git remote on a file server on their own network, or even just to a different host. It's really easy, and it really underscores how simple it is to have your repo distributed without any 3rd party infrastructure. Once you see that, you see that putting a copy on a shell account on your hosted VM is dirt simple and requires almost no administrative burden.
- sheraz 10y agoGithub, bitbucket, gitlab, et. al are more than a git server. They are code review, community management, issue tracking, and the literally hundreds of integrations for all parts of the software development lifecycle. Anyone with more than a personal pet-project will understand the value created by these services the moment they have to stand up the supporting items that make SDLC possible.
- amorphid 10y agoI did, because I wanted to have the experience of understanding how a Git server works. But I still like using GitHub. Their web UI is useful, and I don't have to maintain a server.
- newsat13 10y agoMmm. Just use GitLab/Gogs on cloudron?
- RAWRfftfftfft 10y agoHas anyone had any experience in getting Passbolt (https://github.com/passbolt https://github.com/passbolt) working for authentication with Git?