UGREEN NAS: Erstes Docker-Compose-Projekt anlegen
Teil 64 der UGREEN-Serie: Ein Compose-Projekt in der Docker-App von UGOS Pro anlegen, bereitstellen, testen, ändern und neu bereitstellen, am Beispiel des Testdienstes whoami.
Geprüft am 03.11.2026 · für UGOS Pro 1.21.0.0190
WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Ein Compose-Projekt ist der saubere Weg, einen Dienst dauerhaft auf der UGREEN NAS zu betreiben. Die Datei docker-compose.yaml beschreibt Image, Ports, Ordner und Einstellungen, und die Docker-App von UGOS Pro startet daraus die Container. Diese Anleitung zeigt Schritt für Schritt, wie Sie Ihr erstes Projekt anlegen, prüfen, ändern und neu bereitstellen. Als Beispiel dient der kleine Testdienst whoami, der nur anzeigt, wer ihn aufruft.
Alle Schritte haben wir auf einer UGREEN DXP4800 Pro mit UGOS Pro 1.21.0.0190 und Docker Compose 5.1.3 mit einem Testprojekt durchgeführt.
Voraussetzungen
- Eine UGREEN NAS mit UGOS Pro und der App Docker, siehe Teil 63
- Ein Konto mit Administratorrechten
- Ein freier Port für den Testdienst, hier 8099
- Für den Test im Terminal SSH, siehe Teil 52, alternativ ein Browser
- Etwa 15 Minuten
Schritt 1: Ein neues Projekt anlegen
Öffnen Sie die App Docker, wechseln Sie links zu Projekt und klicken Sie auf Erstellen. Es öffnet sich das Formular Projekt erstellen.

Das Formular hat drei Pflichtfelder. Der Name wird zum Projektnamen und taucht später in Netz- und Containernamen auf. Nehmen Sie deshalb kurze Namen aus Kleinbuchstaben, Ziffern und Bindestrichen. Der Speicherpfad ist der Ordner, in dem UGOS die Compose-Datei ablegt. Darunter folgt der Editor für die Compose-Konfiguration.

Neben dem Editor zeigt UGOS die IDs des angemeldeten Kontos, hier PUID=1000 PGID=10. Laut Hinweis sollen sie im Environment-Feld stehen, um Probleme mit fehlenden Rechten zu vermeiden. Für Container, die auf Freigaben zugreifen, empfehlen wir dagegen ein eigenes Konto mit wenigen Rechten, siehe Teil 65. Die Gruppe 10 ist die Gruppe admin. Ein Container mit dieser Gruppe erhält die Rechte der Administratoren auf alle Freigaben, auf denen diese Gruppe berechtigt ist.
Verifizieren: Das Formular Projekt erstellen ist offen und zeigt Name, Speicherpfad und Compose-Konfiguration.
Schritt 2: Name und Speicherpfad festlegen
Tragen Sie als Namen s-edv-test ein. Klicken Sie dann auf das Feld Speicherpfad. UGOS schlug bei uns sofort Freigegebener Ordner/docker/s-edv-test vor und legte den Ordner beim Bereitstellen an. Über das Ordnersymbol rechts wählen Sie bei Bedarf einen anderen Ort.
Behalten Sie die Ordnung bei: ein Projekt, ein Ordner unter docker, mit gleichem Namen. Dann finden Sie Compose-Datei und Daten später sofort, und eine Sicherung des Ordners docker erfasst alle Projekte.
Verifizieren: Name und Speicherpfad sind gefüllt, und der Pfad endet auf den Projektnamen.
Schritt 3: Die Compose-Konfiguration einfügen
Ein Klick auf Yaml-Beispiel ausfüllen setzt eine Vorlage ein.

Die Vorlage von UGOS beschreibt eine Datenbank für Nextcloud mit mariadb:latest. Sie zeigt, wie eine Compose-Datei aufgebaut ist, ist aber kein fertiger Dienst. Ersetzen Sie den Inhalt durch Ihre eigene Konfiguration. Für den Test genügt:
services:
whoami:
image: traefik/whoami:latest
container_name: s-edv-test-whoami
restart: unless-stopped
ports:
- "8099:80"
Die Zeilen bedeuten:
- services: die Liste der Container im Projekt, hier nur einer mit dem Namen whoami
- image: das Image aus Docker Hub, hier der Testdienst von Traefik
- container_name: ein fester Name, unter dem der Container in der App erscheint
- restart: unless-stopped: Docker startet den Container nach einem Absturz und nach einem Neustart der NAS wieder, außer Sie haben ihn selbst angehalten
- ports: Port 8099 der NAS führt auf Port 80 im Container

