Hallo zusammen
Nach dem ich viel Tage damit verbracht habe NextCloud auf meiner Synology (DSM 7.2) zum laufen zu bringen und dabei von einem Schei..haufen in den nächsten getreten bin, habe ich mich dazu entschlossen, meine jetzt volllauffähige Konfiguration und den Weg dorthin zu veröffentlichen, damit Euch mein Horror erspart bleibt.
Die größten Stolpersteine waren die Einstellung der Rechte.
Mein Ziel war es NextCloud so zu installieren, daß:
So sieht die Umgebung bei mir aus:

Folgendes setze ich Voraus:
Vorbereitung:
Die Volltextsuch braucht irgendwie mehr Platz als die Synology in den Grundeinstellungen hergibt. Das kann man fixen mit dem Befehl
Kernel Map Count
das setzt sich aber nach jedem Start der Synology wieder auf die Grundeinstellungen zurück. Daher muss man das im Aufgabenplaner so einstellen das der Befehl nach jedem Start ausgeführt wird.
Systemsteuerung -> Aufgabenplaner -> Erstellen -> Ausgelöste Aufgabe ->


Bild 08 und 09
Das sollte es gewesen sein, viel Spaß
Gruß
Suffi
Nach dem ich viel Tage damit verbracht habe NextCloud auf meiner Synology (DSM 7.2) zum laufen zu bringen und dabei von einem Schei..haufen in den nächsten getreten bin, habe ich mich dazu entschlossen, meine jetzt volllauffähige Konfiguration und den Weg dorthin zu veröffentlichen, damit Euch mein Horror erspart bleibt.
Die größten Stolpersteine waren die Einstellung der Rechte.
Mein Ziel war es NextCloud so zu installieren, daß:
- Nextcloud Office läuft
- Eine Volltextsuche integriert ist
- Ordner und Dateien auf dem NAS in NextCloud vollumfänglich bearbeitet, geändert oder ergänzt werden können
So sieht die Umgebung bei mir aus:

Folgendes setze ich Voraus:
- Es besteht eine Internetverbindung mit einer festen IP oder DDN und diese zeigt auf euer NAS. Bsp: my.site.com
- Die Installation erfolgt über den Container- Manger als Projekt
- Die mariaDB ist bereits in einem Docker-Container installiert und vollfunktionsfähig.
Bei mir läuft die mariaDB in ihrem Netzwerk: mariadb_default (den NW-Name bekommt ihr über einen Click auf den Containernamen heraus) - Der phpmyadmin ist in Docker installiert
Vorbereitung:
- Die Ordner, die in NextCloud bearbeitbar sein sollen benötigen exklusive Schreibrechte für den User mit dem Nextcloud erstellt wird.
Bsp: in der YAML steht der User PUID:1026 PGID: 100 Hinter den ID´s steht ein Name bei mir: Thomas. Eure ID bekommt ihr über die ssh-Console mit dem Befehl: id heraus)
Um diese exklusive Rechte zu erteilen zu können, muss der Ordner in der Systemsteuerung -> Freigegebener Ordner ->Reiter Aktion -> Konvertierung zu Windows ACL grau sein, ist er das nicht dann anklicken und der Ordner wird konvertiert.
Bild 02
Danach könnt ihr den User auswählen oder anlegen

Bild 03
- Jetzt müssen die Revers Proxy Adressen angelegt werden, es werden 2 Stück benötigt nextcloud.my.site.com und office.my.site.com.
Systemsteuerung -> Anmeldeportal -> Erweitert dann Erstellen

Bild 41.
Hostname: nextcloud.my.site.com Port: z.B 8080
2. Hostname: office.my.site.com Port: 9980 (muss bleiben)
Beide reverse Proxys benötigen einen web-socket, der wird hier eingestellt:

Bild 04a
- Jetzt ganz wichtig ein Zertifikat über Let´s Encrypt holen oder erweitern, sonst klappt gar nichts. NextCloud funktioniert anscheinend nicht ohne Zertifikat.
- Nun kann auf der mariaDB eine Datenbank und ein User erstellt werden da ich nicht der eigentliche Linunx und SQL-freak bin mache ich es über phpmyadmin.
Anmeldung mit root dan auf den Reiter Datenbanken -> Neue Datenbank anlegen.
Name: nextcloud
Kollation: utf8m4_general_ci

Bild 05 DB
wieder zurück und nun den Reiter Benutzerkonten klicken.
Benutzerkonto hinzufügen: nextcloud
Es sollte dann so aussehen

Bild 06 fertig
- Folgende Ordner im Docker-Ordner anlegen (Achtung muss PUID:1026 PGID: 100 sein)

