code

Private GitHub Alternative Forgejo

Von peter portmann,

Veröffentlicht am 28. Juni 2026   â€”   9 min Lesezeit

selfhostedmacoski
forgejo.org

Recherche mit Gemini

đź’»
Forgejo (gesprochen for-dschei-oh) ist eine schlanke, selbst gehostete Open-Source-Plattform zur Versionsverwaltung von Code, basierend auf Git. Es ist ein direkter Fork (eine Code-Abspaltung) von Gitea und dient als datenschutzfreundliche und rein gemeinschaftsgesteuerte Alternative zu GitHub oder GitLab.

Die Hintergrundgeschichte: Warum gibt es Forgejo?

Bis Ende 2022 war Gitea ein reines Community-Projekt. Dann grĂĽndeten die Hauptverantwortlichen jedoch eine kommerzielle Firma (Gitea Ltd.), um die Marke zu verwalten und Paid-Services (wie SaaS-Hosting) anzubieten.

Teile der Open-Source-Community befürchteten dadurch einen Kontrollverlust, Profitgier und die schrittweise Einführung von proprietären Enterprise-Funktionen (Open-Core-Modell). Als Reaktion darauf spaltete sich ein Grossteil der aktiven Entwickler ab und gründete unter dem Dach der deutschen Non-Profit-Organisation Codeberg e.V. das Projekt Forgejo.

Forgejo vs. Gitea: Wo liegen die Unterschiede?

Optisch und funktional sehen sich beide Plattformen extrem ähnlich, da sie dieselbe Basis nutzen. Allerdings driften sie zunehmend auseinander:

Kriterium Gitea Forgejo
Fokus & Governance Kommerziell unterstĂĽtzt (gewinnorientiertes Unternehmen im Hintergrund). Rein Community-gesteuert (Non-Profit ĂĽber Codeberg e.V.).
Philosophie Offen fĂĽr kommerzielle Zusatz-Features, gehostet auf GitHub. Strikt Open Source ("Free Software"), entwickelt sich komplett selbst ("Dogfooding").
Sicherheit & Testen Fokus liegt stark auf neuen Features fĂĽr Firmenkunden. Priorisiert extrem strikte automatisierte Sicherheits- und Upgrade-Tests.
Föderation Kaum Fokus auf Vernetzung. Arbeitet aktiv an der Forge-Federation (via ActivityPub), damit verschiedene Instanzen plattformübergreifend kommunizieren können.

Die wichtigsten Features von Forgejo

  • Ressourcensparend: Läuft problemlos auf minimaler Hardware
  • Alles drin: Bietet Repositorys, Issue-Tracker, Pull Requests, Wikis, eine eigene Container-Registry und Projektboards.
  • Forgejo Actions: Eine integrierte CI/CD-Pipeline, die vollständig kompatibel mit der Syntax von GitHub Actions ist.

Fazit: Welches solltest du wählen?

Da Forgejo mittlerweile eine enorme Entwickler-Dynamik besitzt (grosse Projekte wie das Linux-Distributionsteam von Fedora nutzen und unterstĂĽtzen Forgejo aktiv), gilt es heute fĂĽr viele als die zukunftssicherere Variante fĂĽr das rein freie Self-Hosting.

  • Wähle Gitea, wenn du eine kommerzielle Firma im RĂĽcken fĂĽr Enterprise-Support brauchst.
  • Wähle Forgejo, wenn dir der Open-Source-Gedanke, maximale Unabhängigkeit von Konzernen, hohe Datensicherheit und eine echte Community-Entwicklung wichtig sind.

Installation: Forgejo unter UNRAID

Die Installation ist einfach und schnell. Ports und Version festlegen, starten, fertig. Bei mir ist der Container via lokalen DNS-Dienst und via Cloudflaretunnel erreichbar.

Forgejo App

Forgejo ist ein selbst gehostetes leichtgewichtiges Software‑Forge. Einfach zu installieren und mit geringem Wartungsaufwand erledigt es genau das, was es soll.
Bereitgestellt von einer inklusiven Community unter dem Dach von Codeberg e.V., einer demokratischen gemeinnützigen Organisation, kann Forgejo vertrauensvoll als ausschliesslich Free Software angesehen werden. Es ist ein 'soft' Fork von Gitea mit einem Fokus auf Skalierung, Föderation und Datenschutz.
Zusätzliche Anforderungen:
Dieser Container verwendet keinen rollierenden Tag wie latest. Um auf die nächste Hauptversion zu aktualisieren, müssen Sie den Tag im Repository manuell bearbeiten. Weitere Details: https://forgejo.org/faq/#why-is-there-no-latest-tag-for-container-images

