Gogs ist ein leicht­ge­wich­ti­ger, selbst ge­hos­te­ter Git-Server, der sich ideal für kleine Teams und private Projekte eignet. Dank geringer Sys­tem­an­for­de­run­gen und einfacher In­stal­la­ti­on können Sie innerhalb weniger Minuten eine eigene Git-Plattform betreiben. In dieser Anleitung erfahren Sie Schritt für Schritt, wie Sie Gogs mit Docker ein­rich­ten.

Schritt 1: Vor­aus­set­zun­gen prüfen und passende Server-Res­sour­cen wählen

Bevor Sie starten, sollten Sie si­cher­stel­len, dass Ihre Umgebung die grund­le­gen­den An­for­de­run­gen erfüllt. Für die In­stal­la­ti­on benötigen Sie einen Linux-Server (z. B. Ubuntu 24.04 oder neuer), Root- oder Sudo-Zugriff sowie eine funk­tio­nie­ren­de In­ter­net­ver­bin­dung.

Darüber hinaus ist es wichtig, die passende Ser­ver­grö­ße zu wählen. Je nach Ein­satz­zweck un­ter­schei­den sich die An­for­de­run­gen teils erheblich.

Private Code-Archive

Wenn Sie Gogs lediglich als per­sön­li­ches Git-Re­po­si­to­ry nutzen möchten, reichen bereits geringe Res­sour­cen aus. In diesem Szenario hosten Sie Ihre eigenen Projekte, ohne auf externe Platt­for­men an­ge­wie­sen zu sein. Praktisch ist dies vor allem, wenn Sie ex­pe­ri­men­tel­le oder private Projekte verwalten. Die Last auf dem System bleibt gering, da nur wenige parallele Zugriffe statt­fin­den. Auch Backups lassen sich einfach umsetzen. Für Ein­stei­ge­rin­nen und Ein­stei­ger ist dies der ideale Start­punkt, denn Sie pro­fi­tie­ren von maximaler Kontrolle bei minimalem Aufwand.

Internes Re­po­si­to­ry für sensible Fir­men­da­ten

Für Un­ter­neh­men ist Gogs eine geeignete Lösung, wenn Code bewusst nicht in die Cloud aus­ge­la­gert werden soll. Hier spielen Si­cher­heit und Zu­griffs­kon­trol­le eine zentrale Rolle. Ent­spre­chend sollten Sie mehr RAM und CPU einplanen. Auch re­gel­mä­ßi­ge Backups und Zu­griffs­be­schrän­kun­gen sind es­sen­zi­ell. In solchen Setups greifen mehrere Ent­wick­le­rin­nen und Ent­wick­ler im Regelfall gleich­zei­tig auf das System zu. Zu­sätz­lich kann eine In­te­gra­ti­on in be­stehen­de In­fra­struk­tur sinnvoll sein. Insgesamt steigt daher der Res­sour­cen­be­darf deutlich an.

Edge Computing und IoT-Ent­wick­lung

In IoT-Um­ge­bun­gen entstehen häufig viele kleine Code­än­de­run­gen, die immer wieder ver­sio­niert werden müssen. Gogs eignet sich in diesen Fällen her­vor­ra­gend, um die Än­de­run­gen lokal oder in Edge-Um­ge­bun­gen zu verwalten. Die An­for­de­run­gen für den Server liegen zwischen privaten und un­ter­neh­mens­wei­ten Setups. Wichtig ist hier vor allem eine stabile Per­for­mance bei vielen kleinen Schreib­zu­grif­fen. Zudem pro­fi­tie­ren Sie von der Offline-Fähigkeit eines selbst ge­hos­te­ten Systems. Gerade in ver­teil­ten Um­ge­bun­gen ist das ein großer Vorteil. Auch Au­to­ma­ti­sie­run­gen lassen sich in diesem Setup gut in­te­grie­ren.

Bildung und Workshops

In Schu­lun­gen oder Workshops greifen viele Nut­ze­rin­nen und Nutzer gleich­zei­tig auf das System zu. Daher sollten Sie aus­rei­chend Res­sour­cen einplanen, um Per­for­mance-Probleme zu vermeiden. Besonders wichtig ist in diesen Use Cases eine einfache Be­nut­zer­ver­wal­tung. Gogs punktet hier durch seine intuitive Ober­flä­che. Für Lern­um­ge­bun­gen ist das ideal. Zu­sätz­lich lassen sich schnell neue Re­po­si­to­ries erstellen. So können Teil­neh­men­de direkt praktisch arbeiten. Die Sys­tem­last ist jedoch deutlich höher als bei Ein­zel­an­wen­dun­gen.

Spiegel-Server (Mirroring) als Backup

