Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung UGREEN NAS 03.11.2026 · 10 min Lesezeit

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

Titelbild Teil 64: Erstes Docker-Compose-Projekt auf der UGREEN NAS anlegen

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.

Formular Projekt erstellen in der Docker-App von UGOS Pro
Projekt erstellen: 1 Name und Speicherpfad, 2 Compose-Konfiguration mit Beispiel, Hinweis zu PUID und PGID und Importieren, 3 Nach der Erstellung sofort ausführen und Bereitstellen.

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.

Hinweis zu PUID und PGID im Projektformular
Hinweis zu PUID und PGID: 1 laut UGOS die IDs des angemeldeten Kontos, die im Environment-Feld gesetzt werden sollen.

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.

Yaml-Beispiel von UGOS im Compose-Editor
Yaml-Beispiel: 1 Yaml-Beispiel ausfüllen, 2 die Vorlage von UGOS mit mariadb:latest und Netz für Nextcloud.

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
Ausgefülltes Projektformular mit Compose-Konfiguration für whoami
Ausgefülltes Formular: 1 Name s-edv-test und Speicherpfad docker/s-edv-test, 2 Compose-Konfiguration für whoami, 3 Bereitstellen.

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.

Bereitstellungsprotokoll mit Image, Netz und Container
Bereitstellungsprotokoll: 1 Image traefik/whoami:latest geladen, Netz s-edv-test_default und Container s-edv-test-whoami angelegt, 2 OK.

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.

Projektliste mit dem neuen Projekt in Betrieb
Projektliste: 1 s-edv-test mit Status In Betrieb und einem laufenden Container.

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.

Menü Mehr eines laufenden Projekts mit ausgegrautem Löschen
Menü Mehr eines Projekts: 1 Einstellungen, Starten, Beenden, Neu starten und das ausgegraute Löschen.

Ü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.

Detailansicht eines Projekts mit vier Reitern
Projektdetails: 1 Name, Status, Erstellungszeit und Pfad der Konfigurationsdatei, 2 Reiter Container, Ressourcenüberwachung, Protokoll und Compose-Konfiguration.

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.

Reiter Compose-Konfiguration mit Neu bereitstellen
Reiter Compose-Konfiguration: 1 die gespeicherte Compose-Datei, 2 Neu bereitstellen.

Ergänzen Sie unter restart den Abschnitt environment, mit derselben Einrückung wie restart:

    environment:
      - TZ=Europe/Berlin

Klicken Sie danach auf Neu bereitstellen.

Rückfrage beim Neu bereitstellen
Rückfrage Neu bereitstellen: 1 Hinweis, dass nicht mehr benötigte Container und Images entfernt werden, und die Option Das neueste Image abrufen.

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.

Protokoll des Containers vor und nach der Zeitzone
Protokoll nach der Änderung: 1 erster Start mit Uhrzeit in UTC, 2 Start nach dem Neubereitstellen mit Ortszeit.

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.

Beendetes Projekt mit aktivem Löschen im Menü
Beendetes Projekt: 1 Status Nicht in Betrieb mit 0/1 Containern, 2 Menü Mehr mit aktivem Löschen.

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.

Weiterführende Anleitungen und Quellen

UGREENUGREEN NASDockerDocker ComposeUGOS ProProjekt