📦 Nextcloud Setup¶
📁 1. Verzeichnisse und Berechtigungen¶
Dieses Setup ermöglicht eine saubere Medienstruktur für
- automatische Uploads (z. B. von Handys)
- Syncronisation über Nextcloud
- Zugriff durch Immich und Plex.
📁 Verzeichnisse erstellen:
# 📦 Nextcloud-Verzeichnisse (Daten, Konfiguration, Web-Dateien)
sudo mkdir -p /data/nextcloud/daten/{html,data,config,apps}
# 🎞️ Medienverzeichnisse für geteilte Nutzung durch Nextcloud, Immich und Plex
sudo mkdir -p /data/medien/{bilder,videos}
¶
# 📦 Nextcloud-Verzeichnisse (Daten, Konfiguration, Web-Dateien)
sudo mkdir -p /data/nextcloud/daten/{html,data,config,apps}
# 🎞️ Medienverzeichnisse für geteilte Nutzung durch Nextcloud, Immich und Plex
sudo mkdir -p /data/medien/{bilder,videos}
🔐 Rechte setzen
# 🧩 Nextcloud: Eigentümer ist www-data (Webserver/Containernutzer)
sudo chown -R www-data:www-data /data/nextcloud/daten
# Nur Nextcloud (und ggf. Container-Gruppe) darf lesen & schreiben
sudo chmod -R 770 /data/nextcloud/daten
# 🔄 Medienordner: Nextcloud + media-Gruppe (z. B. Plex, Immich)
sudo chown -R www-data:media /data/medien
# Schreiben erlaubt für www-data und Mitglieder der Gruppe media
sudo chmod -R 775 /data/medien
🧾 Erläuterung der Berechtigungen
Ordner | Eigentümer / Gruppe | Rechte | Erklärung |
---|---|---|---|
/data/nextcloud/daten |
www-data:www-data |
770 |
Nur Nextcloud selbst darf lesen & schreiben – sicher, keine Fremdzugriffe |
/data/medien |
www-data:media |
775 |
Dienste wie Plex & Immich dürfen mitlesen und -schreiben über die Gruppe |
/data/medien/bilder , /videos |
www-data:media |
775 |
Uploads über Nextcloud & Nutzung durch Drittdienste ohne Konflikte |
💡 Hinweise zur Wiederverwendung
- Bei Neuinstallationen nur die Verzeichnisse erhalten, Rechte ggf. erneut setzen
- Die media-Gruppe sollte in Plex/Immich-Container über user: "1000:1010" (UID:GID) eingebunden sein
- Rechte sind so gewählt, dass Sicherheit & gemeinsame Nutzung im Balance sind
📱 Anwendung: Uploads per Nextcloud-App
- In der Nextcloud-App (Android/iOS):
- Kamera-Uploads aktivieren
- Zielordner:
/data/medien/bilder
für Fotos/data/medien/videos
für Videos
Diese Ordner erscheinen durch die externe Speicheranbindung automatisch im Webinterface und in der App.
🎞️ Zugriff durch Immich & Plex
Dienst | Pfad | Zugriff |
---|---|---|
Immich | /data/medien/bilder |
Lesen + Schreiben |
Plex | /data/medien/bilder und /videos |
Lesen |
⚠️ Container für Immich und Plex müssen mit GID zur Gruppe media
laufen (z. B. user: "1000:1010"
in der docker-compose.yml
).
💾 Backup-Tipp¶
Die Ordner unter /data/medien/
liegen außerhalb von Nextclouds internem Datenverzeichnis
→ Sie müssen explizit in Backup-Skripten oder Tools berücksichtigt werden!
Empfohlen:
/data/nextcloud/
(für Konfiguration & Nutzerdaten)/data/medien/
(für gemeinsame Medieninhalte)
🧾 2. Docker Compose Datei erstellen¶
sudo nano /data/core_config/docker-compose-nextcloud.yml
version: "3.8"
services:
db:
image: mariadb:10.11
container_name: nextcloud-db
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- /data/nextcloud/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=geheim
- MYSQL_PASSWORD=ganzgeheim
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
networks:
- homelab
redis:
image: redis:alpine
container_name: nextcloud-redis
restart: unless-stopped
networks:
- homelab
nextcloud:
image: nextcloud
container_name: nextcloud
restart: unless-stopped
depends_on:
- db
- redis
volumes:
- /data/nextcloud/daten/html:/var/www/html
- /data/nextcloud/daten/apps:/var/www/html/custom_apps
- /data/nextcloud/daten/config:/var/www/html/config
- /data/nextcloud/daten/data:/var/www/html/data
- /data/medien:/data/medien
environment:
- MYSQL_PASSWORD=ganzgeheim
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=nextcloud-db
- REDIS_HOST=redis
networks:
- homelab
cron:
image: nextcloud
container_name: nextcloud-cron
restart: unless-stopped
entrypoint: /cron.sh
depends_on:
- db
volumes:
- /data/nextcloud/daten/html:/var/www/html
- /data/nextcloud/daten/apps:/var/www/html/custom_apps
- /data/nextcloud/daten/config:/var/www/html/config
- /data/nextcloud/daten/data:/var/www/html/data
- /data/medien:/data/medien
networks:
- homelab
networks:
homelab:
external: true
▶️ 3. Container starten¶
cd /data/core_config
sudo docker compose -f docker-compose-nextcloud.yml up -d
🌍 4. DNS-Einträge¶
In deinem DNS-Provider:
Subdomain | Typ | Ziel |
---|---|---|
cloud | A | deine öffentliche IP |
--- |
🌐 5. Nextcloud im Nginx Proxy Manager¶
Proxy Host anlegen:
Feld | Wert |
---|---|
Domain Names | cloud.pinguinbox.de |
Scheme | http |
Forward Hostname | nextcloud |
Forward Port | 80 |
Block Exploits | ✅ aktiviert |
Websockets Support | ✅ aktiviert |
SSL aktivieren:
Feld | Einstellung |
---|---|
SSL-Zertifikat | Request new certificate |
E-Mail-Adresse | deine Mailadresse |
Force SSL | ✅ |
HTTP/2 Support | ✅ |
HSTS Enabled | ✅ empfohlen |
⚠️ im Tab Advanced eintragen
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
✅ 6. Zugriff & Einrichtung¶
Nextcloud Setup durchführen (Admin, DB, Redis konfigurieren)
Im Browser unter https://cloud.pinguinbox.de den Installationsassistenten ausführen
- Admin-Benutzer + Passwort festlegen
- Datenbank: nextcloud, Nutzer: nextcloud, Passwort: geheim
- Datenverzeichnis: /var/www/html/data
🔧 7. HTTPS an Nextcloud weitergeben¶
Damit Nextcloud weiß, dass es sicher per HTTPS betrieben wird (z. B. für den Desktop-Client und Admin-Warnungen), müssen folgende Einträge in die Konfigurationsdatei eingefügt werden:
Pfad zur Datei:
sudo nano /data/nextcloud/daten/config/config.php
Innerhalb des $CONFIG = array (
Blocks suche zuerst nach dieser Zeile und entferne sie, falls vorhanden:
'overwrite.cli.url' => 'http://cloud.pinguinbox.de',
Dann füge stattdessen folgenden Block ein:
'overwrite.cli.url' => 'https://cloud.pinguinbox.de',
'overwriteprotocol' => 'https',
'trusted_proxies' => ['nginx-proxy-manager'],
'maintenance_window_start' => 3,
'default_phone_region' => 'DE',
🔧 Erklärung der wichtigsten Einträge
| Eintrag | Bedeutung |
|-----------------------------------------------|---------------------------------------------------------------------------|
| 'overwrite.cli.url' => 'https://...'
| Erzwingt HTTPS als Basis-URL in CLI & Cron |
| 'overwriteprotocol' => 'https'
| Erzwingt HTTPS bei allen generierten URLs |
| 'trusted_proxies' => ['nginx-proxy-manager', $_SERVER['REMOTE_ADDR']]
| Erlaubt Anfragen vom Nginx Proxy (wichtig für HTTPS & X-Forwarded-Header)|
| 'default_phone_region' => 'DE'
| Setzt die Region für Telefonnummern, z. B. in Kontakten |
| 'maintenance_window_start' => 3
| Legt die Startzeit für geplante Aufgaben (Cron) fest (Stunde, 0–23) |
speichern und mit folgendem Befehl den Container neu starten:
sudo docker restart nextcloud
Diese Einstellungen beheben typische Warnungen im Admin-Bereich und sorgen für eine funktionierende Verbindung im Nextcloud-Desktop-Client.
🧭 8. Cron Dienste¶
🕓 Crontab auf dem Host öffnen
sudo crontab -e
*/5 * * * * docker exec -u www-data nextcloud-cron php -f /var/www/html/cron.php
docker exec -u www-data nextcloud-cron php -f /var/www/html/cron.php
¶
docker exec -u www-data nextcloud-cron php -f /var/www/html/cron.php
💡 9. Netcloud User Config¶
Datei zum bearbeiten öffnen:
sudo nano /data/nextcloud/daten/config/config.php
$CONFIG = array (
'defaultapp' => 'files',
);
öffnet nach dem Einloggen den Dataimanager → kein Neustart nötig, wirkt beim nächsten Login sofort.
10 Verzeichnisse einbinden¶
🔗 Externen Speicher in Nextcloud einbinden
**🔧 1. App "External Storage Support"aktivieren **
- Avatar (Menü) → Apps
- Kategorie: Integration bzw. Einbindung
- Aktiviere: „Externer Speicher“ App "External Storage Support"
🌐 2. Speicher einrichten
- Avatar (Menü) → persönliche Einstellungen
- KatLinkes Menüe → Externer Speicher
Zweck | Feld | Wert |
---|---|---|
Bilder-Ordner | Speicher | Lokales Verzeichnis |
Ordnername | Bilder | |
Konfiguration | /data/medien/bilder | |
Authentifizierung | Keine Anmeldung erforderlich | |
Verfügbar für | marco.benz@t-online.de (z. B.) | |
Videos-Ordner | Speicher | Lokales Verzeichnis |
Ordnername | Videos | |
Konfiguration | /data/medien/videos | |
Authentifizierung | Keine Anmeldung erforderlich | |
Verfügbar für | marco.benz@t-online.de (z. B.) |
📌 Hinweis zur Weiterentwicklung¶
Empfohlen:
- Automatische Backups
- Let's Encrypt Auto-Update prüfen
- Desktop-Client für Datei-Synchronisierung installieren