Top
Best
New

Posted by ColinWright 9/7/2025

Some thoughts on personal Git hosting(shkspr.mobi)
103 points | 93 comments
NoiseBert69 9/10/2025|
I have no problems publishing my public projects on GitHub or Codeberg. Secretly hoping that LLM-Crawlers will choke to dead on my bad code.

But private stuff runs on my own servers.

In 2025 it's mostly maintenance free once the setup is running: Debian will be updated fully automated using unattended-update and the hosted application when there's the need to do one manually. Backups automatically every night using Proxmox and its little brother Proxmox Backup Server. Even with valid certificates using DNS-Auth from Lets Encrypt.

monegator 9/10/2025||
All the drawbacks are not drawbacks to me. My projects, my repos, my private server. I don't want nor need to show off ("collaborate") and if i did.. what's the point of self hosting then? Just use github/gitlab/codeberg.

I don't even need to rent a server for that. Everything runs on my router (openWRT is amazing)

goku12 9/10/2025|
> I don't want nor need to show off ("collaborate") and if i did.. what's the point of self hosting then? Just use github/gitlab/codeberg.

Let me repeat this again. We didn't centralize git when we started using github/gitlab etc. We centralized discoverability and reach of projects.

So far, everything else can be decentralized - issue tracking, pull requests, project planning, ci, release management and more. But we still don't have a solution to search projects on potentially thousands of servers, including self-hosted ones.

skydhash 9/10/2025|||
> But we still don't have a solution to search projects on potentially thousands of servers, including self-hosted ones.

We do.

https://mvnrepository.com/repos/central

https://npmjs.com

https://packagist.org/

https://pypi.org/

https://www.debian.org/distrib/packages#search_packages

https://pkg.go.dev/

https://elpa.gnu.org/packages/

And many others.

And we still have forums like this one and Reddit where people can just announce their project. Github is more of a bad code refuge than a high signal project discovery.

franga2000 9/10/2025|||
Every single thing you showed are places to publish software releases, not post your half-finished project that someone some day might find useful. We need both.

As an example, I had to reverse engineer some kinda obscure piece of hardware and after getting everything I needed for my project, I put everything on github in case it was useful to anyone. A few months later, someone was in a similar situation and built on top of my work. Neither of us made a "package" or even "a piece of software", just some badly written scripts and a scattered notes. But it was still useful to publish somewhere where others can find it, especially a place with very good SEO and code-optimized search.

skydhash 9/10/2025||
The subject is decentralization. Your above situation could be you posting on your blog or a forum and the other person getting to know about it that way. GitHub may be convenient, but it’s neither necessary, nor indispensable!
goku12 9/11/2025||
The solution for centralization isn't asking people to put the extra effort to avoid it. You won't convince anyone to accept that. Unless you have a unified interface to search all those projects at once - especially unfinished or unpublished projects, people will keep going back to platforms like github. That unified interface doesn't have to be centralized at all either.
__david__ 9/11/2025||
> Unless you have a unified interface to search all those projects at once…

You mean like Google? I can’t imagine ever searching just GitHub for software… I use a search engine and it’ll point me to GitHub or Gitlab or whatever frontend the software is published on.

I also find GitHub’s intra-project search to be so horrible that’s it’s quicker in the long run to just clone the project to my local machine and git grep there. And at least my local git doesn’t inexplicably choose to hide a few relevant results from me the way GitHub constantly does.

goku12 9/11/2025||
I wasn't talking about intra-project searches. But Github does have a search that allows us to put constraints on the results like how web search engines allowed a decade or more ago. This feature is pretty useful that it forms a big part of sourcegraph's business. I do use Google search, but I often end up with Github search when I need to locate a specific type of project.
goku12 9/10/2025||||
So if I'm looking for a solution rather than a library or a project to take part in, I need to search a dozen sources to see if anything meets my requirements? What if the project was just abandoned without being published any of those source registries? What if the project was a PoC of some algorithm that didn't need to be published anywhere else?