Wenn Sie Gogs als Backup-Lösung einsetzen, bei­spiels­wei­se zur Spie­ge­lung externer Re­po­si­to­ries, benötigen Sie vor allem Spei­cher­platz und stabile IO-Leistung. In diesem Szenario werden re­gel­mä­ßig Daten syn­chro­ni­siert. Dadurch entstehen auch höhere Last­spit­zen, was vor allem bei großen Projekten relevant sein kann. Eine robuste In­fra­struk­tur ist daher ent­schei­dend. Auch au­to­ma­ti­sier­te Syn­chro­ni­sa­tio­nen sollten zu­ver­läs­sig laufen. Für pro­duk­ti­ve Um­ge­bun­gen ist dies eine sinnvolle Ergänzung.

An­for­de­run­gen im Überblick

An­wen­dungs­ge­biet CPU RAM Speicher Nut­zer­an­zahl Be­son­der­hei­ten
Private Code-Archive 2 vCores 2–4 GB 80–120 GB NVMe 1–3 Minimaler Res­sour­cen­be­darf
Internes Firmen-Re­po­si­to­ry 4–6 vCores 8 GB 200–300 GB NVMe 3–10 Höhere Si­cher­heit und Backups
Edge Computing / IoT 2–4 vCores 4 GB 100 GB NVMe 3–10 Viele kleine Commits
Bildung und Workshops 4 vCores 6–8 GB 150 GB NVMe 20+ Parallele Zugriffe
Spiegel-/Backup-Server 4 bis 8 vCores 8–16 GB 300+ GB NVMe variabel Hohe IO-Last
Free VPS Trial
vServer kostenlos testen für 30 Tage

Lassen Sie sich von den Vorteilen über­zeu­gen. Probieren Sie Ihren Virtual Server ganz in Ruhe 30 Tage lang aus!

Schritt 2: Docker und Docker Compose in­stal­lie­ren

Falls Docker und Docker Compose auf Ihrem Server noch nicht in­stal­liert sind, starten Sie zunächst mit der In­stal­la­ti­on. Ak­tua­li­sie­ren Sie dazu in einem ersten Schritt die Pa­ket­quel­len Ihres Systems, damit Sie die neuesten ver­füg­ba­ren Versionen in­stal­lie­ren können. An­schlie­ßend in­stal­lie­ren Sie Docker Engine sowie das Docker-Compose-Plugin. Für eine stabile und aktuelle In­stal­la­ti­on empfiehlt es sich, Docker direkt aus dem of­fi­zi­el­len Docker-Re­po­si­to­ry zu in­stal­lie­ren. Die Pa­ket­ver­sio­nen der Standard-Dis­tri­bu­tio­nen sind häufig veraltet oder un­voll­stän­dig, was zu Problemen führen kann. Führen Sie dafür folgende Befehle im Terminal aus:

sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc
 
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
bash

Nach der In­stal­la­ti­on stellen Sie sicher, dass der Docker-Dienst au­to­ma­tisch beim Sys­tem­start geladen wird und starten ihn direkt:

sudo systemctl enable docker
sudo systemctl start docker
bash

Zum Abschluss über­prü­fen Sie, ob beide Kom­po­nen­ten korrekt in­stal­liert wurden, indem Sie sich die Ver­si­ons­num­mern anzeigen lassen:

docker --version
docker compose version
bash

Wenn hier Ver­si­ons­in­for­ma­tio­nen aus­ge­ge­ben werden, ist die In­stal­la­ti­on er­folg­reich ab­ge­schlos­sen und Sie können mit dem nächsten Schritt fort­fah­ren.

Bild: Versionsanzeige von Docker und Docker Compose im Terminal
Die Anzeige der Ver­si­ons­num­mer von Docker und Docker Compose bestätigt die er­folg­rei­che In­stal­la­ti­on der Dienste.

Schritt 3: Pro­jekt­ver­zeich­nis erstellen

Erstellen Sie zunächst ein eigenes Ver­zeich­nis für Ihr Gogs-Projekt, damit alle Dateien sauber an einem Ort or­ga­ni­siert sind. So behalten Sie später leichter den Überblick und können Kon­fi­gu­ra­tio­nen oder Daten gezielt verwalten.

mkdir gogs-docker
cd gogs-docker
bash

In diesem Ordner wird an­schlie­ßend die so­ge­nann­te docker-compose.yml ge­spei­chert sowie ein Da­ten­ver­zeich­nis angelegt, in dem Gogs dauerhaft Ihre Re­po­si­to­ries und Ein­stel­lun­gen ablegt. Dies klappt selbst dann, wenn der Docker-Container neu gestartet wird.

Schritt 4: Docker-Compose-Datei erstellen