Achten Sie auf die Einrückung: YAML arbeitet mit Leerzeichen, nie mit Tabulatoren, und alle Einträge einer Ebene stehen gleich weit eingerückt. Üblich sind zwei Leerzeichen je Ebene. Über Importieren können Sie eine fertige Datei vom eigenen Rechner oder von der NAS laden, statt sie einzufügen.
Prüfen Sie vorher, ob der Port frei ist. Per SSH zeigt das:
sudo ss -tlnp | grep ':8099 '
Gibt der Befehl nichts aus, ist der Port frei.
Verifizieren: Die Konfiguration steht im Editor, ohne rote Markierungen, und der Port ist frei.
Schritt 4: Bereitstellen
Lassen Sie den Haken bei Nach der Erstellung sofort ausführen gesetzt und klicken Sie auf Bereitstellen. Ein Fenster mit dem Bereitstellungsprotokoll öffnet sich.

Docker lädt zuerst das Image, bei uns in 2 Sekunden. Danach legt Compose das Netz s-edv-test_default an und erstellt den Container. Bricht etwas ab, steht der Grund in diesem Fenster, etwa ein Tippfehler im Image-Namen oder ein belegter Port. Schließen Sie das Fenster mit OK.

Das neue Projekt steht danach oben in der Liste, mit In Betrieb und 1/1 laufenden Containern.
Verifizieren: Das Projekt zeigt In Betrieb, und alle Container laufen.
Schritt 5: Den Dienst testen
Rufen Sie im Browser die Adresse der NAS mit dem Port auf, etwa http://192.168.1.20:8099, oder testen Sie per SSH direkt auf der NAS:
curl -s http://127.0.0.1:8099/ | head -4
whoami antwortet mit seinem Namen und seinen Adressen:
Hostname: 800bfd30e3fe
IP: 127.0.0.1
IP: ::1
IP: 172.16.11.2
Im Browser zeigt die Seite zusätzlich die Kopfzeilen Ihres Browsers. Der Hostname ist die Kennung des Containers, die letzte Adresse stammt aus dem Netz des Projekts und sieht bei Ihnen anders aus. Die Adresse der NAS finden Sie wie in Teil 9 beschrieben. Im Ordner des Projekts liegt jetzt die Compose-Datei:
ls -l /volume2/docker/s-edv-test
-rwxrwxrwx+ 1 root root 155 Nov 3 15:39 docker-compose.yaml
Verifizieren: Die Testseite antwortet, und docker-compose.yaml liegt im Projektordner.
Schritt 6: Das Projekt im Detail
Klicken Sie in der Projektliste auf den Namen. Die Detailansicht zeigt Erstellungszeit, Pfad der Konfigurationsdatei und vier Reiter.

Über die drei Punkte in der Liste erreichen Sie Einstellungen, Starten, Beenden und Neu starten. Löschen war bei unserem laufenden Projekt ausgegraut. Beenden Sie ein Projekt zuerst, wenn Sie es entfernen möchten.

Container listet die Container des Projekts mit Auslastung, Ressourcenüberwachung zeigt deren Verlauf. Protokoll fasst die Ausgaben aller Container zusammen, und Compose-Konfiguration enthält die Datei zum Bearbeiten.
Verifizieren: Die Detailansicht zeigt den Pfad zur Compose-Datei, und der Reiter Container listet s-edv-test-whoami.
Schritt 7: Die Konfiguration ändern und neu bereitstellen
Im Protokoll fiel uns auf, dass der Container die Uhrzeit in UTC ausgab. Die lag eine Stunde hinter der Ortszeit, im Sommer sind es zwei Stunden. Das beheben Sie mit der Variablen TZ. Öffnen Sie den Reiter Compose-Konfiguration.

Ergänzen Sie unter restart den Abschnitt environment, mit derselben Einrückung wie restart:
environment:
- TZ=Europe/Berlin
Klicken Sie danach auf Neu bereitstellen.

UGOS weist darauf hin, dass ein erneutes Bereitstellen nicht mehr benötigte Container und Images entfernt. Mit Das neueste Image abrufen lädt Docker vorher eine neue Version des Images, das ist der Weg für ein Update. Für eine reine Änderung der Einstellungen lassen Sie den Haken weg und klicken auf Bereitstellen. Das Protokoll meldet dann Container s-edv-test-whoami Recreated: Compose erstellt den Container mit den neuen Einstellungen neu.

