Comment by rhdunn
20 hours ago
It depends on what you are after?
1. Do you want something that works and feels like GitHub? -- Forgejo and Gitea are good for this.
2. Do you want a place to host git repositories with minimal hassle? -- GitLab, CodeBerg, and others are available.
3. Do you have your own hosting infrastructure? You could use gitolite and CGit/GitWeb on that hosting platform or local hardware.
4. Do you just want to host repositories? -- Gitolite can be used to help with SSH/auth/repository creation, and CGit or GitWeb for the frontend.
5. Do you need something like GitHub Actions? -- GitLab, Forgejo, and Gitea offer CI, or use external CI infrastructure.
6. Do you need issue tracking and management? -- GitLab, Forgejo, and Gitea provide these. There are alternatives from Jira to Kanban (including Trello) to Markdown (Obsidian and others) and more.
> 4. Do you just want to host repositories?
an ssh connection and
on your ssh accessible server works just fine
“Just” is a four letter word and a trap our industry repeatedly falls into.
https://sgringwe.com/2019/10/10/Please-just-stop-saying-just
But sometimes it's applied properly! https://github.com/casey/just
1 reply →
I hadn't read this article until now, but I started catching myself using the word at work a few years ago and I've actively been trying to avoid using it for the reasons laid out in this post.
If all you want to do is host repositories, “just” is the appropriate word here. For lone wolf work, all I care about is having a remote that mirrors all the changes and branches I create locally. It’s just redundancy. A git bare repo and SSH are all that’s needed.
I don’t do pull requests to myself, and I don’t need a bug tracker or CI.
edit: totally wrong
3 replies →
i used to feel the same way, but with coding agents, the Justers are surely having the last laugh
It can be as brief as:
ssh server git --bare init myrepo.git
git clone server:myrepo.git
You can even support Actions with this method if you're not afraid of a little scripting. https://git-scm.com/book/ms/v2/Customizing-Git-Git-Hooks
> git clone server:myrepo.git
or if your local repo existed first:
Beautiful !
That's what gitolite does with some helper scripts for creating/setting up the repositories, adding metadata to the configs, etc. That way your `git` user can be set to reject ssh login attempts. The projects are managed by pushing a config to a gitolite admin repository.
Cool thing about gitolite is that you manage it using text files and committing to the gitolite admin git repository.
We were using it until we grew tired of not having a web view to comment and review patches so we switched to gitea.
It is much more complex than this to get basic GitHub functionality anyone who has tried can tell you that. It feels like it should be a simple command but it absolutely isn’t
> 4. Do you just want to host repositories?
Quick intro for this method: https://www.youtube.com/watch?v=iuIdBfjL62s
Hopefully a good spot to plug my own project, preloop, which is a drop-in replacement of Github actions(both the runners and control plane) that runs locally or self-hosted in isoalted microvms, and supports debug-on-failure. You can also push to the server, run CI and then optionally create a draft PR. Not quite production-ready yet(for the self-hosted part), but the local part works well. We implement the official runner protocol 100% unlike act/gitea/forgejo, so your workflows are more likely to work out of the box with preloop(forgejo has the closest compatibility with Github Actions though so it's a good off-Github option) and we use microvms so no DinD issues. I'm working on getting the official runner vm image up to reduce any environment incompatibilities. Feel free to try it out: https://github.com/preloopdev/preloop
Yeah. MicroVMs make hosting runners pretty straightforward. I had codex make a forgejo runner controller which pulls forgejo actions and creates kubernetes jobs for them.
It was a bit of a pain to configure firecracker with k3s.
It really can’t be understated how much easier hosting CI is with microvms as the security boundary.
Agree. I'm always surprised Github still uses huge fat VMs. I imagine this is one of the things that make it much painful at scale. The tricky part with microvms are getting them to run cross-platform. We use an awesome project called smolvm that builds on libkrun and makes this alot easier. As an aside, how have forgejo actions worked for you in practice?
1 reply →
I'm a little disappointed, because your comment made it look great, but when i look at >1000 commits in 2 months and inspect a few commits randomly, it looks like 100% slopware.
The concept is marvelous, but i'm 100% not trusting slop near my infra, and i'm 100% not trusting people who are not upfront about vibecoding in their README and raise my hopes for nothing.
I suspect most sysadmins, like me, will not trust LLM-generated code within a 10-foot-pole-reach of their servers. You still might be able to convince clueless managers suffering from AI psychosis to go for your solution. But if you'd like to make actual software engineering with a human team, i'm 100% convinced there's actual desire and market for a solution like this to easily get ease the transition path out of Github.
If you want (4) and don't care about a web interface for managing repos, but do want Git-LFS, Soft Serve (https://github.com/charmbracelet/soft-serve/) works pretty well. I used it for self-hosted stuff until I started needing other features Forgejo offers.
Or just push to an S3 bucket with `gitsocial mirror <s3>`
7. Do you want to impress the old Solaris admin that still wants to live like it's 1997? Use SVN hosted on an ancient Thinkpad with everything hosted on an ancient spinning disk external hooked to eSATA
I'm quite partial to SourceHut as well but tbh I don't care about contributors and I like it because it is deliberately low-tech.
Maybe the CI could be a bit better (secrets management will sting you if you don't read the docs first), but that is also pretty no-nonsense and gets the job done.
If you like no-frills and an expectation that you know what you're doing, it's pretty sweet.
Would probably scare off most collaborators though but that, IMO, is part of the appeal. If you want to contribute then it's more likely you're invested and not driving by.
Also I like that it has a concept of projects so you can group repos together (which on GH would normally require creating an organisation account). And a repo can be public but unlisted, so it's open but not drawing attention.
Sourcehut is fantastic because you can also SSH into the CI machine.
For issue tracking you may also be interested in Epiq. It is git-native, vendor agnostic, and distributed. Comes with a command line TUI, a browser GUI, mcp, and more. Also event sourced state with replay, which is super powerful for auditing workflows.
*Forgejo
Indeed. I've edited my post to fix the typo.
It's great for lightweight self hosting
and you can stream your commits into any of these to improve deployment and commit availability when github is down.
Forgejo == Codeberg
Not exactly:
> Forgejo is self-hostable free software for software development, built on top of Git. Codeberg is powered by Forgejo, which is in turn a hard-fork of Gitea. Compared to Codeberg, Forgejo is not one service, but free software to help you build your own. Everyone can install their own Forgejo instance to host their own projects. There are also public Forgejo instances as well as Codeberg you can use, but make sure you find a site that is actively maintained and updated, and that you trust the provider.
https://docs.codeberg.org/getting-started/what-is-codeberg/#...
isn't forgejo the software and codeberg is hosted forgejo?
Codebergs has a section about that: https://docs.codeberg.org/getting-started/what-is-codeberg/#...
6 replies →
7. Do you want the most contributions?
I hate to admit it, but GitHub has a massive community. I’ve personally seen a project leave it and then contributions dropped significantly.
Having people personally go out of the way for a little bit of friction tells you how valuable, and perhaps, serious these people are. I'd rather have that group of people contributing to my projects than fly by night agents that just shit all over the floor and expect treats for doing so.
Contributions aren't just commits/prs. It's also opening issues. The harder it is to provide feedback, the more likely users are going to seek a different library or tool, and depending on the actual objective of releasing or publishing code, that is not ideal.
I do agree on the fly by night agents, especially since so much is actually just agents acting on behalf of folks who just spam whatever permissions are requested in Claude/Codex.
4 replies →
It's also a useful signal in the age of LLMs. A bit of hoops to jump through before a PR can now be seen as a good thing.
You don't really need GitHub's 'community'
It is mostly all AI agents, bots and spam anyway, not to mention most projects are now vibecoded slop on there.
You're better off going to a different forge or hosting one yourself.
Codeberg has a no LLMs policy which is very attractive for many.
CodeBerg comes with the advantage that Euro social democrat style moral superiority comes for free. Never mind it has worse performance under less load and its bet for dealing with the future is treating anything LLM related as hostile.
https://blog.codeberg.org/protecting-our-floss-commons-from-...
You may agree with this. And if so, you have found your home. For those who just want to host, and not buy into this particular perspective, you should probably look elsewhere. I find a lot of people in the States promoting CodeBerg also have illusions about Europe, of the sort that are likely to be radically tested in the next decade, if not the next few election cycles alone.