Bild 07 - Ein Projekt im Container-Manager erstellen und den Code compose.yaml einfügen.
-
Code:
version: "3.9" services: nextcloud: image: lscr.io/linuxserver/nextcloud:latest container_name: nextcloud restart: unless-stopped ports: - "8888:80" environment: - PUID=1026 - PGID=100 - TZ=Europe/Berlin - MYSQL_HOST=mariadb - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD=XXXXXXXX #Dein PW - REDIS_HOST=nextcloud-redis - NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.my.site.com 192.168.xx.xx # Deine Daten einfügen - TRUSTED_PROXIES=127.0.0.1 192.168.xx.xx # Deine Daten einfügen - OVERWRITEHOST=nextcloud.my.site.com # Deine Daten einfügen - OVERWRITEPROTOCOL=https volumes: - /volume1/docker/nextcloud/config:/config - /volume1/docker/nextcloud/data:/data # Deine lokalen Synology-Mounts - /volume1/Daten:/data/NAS_Daten:rw # hier können weitere ordner eingefügt werden healthcheck: test: ["CMD", "curl", "-f", "http://localhost/login"] interval: 30s timeout: 10s retries: 5 start_period: 30s depends_on: redis: condition: service_healthy elasticsearch: condition: service_healthy networks: - mariadb_default redis: image: redis:alpine container_name: nextcloud-redis restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 3 networks: - mariadb_default cron: image: lscr.io/linuxserver/nextcloud:latest container_name: nextcloud-cron restart: unless-stopped volumes: - /volume1/docker/nextcloud/config:/config - /volume1/docker/nextcloud/data:/data entrypoint: /bin/sh -c "while true; do php -f /app/www/public/cron.php; sleep 300; done" healthcheck: test: ["CMD-SHELL", "ps aux | grep cron.php | grep -v grep"] interval: 1m timeout: 10s retries: 3 networks: - mariadb_default code: image: collabora/code:latest container_name: nextcloud-code restart: unless-stopped privileged: true ports: - "9980:9980" environment: - aliasgroup1=https://nextcloud.my.site.com:443 # hier deine Daten eingeben - domain=nextcloud\\.my\\.site\\.com # hier deine Daten eingeben - extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:termination.strict_isolation=false --o:security.capabilities=false --o:security.seccomp=false healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9980/hosting/discovery"] interval: 30s timeout: 10s retries: 5 start_period: 30s networks: - mariadb_default elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.17.10 container_name: nextcloud-search restart: unless-stopped environment: - discovery.type=single-node - xpack.security.enabled=false - "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 2GB RAM ist der "Sweet Spot" # ggf 2 g auf 512m reduzieren /ich habe 32G zu Verfügung volumes: - /volume1/docker/nextcloud/elasticsearch:/usr/share/elasticsearch/data command: > sh -c "if [ ! -d plugins/ingest-attachment ]; then bin/elasticsearch-plugin install --batch ingest-attachment; fi; /usr/local/bin/docker-entrypoint.sh elasticsearch" healthcheck: test: ["CMD-SHELL", "curl -s http://localhost:9200/_cluster/health | grep -q '\"status\":\"green\"\\|\"status\":\"yellow\"'"] interval: 40s # Etwas mehr Zeit wegen Plugin-Installation timeout: 10s retries: 15 # Erhöht auf 15, damit er beim ersten Start nicht aufgibt start_period: 60s # Gibt dem Container 60 Sek. Zeit, bevor der erste Check zählt networks: - mariadb_default networks: mariadb_default: external: true
- Container erstellen.
Wenn alles gut geht dauert die Installation ca. 10 minuten.
- https://nextcloud.my.site.com
- Nextcloud Office herunterladen und aktivieren

Bild 12
- Elasticsearch Platform, Full text search, Full text search – Files herunterladen und aktivieren

Bild 10
- External storage support aktivieren

Bild 11
- über ssh folgende Befehle eingeben
-
Code Regionale EinstellungenCode:
docker exec --user 1026 nextcloud php /app/www/public/occ config:system:set default_phone_region --value="DE" docker exec --user 1026 nextcloud php /app/www/public/occ config:system:set overwriteprotocol --value="https" -
Collabora AnbindungenCode:
docker exec --user 1026 nextcloud php /app/www/public/occ config:app:set richdocuments wopi_url --value="https://office.my.site.cm" docker exec --user 1026 nextcloud php /app/www/public/occ config:app:set richdocuments wopi_allow_local_ip --value="yes"
Volltextsuche startenCode:docker exec --user 1026 nextcloud php /app/www/public/occ fulltextsearch:index
Die Volltextsuch braucht irgendwie mehr Platz als die Synology in den Grundeinstellungen hergibt. Das kann man fixen mit dem Befehl
Code:
sysctl -w vm.max_map_count=262144
das setzt sich aber nach jedem Start der Synology wieder auf die Grundeinstellungen zurück. Daher muss man das im Aufgabenplaner so einstellen das der Befehl nach jedem Start ausgeführt wird.
Systemsteuerung -> Aufgabenplaner -> Erstellen -> Ausgelöste Aufgabe ->


Bild 08 und 09
Das sollte es gewesen sein, viel Spaß
Gruß
Suffi