Erstellen Sie nun die zentrale Kon­fi­gu­ra­ti­ons­da­tei für Ihre Container-Umgebung. In dieser Datei de­fi­nie­ren Sie, wie Gogs gestartet wird, welche Ports er­reich­bar sind und wo die Daten ge­spei­chert werden. Legen Sie dazu die Datei namens docker-compose.yml an und öffnen Sie sie in einem Editor Ihrer Wahl:

nano docker-compose.yml
bash

Fügen Sie an­schlie­ßend folgenden Inhalt ein:

services:
    gogs:
        image: gogs/gogs:latest
        container_name: gogs
        ports:
            - "3000:3000"
            - "10022:22"
        volumes:
            - ./gogs-data:/data
        restart: unless-stopped
yaml
Hinweis

Verwenden Sie für pro­duk­ti­ve In­stal­la­tio­nen statt des dy­na­mi­schen Tags latest eine feste Version wie bei­spiels­wei­se gogs/gogs:0.14.3 oder neuer. So stellen Sie sicher, dass Ihre In­stal­la­ti­on re­pro­du­zier­bar bleibt und Updates kon­trol­liert durch­ge­führt werden können.

Der Port 3000 stellt die Web­ober­flä­che bereit, während 10022 für Git-Zugriffe per SSH verwendet wird. Über das Volume ./gogs-data:/data werden alle Daten per­sis­tent ge­spei­chert, sodass sie auch nach einem Neustart erhalten bleiben. Speichern Sie die soeben erstellte Datei und schließen Sie den Editor.

Bild: docker-compose.yml im Editor
In der Datei docker-compose.yml de­fi­nie­ren Sie Ihren Gogs-Container und legen grund­le­gen­de Kon­fi­gu­ra­tio­nen fest.
Tipp

Für den pro­duk­ti­ven Einsatz sollten Sie Gogs nicht direkt über den offenen Port 3000 betreiben. Statt­des­sen empfiehlt sich der Einsatz eines Reverse Proxy. Dieser er­mög­licht es Ihnen, eine eigene Domain zu nutzen und den Zugriff per HTTPS ab­zu­si­chern. So schützen Sie sensible Daten wie Zu­gangs­da­ten und Re­po­si­to­ry-Inhalte vor un­ver­schlüs­sel­ter Über­tra­gung. Gleich­zei­tig lassen sich über den Reverse Proxy zu­sätz­li­che Si­cher­heits­me­cha­nis­men wie Zu­griffs­be­schrän­kun­gen oder Wei­ter­lei­tun­gen umsetzen.

Schritt 5: Gogs starten

Nachdem Sie die Kon­fi­gu­ra­ti­ons­da­tei erstellt haben, können Sie den Container nun starten. Wechseln Sie dafür in das Ver­zeich­nis, in dem sich die docker-compose.yml befindet, und führen Sie folgenden Befehl aus:

docker compose up -d
bash

Wenn Sie nicht direkt als Root-User arbeiten, führen Sie Docker-Befehle mit sudo aus, damit Ihr User auf den Docker-Dienst zugreifen kann.

Der Parameter -d sorgt dafür, dass der Container im Hin­ter­grund im so­ge­nann­ten Detached Mode läuft und Ihr Terminal weiterhin nutzbar bleibt. Beim ersten Start lädt Docker au­to­ma­tisch das benötigte Image aus dem Internet, was je nach Ver­bin­dung einen Moment dauern kann.

In der Ausgabe sollte nun ein Eintrag für Gogs er­schei­nen. Wenn der Status „Started“ angezeigt wird, läuft der Dienst korrekt und Sie können im nächsten Schritt die Web­ober­flä­che aufrufen.

Bild: Gestarteter Gogs-Docker-Container im Terminal
Im Terminal sollten Sie Ihren Gogs-Docker-Container mit dem Status „Started“ sehen.

Schritt 6: Web­ober­flä­che aufrufen und kon­fi­gu­rie­ren

Öffnen Sie nun Ihren Browser und rufen Sie die Gogs-Web­ober­flä­che über die IP-Adresse Ihres Servers auf:

http://SERVER-IP:3000
bash

Ersetzen Sie <SERVER-IP> durch die tat­säch­li­che IP-Adresse Ihres Servers. Wenn die Seite nicht er­reich­bar ist, prüfen Sie, ob der Container läuft und ob Port 3000 in der Firewall Ihres Servers frei­ge­ge­ben ist.

Hinweis

Wenn Sie einen Server von IONOS nutzen, müssen Sie den Port 3000 und optional 10022 für SSH zu­sätz­lich in der Firewall freigeben. Öffnen Sie dazu im Cloud Panel den Bereich „Netzwerk“ und dann „Firewall-Richt­li­ni­en“ und erlauben Sie ein­ge­hen­den Da­ten­ver­kehr für die ent­spre­chen­den Ports. Erst danach ist die Gogs-Web­ober­flä­che von außen er­reich­bar.