Im Protokoll sehen Sie beide Starts. Der erste zeigt 14:39 Uhr, der zweite nach der Änderung 15:40 Uhr, jetzt in Ortszeit. Die Zeile exited with code 2 gehört zum Austausch des Containers. Der neue Container läuft, wie die Zeile darunter zeigt. Auch der Hostname, den whoami meldet, ist jetzt ein anderer, denn der Container wurde neu erstellt.
Änderungen an Ports, Ordnern und Variablen übernimmt ein Container beim Neuerstellen. Nutzen Sie dafür Neu bereitstellen.
Verifizieren: Das Bereitstellungsprotokoll meldet Recreated, und das Protokoll des Containers zeigt die Ortszeit.
Schritt 8: Ein Projekt wieder entfernen
Ein Testprojekt sollten Sie nicht dauerhaft laufen lassen. Klicken Sie in der Projektliste auf Beenden.

Beenden hält die Container nur an. Per SSH zeigt sudo docker ps -a den Container danach als Exited, und das Netz s-edv-test_default besteht weiter. Erst jetzt ist Löschen im Menü Mehr aktiv. Prüfen Sie nach dem Löschen in der App Dateien, ob der Projektordner unter docker noch da ist, und entfernen Sie unter Image das nicht mehr genutzte Image traefik/whoami.
Verifizieren: Das Projekt ist aus der Liste verschwunden, und sudo docker ps -a zeigt keinen Container s-edv-test-whoami mehr.
Typische Fehler
- Port is already allocated: Der Port ist belegt, von einem anderen Container oder von UGOS. Wählen Sie einen anderen Port links vom Doppelpunkt.
- yaml: line … did not find expected key: Die Einrückung stimmt nicht. Nutzen Sie Leerzeichen und prüfen Sie die Ebenen.
- pull access denied: Der Image-Name ist falsch geschrieben, oder das Image ist privat.
- Änderung wirkt nicht: Die Datei wurde gespeichert, aber nicht neu bereitgestellt. Klicken Sie auf Neu bereitstellen, das Protokoll muss Recreated melden.
- found character that cannot start any token: In der Datei steht ein Tabulator. Ersetzen Sie ihn durch Leerzeichen.
- Container startet und stoppt sofort: Der Reiter Protokoll nennt den Grund, oft fehlende Rechte auf einen Ordner, siehe Teil 65.
Häufige Fragen
Warum latest im Image-Namen?
latest lädt die jeweils aktuelle Version. Für wichtige Dienste mit Datenbank ist eine feste Version wie 1.2.3 sicherer, dann kommt ein großes Update nicht unbemerkt beim nächsten Neubereitstellen mit Das neueste Image abrufen.
Wohin mit Passwörtern und Schlüsseln?
Nicht direkt in die Compose-Datei. Legen Sie sie in eine Datei .env im Projektordner, etwa mit der Zeile DB_PASSWORT=…, und verweisen Sie in der Compose-Datei mit ${DB_PASSWORT} darauf. Compose liest die .env aus dem Projektordner. Der Editor in UGOS zeigt sie nicht, legen Sie sie in der App Dateien oder per SSH an. Sichern Sie diese Datei mit, geben Sie sie aber nicht weiter.
Kann ich das Projekt auch per SSH verwalten?
Ja, im Projektordner mit sudo docker compose up -d. Bleiben Sie aber möglichst bei einem Weg, damit Oberfläche und Datei zusammenpassen.
Wie nehme ich ein Projekt auf eine andere NAS mit?
Kopieren Sie den ganzen Projektordner mit Compose-Datei, .env und Datenordnern. Auf der neuen NAS legen Sie ein Projekt mit demselben Namen an, wählen den kopierten Ordner als Speicherpfad und fügen den Inhalt der kopierten docker-compose.yaml in die Compose-Konfiguration ein. Über Importieren können Sie dafür auch Von NAS oder Vom lokalen Computer importieren wählen. Prüfen Sie danach feste Pfade wie /volume1 in der Datei, denn die Volumes können auf dem neuen Gerät anders heißen. Wie Sie dabei die Rechte erhalten, steht in Teil 58.
Was bedeutet das Banner Projekte können aktualisiert werden?
Es weist auf neuere Images für Ihre Projekte hin. Aktualisieren Sie wichtige Dienste erst nach einer Sicherung, siehe Teil 61.
Fazit
Ein Compose-Projekt in UGOS Pro ist in wenigen Minuten angelegt: Name, Ordner, Konfiguration, Bereitstellen. Das Bereitstellungsprotokoll und der Reiter Protokoll zeigen sofort, ob alles läuft. Änderungen übernehmen Sie mit Neu bereitstellen. Mit diesem Ablauf richten Sie in den nächsten Teilen echte Dienste wie Uptime Kuma oder Vaultwarden ein.