That sounds hardly like an alternative to what's possible with Github now. The only alternative that came anywhere close to that ideal was freshmeat - and even that didn't achieve the full potential. Check this discussion alone to see how many talk about 'network effects' or 'discoverability'.

skydhash 9/10/2025||
The subject is decentralization. There’s a huge value in curation and specific communities. You don’t go to r/all to read about emacs or bash. Instead you go to r/emacs and r/bash. Even those “awesome $thing” list are better than going through pages of GitHub search results.
goku12 9/11/2025||
r/emacs and r/bash are all communities on a centralized service that you can search using a single interface. That is an inaccurate comparison. Meanwhile, I didn't say that a common index has to be centralized.
ioasuncvinvaer 9/10/2025|||
These are all for their own ecosystems and usually libraries only.
skydhash 9/10/2025||
Do you browse for C# projects when coding PHP? Do you chat about Fantasy books in a network hardware forum? It's all about ecosystems.
ioasuncvinvaer 9/10/2025||
And Github has the whole software ecosystem. For example I can search for text editors or ebook readers. In that case I am not searching for any specific programming language.
skydhash 9/10/2025||
I don’t care that much for Github. Because of all the clones and mirrors. So I mostly use one of the above to find the canonical project link.

And most software have an actual websites or is present in some distribution. I don’t care that much for weekend projects.

goku12 9/11/2025||
> I don’t care that much for weekend projects.

We aren't talking about your preferences alone here, are we? The case that the parent commenter mentioned is exactly what I was talking about too. What if I want a solution? What if I'm looking for algorithms or examples? What if I want to find a group of projects that's tackling a certain problem? How are my needs invalid? Are the projects that don't have such elaborate setups, polish or completion unworthy of discovery and help? You're essentially dismissing requirements that drive others to large platforms.

righthand 9/10/2025||||
> But we still don't have a solution to search projects on potentially thousands of servers, including self-hosted ones.

Why do you need a search index on your self hosted git server? Doesn’t Kagi solve that?

goku12 9/10/2025||
> Why do you need a search index on your self hosted git server

The search index doesn't have to be on your server, does it? What if there is an external (perhaps distributed/replicated) index that you could submit the relevant information to? Or if an external crawler could collect it on your behalf? (some sort of verification will also be needed.)

There are two reasons why such a dedicated index is useful. The first is that the general index is too full of noise. That's why people search projects directly on Github. The second problem is that the generic crawlers aren't very good at extracting relevant structured information from source projects, especially the information that the project owner wants to advertise. For example the readme, contribution guidelines, project status, installation and usage information, language(s), license(s), CoC, issue tracker location, bug and security reporting information, keywords, project type, etc. Github and sourcegraph allow you to do precise searches based on those. Try using a regular search engine to locate an obscure project that you already know about.

kaferoni 9/12/2025|||
There is ongoing work on decentralizing discoverability and reach: https://tangled.sh/
strogonoff 9/11/2025||
I never quite understood why’d people call for “federated forking” when the truly decentralized model had existed since forever: simply clone the repository to your machine, change what you want, create a patch, and communicate it to maintainers (traditionally Linux kernel used a mailing list for that, but imaginably you could use something in Fediverse, Git doesn’t care). Everybody gets to use their favourite tooling and no one is locked to lowest common denominator GUI for things like reviewing proposed changes.
jrmg 9/11/2025||
It may be too reductive for you, but the answer is “that’s not straightforward and easy”.
theamk 9/11/2025||
> Everybody gets to use their favourite tooling

well, no. For my work, my favorite tooling is the one that:

- Allows 1-command checkout of proposed change

- Allows two-way discussion, with ability to comment either on specific lines of the patch, or on the overall system, and with ability to mark each comment "resolved" or not.

- Has some sort of dashboards that shows what needs to be done

I can use lowest common denominator - the email messages - but it is really lacking & awkward. Even basic merge request / pull request interface are much nicer.

