Zum Inhalt

📦 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}

🔐 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
einfügen:

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
den Cronjob eintragen:

*/5 * * * * docker exec -u www-data nextcloud-cron php -f /var/www/html/cron.php
🔁 Optional: Testen mit:

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
Eintrag zu CONFIG = array hinzufügen:

$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