Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Synology / NAS 11.09.2026 · 10 min Lesezeit

Homepage auf dem Synology NAS installieren: Dashboard für alle Self-Hosting-Dienste

Homepage bündelt alle Docker-Dienste des Synology NAS auf einer Seite. Die Anleitung zeigt das Container-Manager-Projekt mit YAML-Konfiguration, HOMEPAGE_ALLOWED_HOSTS und abgesicherter Docker-Anbindung über einen Socket-Proxy, mit Prüfung nach jedem Schritt.

Geprüft am 30.09.2026 · für homepage 2.4.0

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

Homepage: Dienste im Blick: Dashboard, Live-Widgets, Docker.

Wer mehrere Docker-Dienste auf dem Synology NAS betreibt, verliert schnell den Überblick: Portainer läuft auf Port 9000, Jellyfin auf 8096, weitere Dienste auf eigenen Ports. Homepage (gethomepage/homepage) fasst alle Dienste, Lesezeichen und Live-Widgets auf einer Seite zusammen. Es braucht keine Datenbank, die Konfiguration liegt in YAML-Dateien, und über eine abgesicherte Docker-Anbindung erkennt Homepage andere Container automatisch. Diese Anleitung richtet das Dashboard als Container-Manager-Projekt unter DSM 7.2 ein, mit Prüfung nach jedem Schritt.

Voraussetzungen

Schritt 1: Ordner anlegen und Berechtigungen setzen

Der Container Manager legt Volume-Verzeichnisse nicht automatisch an. Erstellen Sie in der File Station den Ordner /volume1/docker/homepage. Er dient zugleich als Projektordner für die compose.yaml und als Konfigurationsordner.

Homepage läuft in dieser Anleitung mit PUID und PGID Ihres DSM-Benutzers statt als root. Der Ordner muss diesem Benutzer gehören. Legen Sie ihn mit demselben Benutzer in der File Station an, stimmt der Eigentümer bereits. Andernfalls setzen Sie ihn per SSH (Anleitung: SSH auf dem Synology NAS aktivieren und verbinden), hier mit PUID 1026 und PGID 100:

sudo chown -R 1026:100 /volume1/docker/homepage

Verifizieren: Prüfen Sie den Eigentümer per SSH:

ls -ln /volume1/docker/ | grep homepage

Erwartete Ausgabe (Zahlen entsprechen Ihrer PUID/PGID):

drwxrwxrwx+ 1 1026 100 ... homepage

Die Rechte-Spalte kann je nach Freigabe-Einstellung abweichen, entscheidend sind die beiden Zahlen.

Schritt 2: Container-Manager-Projekt mit compose.yaml anlegen

Das Anlegen eines Compose-Projekts beschreibt die Grundanleitung Container Manager auf dem Synology NAS: Docker-Compose-Projekt anlegen, starten und aktualisieren. Legen Sie ein Projekt homepage mit dem Ordner /volume1/docker/homepage an und fügen Sie folgende compose.yaml ein:

services:
  homepage:
    image: ghcr.io/gethomepage/homepage:latest
    container_name: homepage
    restart: unless-stopped
    ports:
      - 3000:3000
    volumes:
      - /volume1/docker/homepage:/app/config
    environment:
      HOMEPAGE_ALLOWED_HOSTS: 192.168.1.100:3000
      PUID: 1026
      PGID: 100
    depends_on:
      - dockerproxy

  dockerproxy:
    image: ghcr.io/tecnativa/docker-socket-proxy:latest
    container_name: homepage-dockerproxy
    restart: unless-stopped
    environment:
      CONTAINERS: 1
      POST: 0
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

Ersetzen Sie 192.168.1.100 durch die IP Ihres NAS. Das Image von der GitHub Container Registry ist die primäre Quelle des Projekts. Bei einem anderen externen Port (z. B. 3550:3000) passen Sie HOMEPAGE_ALLOWED_HOSTS auf 192.168.1.100:3550 an.

Warum ein Socket-Proxy: Laut offizieller Dokumentation erfordert der direkt eingebundene Docker-Socket, dass Homepage als root läuft. Der Proxy docker-socket-proxy erlaubt nur das Lesen der Containerliste (CONTAINERS=1) und sperrt alle schreibenden Zugriffe (POST=0). Er ist nur im internen Projektnetz erreichbar, eine Portfreigabe ist nicht nötig. Homepage selbst läuft so ohne root-Rechte.