strogonoff 9/13/2025||
Personally, I think discussions should happen organically over any channel; a tool like Github only gives a false impression that everything happens there, but really it usually doesn’t. Regarding dashboard for maintainers, there are tools that do it well, but usually they are dedicated to that; I don’t think using PRs or issues gives a complete exhaustive picture of what needs to be done, and forcing every maintainer to use one lowest common denominator tool like Github is these days doesn’t seem like a good idea.

As far as checkout, doing it with an emailed patch is one command, actually.

divbzero 9/10/2025||
> You can git clone the repo to your local machine, and you can manually move it elsewhere, but there's no way to send a PR from your repo to mine.

There is a native git request-pull command [1] that generates a summary of pending changes to pull into an upstream project, but it doesn’t enjoy support for all the features offered by GitHub pull requests or GitLab merge requests.

[1]: https://git-scm.com/docs/git-request-pull

quectophoton 9/10/2025|
Yeah, `git request-pull` is only a helper to create a pull request, while GitHub/GitLab/etc include that in addition to a (convenient) vendor-specific way to track received pull requests and a code review web interface.

Initiatives like ForgeFed are trying to define a more neutral way to share this information, but I don't think there's any estimate date for when there'll be an actual implementation of it. If that ever happens, it'd be possible to get vendor-neutral tooling for that kind of collaboration.

skydhash 9/10/2025||
> Suppose you want to make a Pull Request or just take a copy of the code. At the moment, you have to create a fork on my server. There's no way to easily fork something to your GitHub or personal server.

Why are people so keen on having that network graph of forks? It's not necessary for collaboration. Status symbol?

edent 9/10/2025||
I don't see it as a status thing - I see it as a convenience thing.

If I want to fork your code and contribute back, that means I need to be on the same system as you.

There's a bunch of Gnome projects which require me to sign up to their specific git hosting service before I can contribute.

On most git servers, I have to fork in order to send a PR, which often means I have to create a fork on their system - which means I need to set up something to replicate it to my local machine.

It's all friction.

I'd love to see a project on (for example) GitHub and then clone it to my GitLab, work on it there, and send a PR from GL to GH.

skydhash 9/10/2025|||
> If I want to fork your code and contribute back, that means I need to be on the same system as you.

You really don't. You just clone, code, commit, and send a patch (which is just one or more text files). That's it. You may just code and do a diff, if it's a simple fix.

The project may have a more complex policy to accept contributions. But a Fork and a PR is not a requirement.

edent 9/10/2025||
OK. Let's say I clone to my local machine, make some changes, and commit.

How do I submit the patch to the repo on GitHub / GitLab / CodeBerg / whatever?

Presumably I need to hunt down the maintainer's email?

skydhash 9/10/2025||
The emails are in the commit log.
__david__ 9/11/2025|||
GitHub could implement that tomorrow—there’s zero technical reason why they couldn’t have a foreign pull request ui. Unfortunately it’s in their vested interest to keep forks on their platform. If anyone were going to implement that it’d be one of the smaller self hosting oriented projects like gittea or its fork with the terrible name I can never remember nor pronounce.
webstrand 9/10/2025||
On lower frequency repos, I often look through the github forks to find patches for issues or features that were not upstreamed. Its not infrequent I find a nice feature someone implemented for themselves but didn't upstream because it wasn't quite quality enough, making a PR is a lot of effort especially when its not clear that it'll ever be accepted.
account42 9/10/2025||
While less popular these days, email-based workflows don't have the account/federation issue - anyone can just drop by and post a patch series. Of course the workflow itself is going to be an obstacle for most but I'm not sure if that's inherent or only because it's not what people are used to.
zokier 9/10/2025||
> You can git clone the repo to your local machine, and you can manually move it elsewhere, but there's no way to send a PR from your repo to mine

Have people forgotten that email exists?

