Git im Eigenbetrieb: Gitea und Forgejo
Der Agent schreibt Code — aber wo lebt der? GitHub und GitLab sind mächtig, aber sie sind SaaS. Gitea und Forgejo sind die quelloffenen Alternativen, die auf einem eigenen Server laufen und alles mitbringen, was ein Team braucht.

Gitea vs. Forgejo: Der kleine Unterschied
Gitea ist der etablierte Self-Hosted-Git-Dienst — eine einzelne Binary, ein Docker-Container, eine PostgreSQL-Datenbank. Forgejo ist ein Gitea-Fork, 2022 aus Governance-Bedenken entstanden, seit dem Hard-Fork 2024 unter strikter Copyleft-Lizenz und mit eigenem Profil: Der Fokus liegt auf Community-Steuerung und Föderation (ActivityPub-basierte Vernetzung von Instanzen).
Beide können:
- Git-Repositories mit Web-UI, Branches, Tags
- Pull Requests mit Code-Review
- Issues mit Labels, Meilensteinen, Boards
- Actions/CI-Runner (Gitea Actions sind GitHub-Actions-kompatibel)
- Package Registry (Docker, NPM, Maven)
In der Praxis spielt der Unterschied für KMU heute kaum eine Rolle. Beide laufen stabil, beide haben eine Weboberfläche, die an GitHub erinnert. Wer Wert auf eine reine Community-Governance legt, nimmt Forgejo; wer den grösseren kommerziellen Rückhalt sucht, Gitea.
Setup: Ein Container
docker run -d --name gitea \
-p 3000:3000 -p 2222:22 \
-v gitea-data:/data \
gitea/gitea:latest
Einrichtung: Admin-Account anlegen, Domain setzen, läuft. Der Reverse Proxy (Caddy) macht HTTPS davor, Keycloak übernimmt das SSO. Das /data-Volume gehört in die Backup-Kette — es enthält Repos, DB und Konfiguration.
Warum on-prem?
Der Quellcode ist das intellektuelle Eigentum des Unternehmens — inklusive Konfigurationen, Skripte, Prompts, MCP-Server-Code. Das auf GitHub oder GitLab zu hosten ist bequem, aber:
- NIS2: Code-Repositories fallen unter die zu schützenden Assets
- Datenhoheit: Vertrauliche Konfigurationen, Secrets, Kundenprojekte
- Ausfallsicherheit: Der eigene Git-Server läuft im eigenen Cluster, nicht in der AWS-us-east-1 während eines Ausfalls
CI/CD mit Gitea Actions
Gitea Actions sind GitHub-Actions-kompatibel. Ein Runner (ein Container) lauscht auf Jobs, führt sie aus, meldet zurück. Build, Test, Deploy — alles im eigenen Netz.
Für das Blog-Deployment: Push nach Gitea, Action baut das Next.js-Image, deployt auf den senn-next-Container. Keine externe CI, kein fremder Runner, der Zugriff auf interne Server hat.
Fazit
Gitea oder Forgejo sind die kürzeste Strecke zwischen "kein Git-Server" und "vollwertiges Code-Management im eigenen Haus". Ein Nachmittag Setup, dann jahrelang Ruhe — und jeder Agent, der Code schreibt, checkt ihn dorthin ein.