Verifizieren: Klicken Sie auf Weiter und Fertig. Der Container Manager lädt die Images (Homepage ca. 80 MB) und startet beide Container. Nach etwa 20 Sekunden zeigt homepage den Status „healthy“. Das Protokoll enthält keine Zeile mit Error.

Schritt 3: Eckdaten und Konfigurationsdateien im Überblick

ParameterWertHinweis
Imageghcr.io/gethomepage/homepage:latestPrimäre Quelle; für feste Versionen z. B. :v2.4.0 (Stand September 2026)
Architekturlinux/amd64, linux/arm64Intel/AMD- und ARM64-Modelle
Interner Port3000/tcpKein HTTPS nativ; für TLS Reverse Proxy vorschalten
Config-Volume/volume1/docker/homepage:/app/configPflicht; YAML-Dateien werden beim ersten Start angelegt
Docker-Anbindungdockerproxy:2375Socket-Proxy, nur Lesezugriff
HOMEPAGE_ALLOWED_HOSTSNAS-IP:PORTPflicht seit v1.0; kommagetrennt, ohne Leerzeichen
PUID / PGIDz. B. 1026 / 100Ohne Angabe läuft der Container als root
Image-Größeca. 80 MBKeine Datenbank, Node.js-Prozess

Beim ersten Start kopiert Homepage fehlende Konfigurationsdateien mit Beispielinhalten in den Config-Ordner. Diese fünf bearbeiten Sie in dieser Anleitung:

DateiZweck
services.yamlDienst-Kacheln mit Gruppen, URLs und API-Widgets
bookmarks.yamlLesezeichen-Links zu externen Seiten
widgets.yamlGlobale Widgets (Ressourcen, Suche, Wetter, Datum)
settings.yamlAllgemeine Einstellungen (Sprache, Hintergrund, Layout)
docker.yamlDocker-Verbindungen für Status und Service-Discovery

Zusätzlich entstehen kubernetes.yaml, proxmox.yaml, custom.css, custom.js und der Ordner logs. Sie brauchen sie für diese Anleitung nicht.

Verifizieren: Öffnen Sie in der File Station /volume1/docker/homepage. Die YAML-Dateien sind vorhanden, services.yaml enthält die Beispielgruppen „My First Group“ bis „My Third Group“. Damit funktioniert das Volume-Mapping.

Schritt 4: Web-UI aufrufen und Sprache einstellen

Öffnen Sie http://192.168.1.100:3000 (IP und Port angepasst). Sie sehen das Beispiel-Dashboard mit drei Gruppen, einer Ressourcenanzeige und einer Suchleiste.

Für eine deutsche Oberfläche öffnen Sie /volume1/docker/homepage/settings.yaml im Text Editor und ergänzen am Ende:

language: de

Homepage liest die YAML-Dateien bei jedem Seitenaufruf neu, ein Neustart des Containers ist nicht nötig.

Verifizieren: Laden Sie die Seite neu. Beschriftungen wie die Ressourcenanzeige erscheinen auf Deutsch. Meldet der Browser einen Fehler zur Host-Validierung, stimmt HOMEPAGE_ALLOWED_HOSTS nicht (siehe Troubleshooting).

Schritt 5: Ersten Dienst in services.yaml eintragen

Ersetzen Sie den Inhalt von /volume1/docker/homepage/services.yaml. Die Struktur folgt dem Muster Gruppe → Dienst → Eigenschaften. Beispiel mit Portainer und Jellyfin:

- Verwaltung:
    - Portainer:
        href: http://192.168.1.100:9000
        description: Docker-Verwaltung
        icon: portainer.png
        server: my-docker
        container: portainer

- Medien:
    - Jellyfin:
        href: http://192.168.1.100:8096
        description: Medienserver
        icon: jellyfin.png

