Seit dem ersten Post zu gitea gab es eine Menge Änderungen, weshalb ich jetzt alles nochmal in einem aktuelleren Beitrag packe.

gitea Repo
Das alte Repo in der Dockerregistry wird nicht mehr weitergepflegt. Daher verwende ich jetzt das offizielle Repository von gitea gitea/gitea:latest.
Umzug auf neue Hardware
Bisher lief der Container auf dem Raspberry Pi 4 des Homeserver Post, da aber auf dem Raspberry Pi 5 mit Nextcloud genügend Ressourcen frei sind, ziehe ich ihn dort hin um.
docker-compose.yml
Das docker-compose.yml sieht nicht viel anders aus als vorher.
version: "3"
services:
gitea:
container_name: gitea
image: gitea/gitea:latest
ports:
- '3001:3000/tcp'
# Volumes store your data between container upgrades
volumes:
- '/opt/gitea:/data'
restart: unless-stopped
Den ssh Port führe ich nicht mehr aus dem Container nach draussen, da https:// über nginx gut genug funktioniert. Der Port 3000 wird jetzt nach aussen auf 3001 gemapped, da dieser Port schon anderweitig belegt ist. Das Volumeverzeichnis lege ich dann mit
sudo mkdir /opt/giteaan und kopiere die bestehenden Daten dort hinein. Der Container wird mit
docker-compose up -dgestartet.
Einrichtung und Konfiguration
Die Einrichtung von gitea läuft analog zum Vorgängerpost. Es gibt nur eine Konfiguration, von der ich dir empfehle sie händisch durchzuführen.
In der Datei /opt/gitea/gitea/conf/app.ini solltest du den folgenden Eintrag unbedingt auf true setzen.
[service]
DISABLE_REGISTRATION = true
Dies verhindert, dass sich jeder beliebige in deinem gitea registrieren kann und dort Repos erstellt, um dort möglicherweise illegale Daten abzulegen. Dies ist vor allem bei öffentlich zugänglichen Servern notwendig.
Containerupdate
Für das Update des gitea Containers habe ich inzwischen zwei Scripte im Einsatz. Das erste (update-container.sh) übernimmt die Aufgabe, das neue Image von der Dockerregistry zu pullen und den aktuellen Container zu löschen. Es erwartet zwei Parameter: den Namen des Image in ${1} und den Containernamen in {2}. Dieses Script ist universell für jeden Container benutzbar.
#! /usr/bin/bash
echo "pulling image ${1}"
docker pull ${1}
echo "removing container ${2}"
docker rm -f ${2}
Das zweite Script (update.sh)ruft das erste mit den Werten für gitea auf.
#! /usr/bin/bash
export COMPOSE_IGNORE_ORPHANS=True
./update-container gitea/gitea:latest gitea
echo "creating new container"
docker-compose -f ./docker-compose.yml up -d
Beide Scripte müssen im gleichen Verzeichnis wie das docker-compose.yml liegen.
Fazit
Ich habe diese Umstellung schon im September 2025 gemacht. Sie ging ohne großes Aufsehen vonstatten.
Durch das offizielle Repo komme ich jetzt schneller an aktuelle Versionen ran und gitea läuft subjektiv performanter auf dem Raspberry Pi 5. Die Dateien dieses Post habe ich natürlich in gitea abgelegt.