Maintainer: Selhosters Backup
Repository: codeberg.org/forgejo/forgejo:15

docker run  
  -d  
  --name='forgejo'  
  --net='bridge'  
  --pids-limit 2048  
  -e TZ="Europe/Zurich"  
  -e HOST_OS="Unraid"  
  -e HOST_HOSTNAME="ASRockMini"  
  -e HOST_CONTAINERNAME="forgejo"  
  -l net.unraid.docker.managed=dockerman  
  -l net.unraid.docker.webui='http://[IP]:[PORT:3000]'  
  -l net.unraid.docker.icon='https://raw.githubusercontent.com/selfhosters/unRAID-CA-templates/master/templates/img/forgejo.png'  
  -p 'PORT:22/tcp'
  -p 'PORT:3000/tcp'  
  -v '/mnt/cache/appdata/forgejo':'/data':'rw' 'codeberg.org/forgejo/forgejo:15'

DNS lokal

FĂĽr die Subdomain forgejo.supportnet.ch habe verwende ich fĂĽr das lokale Netz den DNS Resolver der pfSense Firewall. So kann ich den Container jederzeit auch ohne Internetverbindung erreichen.

Wenn die DNS-Auflösung extern via Cloudflare erfolgen soll, benenne ich den Host temporär um.

SSL-Zertifikat

Da mich Zertifikatswarnungen auch im Intranet nerven, ist im lokalen Nginx-Reverse-Proxy ein SSL-Zertifikat fĂĽr *.supportnet.ch hinterlegt.

In Cloudflare kann unter Profil / API-Token ein Token erstellt werden.

In lokalen Nginx-Reverse-Proxy wird dann ein Let's Encrypt Zertifikat via DNS erstellt. Damit es funktioniert Key Type 'RSA 2028', DNS Provider 'Cloudflare', Credentials '# Cloudflare API token, dns_cloudflare_api_token=cfut_sehrlangergeheimertoken' verwenden.

Zugang von extern via Cloudflare-Tunnel

Cloudflare ist kreativ mit der Menustruktur, diese wechselt oft. Im Moment ist Konfiguration hier zu finden:
Zero Trust / Networks / Connectors.
Dann den Tunnel wählen und Routen für veröffentlichte Anwendungen.
So kann der Zugang direkt via IP-Adresse:PORT zum Container erfolgen. Auch von extern könnte der Nginx-Reverse-Proxy dazwischengeschaltet werden.

Erstkonfiguration

Nun kann der Container via Subdomain 'forgejo.supportnet.ch' erreicht werden. Beim ersten Aufruf erfolgt die initiale Konfiguration.

Hier kann auch gleich das Admin-Konto erstellt werden.

Für Gäste präsentiert sich das nun so:


Spiegelung in das öffentliche Repo forgejo.supportnet.ch

Im öffentlichen Ziel-Repo kann in Einstellungen / Spiegeleinstellungen ein Token erzeugt werden der im Quell-Repo für den Push verwendet werden kann.

Mein privates Repo ist nicht von extern erreichbar. Aus SicherheitsgrĂĽnden habe ich dazu einen separaten Container angelegt. Um den Code automatisch bei jedem Commit dorthin zu pushen, dienen folgende Einstellungen im internen Quell-Repo:

Der Code ist nun öffentlich erreichbar:


Installation: Forgejo Runner unter UNRAID

Um beispielsweise eine Website zu aktualisieren, kann der Forgejo Runner verwendet werden. Ein Commit wird damit automatisch eine Aktion auslösen.

Der Container für den Runner benötigt etwas Vorbereitung.

ForgejoRunner App

Forgejo Runner führt CI/CD‑Workflows für Forgejo Actions aus, das integrierte Continuous‑Integration‑System in Forgejo.
Dieses Template verwendet den Host‑Docker‑Socket‑Modus , der Runner verteilt Workflow‑Jobs als Geschwister‑Container auf dem Unraid Docker‑Daemon. Kein Docker‑in‑Docker oder privilegierter Modus nötig.
SETUP: Du musst den Runner registrieren, bevor du den Container startest.

Maintainer: MaybeGrim
Repository: code.forgejo.org/forgejo/runner:12

Erstelle das Datenverzeichnis

mkdir -p /mnt/user/appdata/forgejo-runner/data

Generiere die Konfiguration