Icon-Namen wie portainer.png lädt Homepage aus der Sammlung Dashboard Icons. Die Icons sind nicht im Image enthalten, der Browser holt sie von einem CDN. Ohne Internetzugang des Browsers bleiben sie leer. Die Zeilen server und container verknüpfen die Kachel mit dem Container-Status aus Schritt 6.

YAML ist einrückungsempfindlich: nur Leerzeichen verwenden, keine Tabs.

Verifizieren: Laden Sie das Dashboard neu. Die Gruppen „Verwaltung“ und „Medien“ erscheinen mit je einer Kachel, ein Klick öffnet den Dienst.

Schritt 6: Docker-Service-Discovery aktivieren

Tragen Sie in /volume1/docker/homepage/docker.yaml den Socket-Proxy aus Schritt 2 ein:

my-docker:
  host: dockerproxy
  port: 2375

Der Name my-docker muss mit dem server-Feld in der services.yaml übereinstimmen. Die Portainer-Kachel zeigt danach den Container-Status.

Container ohne Eintrag in der services.yaml nimmt Homepage über Labels auf. Ergänzen Sie diese in der compose.yaml des jeweiligen Projekts und erstellen Sie es neu:

    labels:
      - homepage.group=Medien
      - homepage.name=Jellyfin
      - homepage.icon=jellyfin.png
      - homepage.href=http://192.168.1.100:8096
      - homepage.description=Medienserver

Beide Wege lassen sich kombinieren. Tragen Sie einen Dienst aber nur auf einem Weg ein, sonst erscheint er doppelt.

Verifizieren: Die Portainer-Kachel zeigt einen Status wie „running“. Container mit Labels erscheinen in der angegebenen Gruppe. Fehlt der Status, prüfen Sie im Protokoll von homepage Meldungen zu dockerproxy und ob der Name in container: exakt dem Containernamen entspricht.

Schritt 7: Globale Widgets einrichten

Ersetzen Sie den Inhalt von /volume1/docker/homepage/widgets.yaml:

- resources:
    cpu: true
    memory: true
    disk: /app/config

- datetime:
    text_size: xl
    format:
      dateStyle: long
      timeStyle: short
      hour12: false

- search:
    provider: duckduckgo
    target: _blank

- openmeteo:
    label: Mein Ort
    latitude: 48.1
    longitude: 11.5
    timezone: Europe/Berlin
    units: metric
    cache: 5

Das Widget openmeteo ist laut Dokumentation das empfohlene Wetter-Widget und benötigt keine Registrierung. Das Widget openweathermap setzt dagegen ein Abonnement der „One Call API“ voraus. disk: /app/config zeigt die Belegung des Volumes, auf dem der Config-Ordner liegt.

Verifizieren: Nach dem Neuladen erscheinen oben CPU, RAM und Speicher, Datum und Uhrzeit, die Suchleiste und die aktuelle Temperatur. Zeigt das Wetter-Widget einen Fehler, prüfen Sie die Koordinaten und ob der Container ins Internet gelangt.

Troubleshooting / Typische Fehler

  • Fehler zur Host-Validierung im Browser: HOMEPAGE_ALLOWED_HOSTS fehlt oder passt nicht zur aufgerufenen Adresse. Das Protokoll von homepage nennt den abgelehnten Host, tragen Sie ihn exakt so ein. Mehrere Werte kommagetrennt ohne Leerzeichen: 192.168.1.100:3000,nas.lokal:3000. Danach das Projekt neu erstellen.
  • Nur das Beispiel-Dashboard sichtbar: Die Beispielinhalte stammen aus den beim ersten Start angelegten Dateien. Ersetzen Sie sie wie in Schritt 5 und 7.
  • Kein Container-Status, Fehler zu dockerproxy: Der Proxy läuft nicht oder docker.yaml verweist auf einen anderen Host. Prüfen Sie, ob homepage-dockerproxy läuft und host: dockerproxy mit dem Servicenamen übereinstimmt.
  • Konfigurationsdateien fehlen: Der Volume-Pfad stimmt nicht. Vergleichen Sie den Pfad in der File Station exakt mit dem volumes-Eintrag.
  • Weiße Seite oder YAML-Fehlermeldung: Ein Einrückungsfehler verhindert das Laden. Das Protokoll nennt Datei und Zeile. Tabs durch Leerzeichen ersetzen.
  • Service-Widget meldet API-Fehler: Die Schaltfläche „API Error Information“ im Widget zeigt die Ursache. URLs in Widgets enden ohne Schrägstrich. Erreicht der Container den Dienst nicht, testen Sie per SSH mit sudo docker exec homepage ping 192.168.1.100.
  • Portkonflikt auf Port 3000: Ein anderer Dienst belegt den Port. Ändern Sie den externen Port (z. B. 3550:3000) und passen Sie HOMEPAGE_ALLOWED_HOSTS an.