skydhash 9/10/2025||
For simple changes, you can just `git diff` it to a file, put that file on a pastebin and share that link with any communication tool (or share the file directly). `git format-patch` is more where you want to share the commits (message and all). And you're not tied to using email. It's just a collection of files that you can share using whatever.
lloydatkinson 9/11/2025||
Is this a common usage? While I’ve only attempted to use patch files with a Git GUI, they have always failed with errors 100% of the time for me.

Given that Git GUIs just invoke Git, I don’t have a lot of faith in it.

skydhash 9/11/2025|||
The only Git Gui I've used extensively is magit, and patch worked fine. It's very much like cherry picking commit or doing merge. There can be conflict so be sure to use `--3way` flag.
SomeUserName432 9/11/2025|||
Copy-as-patch in Intellij is great.

Can easily apply minor changes, just sharing it over slack.

edent 9/10/2025|||
Sure. But then I have to copy that patch, hope my email client hasn't mangled it, upload it somewhere, run an arcane command.

Do you not see how much easier something like GH is?

layer8 9/10/2025|||
If you can’t trust you email client’s editor, just add the patch file as an attachment. About zero chance that your email client will mangle it.

GitHub seems easier because you are used to its workflow — which isn’t always devoid of arcanum either.

1718627440 9/10/2025||||
So instead of:

    local$ git push

    upstream$ git fetch && git merge
it becomes:

    local$ git format-patch

    local: open file picker for attachments.

    upstream: save as ...

    upstream$ git am
That's not that much different in time and effort.
skydhash 9/10/2025||||
You can store the patch somewhere (pastebin, cloud drive), and send the link instead. Or attach them to the email. No need to directly use `git send-email` or copy it in the body of the email.
edent 9/10/2025||
OK, but then I still have to do work to get that patch and integrate it into my existing systems.

I don't know if you've ever used GitHub, GitLab, or CodeBerg - but PRs just appear in a list there. I don't need to do any work. Very handy especially if they're big changes.

I can also leave comments on specific bits of code, rather than emailing someone.

skydhash 9/10/2025||
But that's require a web browser, dealing with 2fa, and I would probably still export the patch and apply it locally to test. Using email can be done on a potato system, using my email client, which already have my workflow automated. Replying someone takes even less effort than commenting.
messe 9/10/2025|||
https://git-send-email.io/
dogleash 9/10/2025||
My email client (the default offering from my service provider ofc) is a POS. Therefore all of email is a miserable, failed tool and I can't believe you're being such a boomer rn.
layer8 9/10/2025|||
Use a better email client?
esafak 9/10/2025|||
I can't tell if you're being sarcastic.
dogleash 9/10/2025||
I agree somewhere between 0% and 100% with the surface level message, and will give similar bounds for my agreement with the literal opposite of the text.

It's a joke, not a manifesto in a joke suit.

OhMeadhbh 9/10/2025||
Fwiw.. I have a "normal" private git server over SSH, but for public projects, it copies merges into blessed branches to public, read-only repos accessible via HTTPS. Here's an example:

https://www.bi6.us/GI/B/

I sort of punted on receiving patches and merge requests because most of the projects I'm distributing in this way aren't really open source, but "published source" and there's a small community of people who use them. The people who use the public, read-only repos know how to generate patches and distribute them via email or (in one case) uploading them to an S3 bucket.

Anyway... your mileage may vary, but it's worked reasonably well for a small community. Not sure I would recommend it for a huge open source project.

lloydatkinson 9/11/2025||
Not to sound all salty and sarcastic, but I also wrote a blog post reviewing some of the popular Git self hosting options and it barely got any attention.

Since then there seems to be an uptick in blog posts that seem to have less content talking about the same things.

I guess I just talk into a void.

eviks 9/10/2025|
> 1. Leave my popular / sponsored repos on GitHub > 2. Move my smaller repos to https://git.edent.tel/

Wouldn't 2. make transitioning them into 1. "impossible"?

More comments...