docker run --rm data.forgejo.org/forgejo/runner:12 forgejo-runner generate-config > /mnt/user/appdata/forgejo-runner/data/runner-config.yml

Registriere den Runner

docker run --rm -v /mnt/user/appdata/forgejo-runner/data:/data -it data.forgejo.org/forgejo/runner:12 forgejo-runner register --config /data/runner-config.yml

Folgende Daten werden abgefragt:
Forgejo URL: forgejo.supportnet.ch
runner token: erstellen in Administrationseinstellungen / Actions / Runner / erstellen

runner-config.yml

valid_volumes ergänzen, dies ist zwingend nötig um nginx/www/web.supportnet.ch zu mounten. Selektives Erlauben funktioniert bei mir leider nicht.

valid_volumes:
  - '**'

Starte diesen Container , der Runner wird sich verbinden und beginnen, Jobs abzurufen.
Der Container muss als root (user 0:0) laufen, um Zugriff auf den Docker‑Socket unter Unraid zu haben.

docker run  
  -d  
  --name='forgejo-runner'  
  --net='bridge'  
  --pids-limit 2048  
  -e TZ="Europe/Zurich"  
  -e HOST_OS="Unraid"  
  -e HOST_HOSTNAME="ASRockMini"  
  -e HOST_CONTAINERNAME="forgejo-runner"  
  -e 'DOCKER_HOST'='unix:///var/run/docker.sock'  
  -l net.unraid.docker.managed=dockerman  
  -l net.unraid.docker.icon='https://raw.githubusercontent.com/selfhosters/unRAID-CA-templates/master/templates/img/forgejo.png'  
  -v '/mnt/user/appdata/forgejo-runner/data':'/data':'rw'  
  -v '/var/run/docker.sock':'/var/run/docker.sock':'rw'  
  --user 0:0 'data.forgejo.org/forgejo/runner:12' forgejo-runner daemon  
  --config /data/runner-config.yml

Publizieren mit dem Runner, Beispielprojekt

Der Runner hat bei mir die Aufgabe mit jeder Codeänderung eine Website auf dem Server zu aktualisieren.

Für eine Reise wird eine geplante Route in einer Textdatei erfasst. Diese befindet sich auf meinem MacBook einem Projekt Ordner. Pi Coding Agent verwaltet den Code. Da sich der Agent selber konfigurieren kann und die eigene Dokumentation kennt, reichen Angaben zum lokalen Repo und ein Access-Token damit Commit und Push ausgeführt werden können. Dazu reicht natürliche Sprache aus, der Agent verwendet dann automatisch die korrekten Befehle. Die Action ist im Repo ersichtlich unter .forgejo/workflows.

Codeänderung auf dem MacBook

  • Pi Coding Agent fĂĽhrt automatisch ein Commit und ein Push aus → Internes Repo
  • Automatische Spiegelung des Interen Repo → forgejo.supportnet.ch
  • Forgejo Runner → Upload der html-Files auf web.supportnet.ch/cruiseweather

Quellen

https://forgejo.org/
https://forgejo.org/docs/latest/admin/
https://forgejo.org/docs/next/admin/actions/

Docker


Videos und Blogs

Die Liste ist chronologisch geordnet.


Migration von Gitea zu Forgejo: Warum du wechseln solltest und wie es geht!

pixeledi Tech Hub Forgejo 1/3, 7.1.2025

Das Video erläutert die Beweggründe für einen Wechsel von Gitea zu Forgejo. Zudem bietet es eine praktische Schritt-für-Schritt-Anleitung, die zeigt, wie unkompliziert sich eine bestehende Gitea-Instanz mittels Docker Compose und der Übertragung von Ordnerstrukturen in Forgejo migrieren lässt.


Installieren und Testen des Forgejo Runners fĂĽr CI/CD

pixeledi Tech Hub Forgejo 2/3, 22.1.2025

Das Video zeigt die schrittweise Installation und Registrierung eines Forgejo Runners mithilfe von Docker Compose, um automatisierte CI/CD-Prozesse auf einer eigenen Instanz zu ermöglichen. Anschliessend wird anhand eines Test-Repositories demonstriert, wie man einen einfachen Workflow über eine Konfigurationsdatei einrichtet und die automatische Ausführung erfolgreich überprüft.


Forgejo CI/CD fĂĽr ESP32: Firmware erstellen und als Release hochladen

pixeledi Tech Hub Forgejo 3/3, 11.2.2025