Beim ersten Aufruf erscheint der In­stal­la­ti­ons­as­sis­tent von Gogs. Für Ein­stei­ge­rin­nen und Ein­stei­ger ist SQLite als Datenbank die ein­fachs­te Wahl, da dafür kein zu­sätz­li­cher Da­ten­bank­ser­ver ein­ge­rich­tet werden muss. Der Re­po­si­to­ry-Pfad kann in der Regel un­ver­än­dert bleiben, da die Daten über das zuvor ein­ge­rich­te­te Volume dauerhaft unter /data ge­spei­chert werden.

Da der SSH-Port des Con­tai­ners über Docker auf Port 10022 des Servers wei­ter­ge­lei­tet wird, tragen Sie im In­stal­la­ti­ons­as­sis­ten­ten im Feld „SSH-Port“ den Wert 10022 ein. So verwendet Gogs den korrekten externen Port in den an­ge­zeig­ten SSH-Clone-URLs.

Bild: Gogs im Browser nach dem ersten Start
Wenn Sie Gogs das erste Mal in Ihrem Browser starten, sehen Sie den In­stal­la­ti­ons­as­sis­ten­ten, der Sie durch die Ein­rich­tung des Git-Servers führt.

Legen Sie an­schlie­ßend einen Admin-Account an. Mit diesem User verwalten Sie später Re­po­si­to­ries, Nut­zer­kon­ten und grund­le­gen­de Ein­stel­lun­gen. Klicken Sie zum Abschluss auf In­stal­lie­ren, um die Ein­rich­tung ab­zu­schlie­ßen.

Schritt 7: Erste Schritte in Gogs

Nach der er­folg­rei­chen In­stal­la­ti­on werden Sie au­to­ma­tisch in das Dashboard von Gogs wei­ter­ge­lei­tet. Von hier aus können Sie Ihre Git-Umgebung verwalten und direkt mit der Arbeit beginnen. Die Ober­flä­che ist einfach gehalten, sodass Sie sich schnell zu­recht­fin­den.

Zunächst können Sie weitere Be­nut­zer­kon­ten anlegen, wenn mehrere Personen auf den Server zugreifen sollen. An­schlie­ßend erstellen Sie Ihr erstes Re­po­si­to­ry, entweder leer oder durch Import eines bereits be­stehen­den Projekts. Jedes Re­po­si­to­ry dient dabei als zentraler Spei­cher­ort für Ihren Code und dessen Ver­si­ons­his­to­rie.

Für die tägliche Arbeit empfiehlt es sich, den Zugriff per SSH ein­zu­rich­ten. Dazu hin­ter­le­gen Sie Ihren öf­fent­li­chen SSH-Schlüssel in den Be­nut­zer­ein­stel­lun­gen. Dadurch können Sie kom­for­ta­bel und sicher per Git auf Ihre Re­po­si­to­ries zugreifen, ohne jedes Mal Be­nut­zer­na­me und Passwort eingeben zu müssen.

Tipp

Wenn Sie noch unsicher sind, ob Gogs die richtige Wahl ist, lohnt sich ein Blick auf Al­ter­na­ti­ven. Während Gitea im Vergleich zu Gogs als aktiver wei­ter­ent­wi­ckel­te Variante gilt, bietet GitLab im Vergleich zu Gogs deutlich mehr Funk­tio­nen wie bei­spiels­wei­se CI/CD, DevOps-Tools und um­fang­rei­che In­te­gra­tio­nen. Dafür ist GitLab auch we­sent­lich res­sour­cen­in­ten­si­ver und komplexer in der Ein­rich­tung. Wenn Sie eine schlanke Lösung suchen, bleibt Gogs eine sehr gute Wahl. Für größere Teams oder au­to­ma­ti­sier­te Workflows können Al­ter­na­ti­ven sinn­vol­ler sein.

Schritt 8: Gogs absichern und aktuell halten

Bevor Sie Gogs produktiv nutzen, sollten Sie re­gel­mä­ßig Updates in­stal­lie­ren und eine aktuelle Version mit allen Si­cher­heits­kor­rek­tu­ren verwenden. Prüfen Sie dafür die of­fi­zi­el­len Si­cher­heits­mel­dun­gen des Projekts.

Wenn keine öf­fent­li­che Re­gis­trie­rung benötigt wird, de­ak­ti­vie­ren Sie diese in der Datei app.ini:

[service]
DISABLE_REGISTRATION = true
ini

An­schlie­ßend starten Sie den Gogs-Container neu, damit die geänderte Kon­fi­gu­ra­ti­on über­nom­men wird:

docker compose restart
bash

Danach können neue Be­nut­zer­kon­ten nur noch durch Ad­mi­nis­tra­to­rin­nen und Ad­mi­nis­tra­to­ren angelegt werden.

Zum Hauptmenü