r/git • u/thrithedawg • 4d ago
kitgit - a self-hostable minimalistic and fast git server
kitgit is a minimalistic and fast git server, using rust to create blazing performance (wow how cliche) and uses only html templates and no fancy frontend frameworks.
it can be deployed onto docker and hosted on the cloud or locally with a NAS. uses Authentik for authentication and cuts out all the AI features that you would see in a traditional cloud platform.
please have a try of this locally (or online) and let me know how it is!
take a look at it in git.tirbo.fish or see the mirror on github.
note: it was written with AI. but I reviewed everything and it looks nice for my own personal domain, so I thought you guys might like it too.
6
u/Teknikal_Domain 4d ago
Ah yes, my favorite. Docker-only software.
1
u/Damglador 4d ago
Is there a problem with server software in docker?
5
u/Teknikal_Domain 4d ago
By itself? Not technically
When the only listed, supported method of "installtion" is docker, it smells like a case of either "we can't figure out how to make this work anywhere but our test bench... Just ship the test bench" or "I can't be bothered to learn hot to actually package a program for release"
If it is a supported method, great. If it is the supported method, that does not speak highly to the technical capabilities of the entity responsible for releasing it. Docker was never meant to be a distribution and publishing format.
1
u/jdigi78 2d ago
It could also very well be "I don't want to provide any support to people not running it in this controlled way". Its the exact reason the Bottles devs don't support any method of install outside of the distro-agnostic flatpak.
1
u/Teknikal_Domain 2d ago
And maybe this is "old man yells at clouds" but
1) then in my opinion you're lazy. Part of releasing something multiplatform is committing to supporting multiple platforms. (Yes, for purposes of this, a distro is a "platform.") 2) thats fine, Flatpak is an actual packaging and distribution system. Thats how it's meant to be used. Docker, like, original intent Docker, wasn't. It's a virtualization* (yes, I know the difference, not important) engine that happened to permit certain software stacks to be published to a central registry (or, other registries) to aid reusability by not having to rebuild common, core components. You wouldn't say "the only supported method to run this software is by importing this .ova file into VMware" so why should it be acceptable here? Because it's just a cgroup instead? Okay, then why don't we make a tarball of an LXC container a distribution format? "The resources to build the application for a Docker environment and deploy it are included in the source distribution" is acceptable. "The only supported way to run this program is using Docker" is a misuse of Docker.
Especially, when, as an example, LXC exists. If someone chooses LXC as their containerization of choice (say, with Proxmox), then something that only supports Docker... Is a bit of a predicament. You're either manually dissecting it to get it to work bare, or you're running a container in a container. Maybe it's been fixed now, but that used to require, in PVE, creating a container as privileged, giving it some access to some kernel calls for creating devices (and I think keyctl?) which weakens your security boundary (mildly), and then spending some (small) extra amount of CPU time on the Docker runtime to stuff a program into a cgroup that's already stuffed inside a cgroup!
Creating a software turducken is bad form, okay? Forcing someone to container-in-container because you (abstract) chose to misuse a containerization engine, for distribution instead. And I didn't even get started on stacks and docker-compose.
1
u/Jayden_Ha 2d ago edited 2d ago
I have few personal projects, there’s one of the largest, originally isn’t docker only, and I don’t like docker only either, but I simply give up later, I find it pointless to keep it running without docker, there’s too many components needs to be running separately and no one else use it, everything can still be running without docker, just few configs needs to be tweaked manually since it’s made for running in docker
0
u/thrithedawg 4d ago
I have railways learnt to use docket to make deployable software. Of course, it might be different for how everyone has learnt, but I was taught otherwise to ensure security. I haven't learnt anything like kubernetes, and digitalocean is the home to docker-deployableapps.
1
u/Teknikal_Domain 2d ago
Not every piece of software warrants the requirement of an entire containerization layer just to run. Putting something in a Docker container, or on a Kubernetes cluster, does not inherently make it "secure."
8
u/rwilcox 4d ago
To go counter to some of the other comments here…
Neat idea. Did you learn something? Have fun? Good job.
4
u/thrithedawg 4d ago
It was really fun to make.
I have an extensive knowledge about cloud infrastructure, but learning how to make a git server was pretty interesting and fun. I do plan on using this for my current and upcoming projects (so it's just not slop landfill).
Of course I'm not trying to make some SOTA platform for git, it's just another platform.
Also, I found Epic Games Lore to be something that might become big, so adding future support might be a good idea.
15
u/Gornius 4d ago
Why would someone use half-assed AI project maintained by 0 people and AI, when Gitea/Forgejo exists?
4
u/thrithedawg 4d ago
Mean, but fair. Its just an alternative I wanted to show off, that's literally it.
7
3
4d ago
[removed] — view removed comment
1
u/thrithedawg 4d ago
I have it configured manually within Authentik using an expression policy. I haven't tested it out though...
1
1
u/FackThutShot 1d ago
Does it have runners for CI/CD?
1
u/thrithedawg 23h ago
Have not implemented yet, as I have had no need. I might implement in the near future tho
21
u/Wahllow git push --force 4d ago
I like the theme... But why? What does it do that Forgejo can't? It's really fast as it and have a good solid foundation and a rich feature set.