Das Video zeigt, wie man mithilfe von Forgejo Actions und einem selbstgehosteten Runner den CI/CD-Prozess fĂĽr ESP32-Mikrocontroller automatisiert, um Firmware fĂĽr verschiedene Hardware-Plattformen zu kompilieren.


HowTo: Setup forgejo runner and create basic actions

domaindrivenarchitecture.org, 30.7.2025

Dieser Blogbeitrag beschreibt, wie ein selbst gehosteter CI/CD-Runner mittels Docker-in-Docker (DIND) in einer Kubernetes-Umgebung (k3s) für eine bestehende Forgejo-Instanz eingerichtet und registriert wird. Zudem wird anhand praktischer Beispiele erklärt, wie man automatisierte Workflows mit Forgejo Actions erstellt, Geheimnisse verwaltet sowie Pakete und Artefakte hochlädt.
https://domaindrivenarchitecture.org/blog/2025-07-30-setting-up-runner-and-actions-on-forgejo/


Awesome Open Source, 12.08.2025

Diese Anleitung beschreibt ausführlich die Installation und Konfiguration der selbst gehosteten Open-Source-Plattform Forgejo auf einem Linux-Server mithilfe von Docker und Docker Compose. Zudem wird die Einrichtung eines Reverse-Proxies für den sicheren externen Zugriff sowie die anschliessende Ersteinrichtung über die Weboberfläche inklusive Benutzer- und Authentifizierungsverwaltung erklärt.
blog, Show Notes: Install and Setup Forgejo
https://wiki.opensourceisawesome.com/books/wikis-documentation-and-blogs/page/install-and-setup-forgejo


Own Your Code Forever - A Private Git Server Setup Guide with Tailscale and Forgejo

Tailscale, 12.09.2025

Dieser Blogbeitrag bietet eine Schritt-für-Schritt-Anleitung zur Installation und Konfiguration des Forgejo-Runners für selbstgehostete CI/CD-Aktionen. Es wird detailliert erklärt, wie Sie den Runner einrichten, ihn über ein Token mit Ihrer Forgejo-Instanz registrieren und schliesslich als Hintergrunddienst für die automatische Ausführung von Jobs aktivieren.


A Detailed Analysis and Deployment Guide for Forgejo Runner

AlexMa's Blog, 4.1.2026

Dieser Blogbeitrag bietet eine Schritt-für-Schritt-Anleitung zur Installation und Konfiguration des Forgejo-Runners für selbstgehostete CI/CD-Aktionen. Es wird detailliert erklärt, wie Sie den Runner einrichten, ihn über ein Token mit Ihrer Forgejo-Instanz registrieren und schliesslich als Hintergrunddienst für die automatische Ausführung von Jobs aktivieren.
https://blog.alexma.top/en-us/posts/forgejo-runner-installation/


Smart Engineers Are Moving Away From Github, Here's Why...

Mischa van den Burg, 03.03.2026

Das Video zeigt den kompletten Aufbau eines selbstgehosteten Git-Servers mit Forgejo auf Kubernetes als Ersatz für GitHub, inklusive Repository‑Verwaltung, CI/CD-Pipelines und Deployment. Dabei werden die Vorteile gegenüber GitLab und Gitea sowie das Spiegeln von GitHub-Repos mittels eines einzigen Docker-Befehls erläutert.


Replace GitHub with this, Forgejo runner

Tailscale, 23.03.2026

Selbstgehostetes S3‑kompatibles Backend mit Garage, Terraform (via OpenTofu) in CI mit Forgejo ausführen und alles sicher mit Tailscale verbunden. Das Ergebnis ist eine funktionierende Pipeline mit Remote‑State. Kein AWS, kein MinIO und keine SaaS erforderlich.


BookStack Has Migrated From GitHub to Codeberg

bookstackapp.com/blog, 28.4.2026

Das Open-Source-Projekt BookStack hat seine gesamte Repository-Verwaltung von GitHub auf die quelloffene, gemeinnĂĽtzige Plattform Codeberg verlagert, da diese besser mit den Werten des Projekts ĂĽbereinstimmt.
https://www.bookstackapp.com/blog/project-migrated-to-codeberg/
https://codeberg.org/bookstack/bookstack

Wir verwenden BookStack WIKI bei der PopNet Informatik AG und auch bei Kaformatik AG fĂĽr interne Dokumentation und fĂĽr Kunden-WIKIs.


Auf Facebook teilen Auf Linkedin teilen Auf Twitter teilen Per E-Mail senden