Synology¶
Führen Sie AIO als ein Container-Manager-Projekt aus. Fügen Sie keine zusätzlichen Dienste oder eigene Sonarr-/Radarr-/Download-Container daneben hinzu.
Image: ghcr.io/qballjos/aio-media-server-manager:latest
Ihr DSM muss linux/amd64- oder linux/arm64-Images ausführen können.
Ordner und das Projekt anlegen (SSH)¶
Aktivieren Sie SSH (Systemsteuerung → Terminal und SNMP → SSH-Dienst aktivieren), dann:
ssh admin@<nas-ip>
Das Installationsskript legt /volume1/docker/aio-media-manager an (mit config/ und backups/) und einen Datenbaum im DSM-Benutzer-Home (File Station → Home → aio-media-manager mit downloads/ und media/). Dieser Pfad ist ein echtes Benutzer-Home, deshalb kann DSM ihn anzeigen. Ein bloßer Ordner /volume1/data ist kein freigegebener Ordner und erscheint nicht in File Station; das Skript erneut ausführen verschiebt diesen Baum ins Home, falls er noch existiert. Downloads und Medien bleiben ein Bind (/data), damit *Arr Hardlinks nutzen kann. Config-Sicherungen gehen auf den Mount /backups; nehmen Sie diesen Ordner in eine Hyper-Backup-Aufgabe auf, oder zeigen Sie BACKUPS= auf ein anderes Volume.
Der Benutzer-Home-Dienst muss an sein (Systemsteuerung → Benutzer und Gruppe → Erweitert). SSH als der DSM-Benutzer, dessen Home die Bibliotheken halten soll, oder setzen Sie HOME_USER=.
id
curl -fsSL https://raw.githubusercontent.com/Qballjos/aio-media-server-manager/main/deploy/synology/install.sh | sudo sh
Wenn SSH admin ist, Home aber einem anderen DSM-Benutzer gehören soll:
id media
sudo HOME_USER=media PUID=1026 PGID=100 sh -c 'curl -fsSL https://raw.githubusercontent.com/Qballjos/aio-media-server-manager/main/deploy/synology/install.sh | sh'
Anderes Volume oder andere Pfade:
sudo VOLUME=/volume2 \
HOME_USER=media \
BACKUPS=/volume1/backups/aio-media-manager \
PUID=1026 PGID=100 \
sh -c 'curl -fsSL https://raw.githubusercontent.com/Qballjos/aio-media-server-manager/main/deploy/synology/install.sh | sh'
Um Bibliotheken auf einem freigegebenen DSM-Ordner statt im Home zu lassen, setzen Sie DATA= auf diesen Ordner (weiterhin ein Elternordner für downloads und media):
sudo DATA=/volume1/media/aio-media-manager \
PUID=1026 PGID=100 \
sh -c 'curl -fsSL https://raw.githubusercontent.com/Qballjos/aio-media-server-manager/main/deploy/synology/install.sh | sh'
Die erzeugte Datei ist /volume1/docker/aio-media-manager/docker-compose.yml (kein build:-Schlüssel — Container Manager holt GHCR). Eine statische Kopie liegt in synology/docker-compose.yml.
Wenn GHCR privat ist: sudo docker login ghcr.io, bevor Sie das Projekt starten.
In Container Manager importieren¶
- Öffnen Sie Container Manager → Projekt → Erstellen.
- Projektname:
aio-media-manager - Pfad:
/volume1/docker/aio-media-manager(derselbe Ordner, den das Skript genutzt hat). - Quelle: nutzen Sie die vorhandene
docker-compose.yml(fügen Sie keine zweite Compose-Datei ein und keine weiteren Dienste hinzu). - Starten Sie das Projekt.
Die Oberfläche sollte einen einzelnen Dienst aio-media-manager zeigen. Öffnen Sie http://<nas-ip>:8080 für den Manager. Oberfläche öffnen auf Katalogkarten nutzt die App-Ports (Sonarr 8989, Radarr 7878, …), die das Projekt-Compose jetzt veröffentlicht. Wenn Sie Compose vor dieser Änderung erzeugt haben, kopieren Sie die ports:-Liste aus synology/docker-compose.yml in die Projektdatei und erstellen Sie den Container neu.
Das Installationsskript hängt Host-/sys auch nur lesend unter /host/sys ein, damit die Server-Karte auf Start den Netzwerkverkehr des NAS zeigt. Wenn das Projekt-Compose davor erzeugt wurde, fügen Sie - /sys:/host/sys:ro unter volumes: ein und erstellen Sie neu. Ohne diese Zeile ist die Grafik nur der Verkehr dieses Containers. Installierte Apps aktualisieren Sie später unter Einstellungen → Updates (Zeitpläne standardmäßig aus). Das Projekt neu zu erstellen aktualisiert AIO.
Zum Starten über SSH statt über die Oberfläche:
sudo docker compose -f /volume1/docker/aio-media-manager/docker-compose.yml pull
sudo docker compose -f /volume1/docker/aio-media-manager/docker-compose.yml up -d
Danach listet Container Manager es weiter, wenn der Projektpfad übereinstimmt.
Hardware-Transkodierung¶
Wenn /dev/dri existiert, fügen Sie diesen Block unter aio-media-manager in die Projekt-Compose-Datei ein, erstellen Sie neu und starten Sie das Projekt:
devices:
- /dev/dri:/dev/dri
ls -l /dev/dri
VPN (qBittorrent, Prowlarr, Flaresolverr)¶
sudo mkdir -p /volume1/docker/aio-media-manager/config/vpn
# scp wg0.conf into that directory
Setzen Sie AMM_VPN_ENABLED=true im Projekt-Compose und starten Sie das Projekt erneut. Solange das VPN an ist, können Prowlarr, qBittorrent und Flaresolverr das Haus-WAN nicht nutzen: sie verlassen das Netz nur durch den Tunnel. Ist der Tunnel beim Boot down, warten sie; AIO versucht das VPN erneut und startet sie, sobald der Handshake zurück ist. Ein lokaler DNS-Cache für diese Apps (an den Tunnel gebunden) verringert Indexer-Fehler durch kurze DNS-Timeouts. Der Synology-Kernel hat oft kein WireGuard-Modul; das Appliance-Image enthält wireguard-go als Rückfall und legt /dev/net/tun an, wenn es fehlt. Das funktioniert nur, wenn das Projekt privileged: true bleibt (das Installationsskript setzt das). Erstellen Sie den Container nach dem Holen eines aktuellen Images neu und speichern Sie das VPN danach unter Einstellungen → Netzwerk. OpenVPN nutzt denselben Geräteknoten und braucht ebenfalls den privilegierten Modus. Unter DSM kann die Synology-ACL die VPN-App-UID (910) nach chown blockieren; wenn diese Apps ihre Config-Ordner nicht schreiben können, löschen Sie die ACL auf dem Host-Pfad wie in den Logs beschrieben.
Cloudflare Tunnel¶
Fügen Sie keinen zweiten Projektdienst hinzu. Schreiben Sie das Token auf das NAS und aktivieren Sie den Tunnel danach unter Einstellungen → Netzwerk (über Neustarts hinweg gespeichert). Optional setzen Sie AMM_CLOUDFLARE_TUNNEL_ENABLED=true im Projekt-Compose. Siehe CLOUDFLARE.md.
sudo mkdir -p /volume1/docker/aio-media-manager/config/cloudflare
sudo tee /volume1/docker/aio-media-manager/config/cloudflare/tunnel.token >/dev/null <<'EOF'
eyJ...paste-token...
EOF
sudo chmod 600 /volume1/docker/aio-media-manager/config/cloudflare/tunnel.token
Rechte¶
PUID/PGID in der Compose-Datei müssen zum chown passen, den das Skript angewendet hat. Wenn Apps nicht schreiben können, korrigieren Sie den Besitzer über SSH, statt als root zu laufen.
Spenden
🤖 KI schreibt etwas Code. Ich mache ihn kaputt. Wir reparieren ihn zusammen.
Kein Kleingeld übrig? Geben Sie stattdessen einen Stern auf GitHub. Das füttert das Ego, und das ist fast genauso gut.