Häufige Fragen

Warum sehe ich nach dem Start nur Beispielgruppen?

Homepage legt fehlende Konfigurationsdateien beim ersten Start mit Beispielinhalten an. Das ist kein Fehler. Ersetzen Sie den Inhalt der services.yaml durch Ihre Dienste, die Änderung ist nach dem Neuladen der Seite sichtbar.

Wie ermittle ich die richtige PUID und PGID auf meinem Synology NAS?

Per SSH mit id benutzername. Die Ausgabe lautet etwa uid=1026(admin) gid=100(users). Der erste angelegte Benutzer hat auf Synology meist die UID 1026, die Gruppe „users“ die GID 100.

Kann Homepage andere Docker-Container automatisch erkennen?

Ja. Mit der Docker-Verbindung in docker.yaml erscheinen Container mit Labels wie homepage.name, homepage.group und homepage.href automatisch, auch aus anderen Compose-Projekten. Der Socket-Proxy sieht alle Container des NAS.

Braucht Homepage eine Anmeldung?

Im Heimnetz ist der Betrieb ohne Anmeldung üblich. Seit Version 2.0 lässt sich eine Anmeldung per Passwort (HOMEPAGE_AUTH_ENABLED, HOMEPAGE_AUTH_SECRET, HOMEPAGE_AUTH_PASSWORD, HOMEPAGE_EXTERNAL_URL) oder per OIDC aktivieren. Für den Zugriff aus dem Internet empfiehlt das Projekt zusätzlich einen Reverse Proxy mit TLS oder ein VPN, da es Passwortversuche nicht begrenzt. Für zentrale Anmeldung eignet sich ein SSO-Dienst (Details: Single Sign-On für den Self-Hosted-Stack: Authentik vs. Authelia).

Wie aktualisiere ich Homepage auf eine neue Version?

Per SSH im Projektordner:

cd /volume1/docker/homepage
sudo docker compose pull
sudo docker compose up -d

Die Konfigurationsdateien im Volume bleiben erhalten. Für feste Versionen ersetzen Sie :latest durch einen Tag wie :v2.4.0 und prüfen vor dem Wechsel die Release Notes.

Kann ich Homepage mit HTTPS betreiben?

Homepage bietet kein natives HTTPS. Richten Sie unter Systemsteuerung → Anmeldeportal → Erweitert → Reverse Proxy eine Regel von HTTPS 443 auf localhost:3000 ein und tragen Sie den Hostnamen zusätzlich in HOMEPAGE_ALLOWED_HOSTS ein. Alternativ nutzen Sie den Nginx Proxy Manager auf der Synology.

Was ist der Unterschied zwischen Homepage und Glance?

Homepage bietet über 150 Service-Widgets mit API-Anbindung und Docker-Label-Discovery, geeignet als Übersicht für viele Container. Glance setzt stärker auf RSS-Feeds, Nachrichten und Monitoring-Kacheln und kommt mit einer einzigen YAML-Datei aus.

Fazit

Homepage läuft auf dem Synology NAS als schlankes Projekt ohne Datenbank und bündelt alle Dienste auf einer Seite. Entscheidend sind ein korrekter Eintrag in HOMEPAGE_ALLOWED_HOSTS, der richtige Eigentümer des Config-Ordners und die Docker-Anbindung über den Socket-Proxy statt über den direkten Socket. Mit diesen drei Punkten ist das Dashboard in etwa 20 Minuten eingerichtet.

Weiterführende Anleitungen und Quellen

Offizielle Dokumentation: Homepage Docker-Installation | Homepage Docker-Konfiguration und Socket-Proxy | GitHub-Repository gethomepage/homepage