Nextcloud Server Docker | Einrichtung +https: Let’s Encrypt [ssl]

 

Um mit meinem NAS Kontakte, Termine und Fotos zu synchronisieren, habe ich Nextcloud getestet und damit anderen Cloudanbietern fĂŒr meine privaten Daten ein StĂŒck weit den RĂŒcken gekehrt. Dank Docker ist die Installation einfacher und flexibler denn je und ermöglicht es, Nextcloud auf einer beinahe beliebigen Hardware zu betreiben.

Nextcloud-Server Profil:

SoftwareServer
GitHubhttps://github.com/nextcloud/server
aktuelle Version 28.0.4
gefunden01.04.2024

Docker Basics

Docker ermöglicht es, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabhÀngige isolierte Umgebung:
Beim ersten Start eines Containers, lÀdt Docker selbststÀndig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker

Damit Nextcloud sicher vom Internet erreicht werden kann, setze ich Traefik als Let's Encrypt Reverse-Proxy ein. Der Reverse-Proxy stellt eine verschlĂŒsselte HTTPS-Verbindung zur VerfĂŒgung und ermöglicht es mehrere Websites auf einem Server zu betreiben.

Alternativ zu einem Reverse-Proxy kann auch ein Cloudflare-Tunnel fĂŒr das Veröffentlichen von Webservices aus dem eigenen Netzwerk verwendet werden:

Schritt fĂŒr Schritt Nextcloud in Docker inklusive Zugriff vom Internet

Hardwareanforderung:
  1. FĂŒr die Docker-Installation kann eine nahezu beliebige Hardware verwendet werden. Zum Beispiel ein virtueller Server eines Providers, oder fĂŒr zu Hause: ein Mini-PC, Notebook, MAC, ein NAS: QNAP, Synology oder eine andere Hardware mit x68-64 Architektur auf der sich Windows oder Linux installieren lĂ€sst.

Schematische Darstellung: Zugriff vom Internet
Voraussetzungen fĂŒr den Internetzugriff:
  1. Eigene registrierte Domain, siehe Domain und dessen Verwaltung.
  2. Cloudflare oder Reverse Proxy:
    1. Cloudflare-Tunnel Service
    2. oder alternativ:
    3. Port-Forwarding und Reverse Proxy mit Let's Encrypt-Zertifikat
    siehe auch: Cloudflare oder Reverse Proxy

Als Basis fĂŒr Nextcloud habe ich ursprĂŒnglich folgendes GitHub-Projekt eingesetzt und spĂ€ter adaptiert: https://github.com/ichiTechs/Dockerized-SSL-NextCloud-with-MariaDB. Das Projekt besteht im Wesentlichen aus zwei Dateien, welche ich in angepasster Version hier beschreibe. Der Hauptgrund fĂŒr die Anpassung war die Trennung des Reverse-Proxys vom Nextcloud-Setup, wodurch mehrere Webdienste ĂŒber die gleiche IP-Adresse und am selben Host mit einem jeweiligen SSL Zertifikat betrieben werden können. Die Nextcloud-Installation lĂ€uft in meinem Fall auf einer Hardware, bei mir zu Hause.

Container fĂŒr Nextcloud:

  1. docker-compose.yml und nginx.conf anlegen
  2. Container starten

docker-compose.yml

Die Datei docker-compose.yml beinhaltet die Konfiguration fĂŒr die Container, wie z. B. den Datenbank-Benutzer, die DomĂ€ne und Netzwerkeinstellungen fĂŒr die Kommunikation der einzelnen Container untereinander. Die Datei sollte entsprechend vor dem ersten Start angepasst werden (Bereich labels). Wie bereits erwĂ€hnt, wird fĂŒr das hier beschriebene Setup neben Docker und dem Traefik-Reverse-Proxy ein DNS-Eintrag auf die IP der Nextcloud-Installation vorausgesetzt. 

Inhalt der Datei: docker-compose.yml

[+]
services:
  web:
    image: nginx
    container_name: nextcloud_webserver
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    links:
      - app
    volumes_from:
      - app
   #FĂŒr einen direkten Test-Zugriff, in den folgenden 2 Zeilen "#" entfernen. Aufruf: http://localhost:83 oder http://ServerIP:83
    #ports:   
      #- "83:80" 

   #Labels fĂŒr ReverseProxy, siehe: https://www.libe.net/traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.next.rule=Host(`next.domain.tld`)"      
      - "traefik.http.routers.next.entrypoints=web"
      - "traefik.http.routers.next.entrypoints=websecure"
      - "traefik.http.routers.next.tls.certresolver=myresolver"  
    networks:
      - nextcloud
    restart: always
  app:
    image: nextcloud:fpm
    container_name: nextcloud_fpm
    links:
      - db
      - redis
    volumes:
      - ./apps:/var/www/html/apps
      - ./config:/var/www/html/config
      - ./data:/var/www/html/data
    networks:
      - nextcloud
    restart: always
  redis:
    image: redis
    container_name: nextcloud_redis
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - ./redis:/data
    entrypoint: redis-server --appendonly yes
    networks:
      - nextcloud
    restart: always
  db:
    image: mariadb:10.5
    container_name: nextcloud_db
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=???
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=???
    networks:
      - nextcloud
    restart: always

#Ohne dem Einsatz eines Reverse Proxy (https://www.libe.net/traefik) fehlt voraussichtlich das Netzwerk webproxy 
#und die folgenden Zeilen können entfernt oder auskommentiert werden. Alternativ kann das Netzwerk mit "docker network create webproxy" erstellt werden
networks:
  nextcloud:
    name: webproxy
    external: true

Die Datei verwendet keine Volumes, sondern Unterordner unterhalb der Datei docker-compose.yml.  Siehe: Docker Daten speichern: Docker Volumes vs. Host-Ordner ZusÀtzlich wird in der docker-compose-Datei noch eine nginx-Konfig-Datei eingebunden, diese wird im selben Ordner erwartet:

nginx.conf

Als Inhalt fĂŒr die Datei nginx.conf kann am einfachsten folgendes Beispiel verwendet werden: https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/nginx.conf

Erstellen der Konfiguration und Start der Container

Folgender Befehl erstellt die Container laut der in der docker-compose.yml-Konfiguration.

docker-compose up -d

Container hinzufĂŒgen / docker-compose.yml anpassen

Collabora hinzufĂŒgen

Collabora ist eine Online-Version von LibreOffice und ermöglicht es, Office-Dokumente online ĂŒber den Webbrowser zu erstellen oder gemeinsam zu bearbeiten. Voraussetzung fĂŒr die Nutzung aus dem Internet ist ein zusĂ€tzlicher DNS-Name, also ein A-Record auf die öffentliche IP des Servers und ein zusĂ€tzliches Let`s Encrypt-Zertifikat. Das Zertifikat wird wiederum von einem Reverse Proxy: Nginx-LetsEncrypt Reverse Proxy oder Traefik ausgestellt und verlĂ€ngert werden.

Um Callabora in Nextcloud zu verwenden, kann folgenden Block in docker-compose.yml angepasst und eingefĂŒgt werden:

[+]
collabora:
 image: collabora/code
 container_name: nextcloud_collabora
 expose:
 - 9980
 cap_add:
 - MKNOD
 environment:
 - domain=next.deineDomain
 - VIRTUAL_HOST=office.deineDomain
 - VIRTUAL_NETWORK=nginx-proxy
 - VIRTUAL_PORT=9980
 - VIRTUAL_PROTO=https
 - LETSENCRYPT_HOST=office.deineDomain
 - LETSENCRYPT_EMAIL=deineEmail-Addresse
 networks:
 - nextcloud
 restart: always

 

Die Konfiguration fĂŒr Collabora wurde nur mit dem Nginx-LetsEncrypt Reverse Proxy getestet, daher ist die Reverse-Proxy-Einstellung im Bereich "environment" und nicht unter "labels" 

OnlyOffice hinzufĂŒgen

Zudem können mit Only-Office Word, Excel oder PowerPoint-Dokumente online bearbeitet werden. Auch hier wird fĂŒr den Zugriff aus dem Internet ein zusĂ€tzlicher DNS-Name vorausgesetzt: Traefik-Reverse-Proxy. Only-Office ist im Vergleich zu Collabora etwas schlanker, da wesentlich mehr Programmlogik im Browser stattfindet. Verglichen mit Collabora hatte ich bisher mit OnlyOffice auch keine VerbindungsabbrĂŒche beim Bearbeiten von Dokumenten und somit Collabora mittlerweile mit OnlyOffice ersetzt.

[+]
  onlyoffice:
     image: onlyoffice/documentserver
     container_name: nextcloud_onlyoffice
     stdin_open: true
     tty: true 
     volumes:
        - ./onlyoffice/data:/var/lib/onlyoffice/documentserver/App_Data 
     expose:
        - '80'
        - '443'
     labels:
      - "traefik.enable=true"
      - "traefik.http.routers.document.rule=Host(`document.domain.tld`)"      
      - "traefik.http.routers.document.entrypoints=web"
      - "traefik.http.routers.document.entrypoints=websecure"
      - "traefik.http.routers.document.tls.certresolver=myresolver"  
      - "traefik.http.middlewares.document-headers.headers.accesscontrolalloworiginlist=*"
      - "traefik.http.middlewares.document-headers.headers.customrequestheaders.X-Forwarded-Proto=https"
      - "traefik.http.routers.document.middlewares=document-headers"
     environment:
        - JWT_ENABLED=true
        - JWT_SECRET=mysecret
        - JWT_HEADER=Authorization
     networks:
        - nextcloud
     restart: always 

Angepasstes docker-compose.yml mit OnlyOffice

[+]
version: '2'

services:
  web:
    image: nginx
    container_name: nextcloud_webserver
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    links:
      - app
    volumes_from:
      - app
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.next.rule=Host(`next.domain.tld`)"      
      - "traefik.http.routers.next.entrypoints=web"
      - "traefik.http.routers.next.entrypoints=websecure"
      - "traefik.http.routers.next.tls.certresolver=myresolver"  
    networks:
      - nextcloud
    restart: always
  app:
    image: nextcloud:fpm
    container_name: nextcloud_fpm
    links:
      - db
      - redis
      - onlyoffice
    volumes:
      - ./apps:/var/www/html/apps
      - ./config:/var/www/html/config
      - ./data:/var/www/html/data
    networks:
      - nextcloud
    restart: always
  redis:
    image: redis
    container_name: nextcloud_redis
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - ./redis:/data
    entrypoint: redis-server --appendonly yes
    networks:
      - nextcloud
    restart: always
 onlyoffice:
     image: onlyoffice/documentserver
     container_name: nextcloud_onlyoffice
     stdin_open: true
     tty: true 
     volumes:
        - ./onlyoffice/data:/var/lib/onlyoffice/documentserver/App_Data 
     expose:
        - '80'
        - '443'
     labels:
      - "traefik.enable=true"
      - "traefik.http.routers.document.rule=Host(`document.domain.tld`)"      
      - "traefik.http.routers.document.entrypoints=web"
      - "traefik.http.routers.document.entrypoints=websecure"
      - "traefik.http.routers.document.tls.certresolver=myresolver"  
      - "traefik.http.middlewares.document-headers.headers.accesscontrolalloworiginlist=*"
      - "traefik.http.middlewares.document-headers.headers.customrequestheaders.X-Forwarded-Proto=https"
      - "traefik.http.routers.document.middlewares=document-headers"
     environment:
        - JWT_ENABLED=true
        - JWT_SECRET=mysecret
        - JWT_HEADER=Authorization
     networks:
        - nextcloud
     restart: always 
  db:
    image: mariadb:10.5
    container_name: nextcloud_db
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=???
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=???
    networks:
      - nextcloud
    restart: always
networks:
  nextcloud:
    external:
      name: webproxy

OnlyOffice leere Dokumente

ACHTUNG: Wenn die Adresse fĂŒr die internen Anforderungen nicht aufgelöst werden kann, werden die Dokumente in NextCloud nicht upgedated, sie befinden sich dann noch im Container, in dem Ordner: /var/lib/onlyoffice/documentserver/App_Data. Aus diesem Grund sollte der Ordner unbedingt auf einen lokalen Ordner gemappt werden, um einen Datenverlust zu vermeiden. Verantwortlich fĂŒr das Updaten der Only-Office-Dokumente in NextCloud ist der Cron-Job, daher ist es auch nicht unwesentlich, dass dieser regelmĂ€ĂŸig lĂ€uft.

Außerdem musste ich in der Nextcloud-Konfiguration ab einer bestimmten Version folgende Zeilen hinzufĂŒgen:

File: /config/config.php

$CONFIG = array (
...
  'onlyoffice' =>
  array (
    'verify_peer_off' => false,
  ),
...

Zudem habe ich auch noch die Option Zwischenversionen bei der Bearbeitung aufbewahren (force save) ausgewÀhlt.

OnlyOffice Unknown error

Nach dem Umstieg von Nginx-LetsEncrypt Reverse Proxy auf Traefik, hatte ich beim Aufruf von Dokumenten das folgende Problem: Unknown error. Press "OK" to reterun to document list

Die Ursache waren fehlende Headers. In Traefik können diese ĂŒber eine Middleware angepasst werden. Die Middleware ist im obigen Beispiel bereits eingefĂŒgt.

...
      - "traefik.http.middlewares.document-headers.headers.accesscontrolalloworiginlist=*"
      - "traefik.http.middlewares.document-headers.headers.customrequestheaders.X-Forwarded-Proto=https"
      - "traefik.http.routers.document.middlewares=document-headers"
...

Wartung

Container updaten

FĂŒr das Update des Containers habe ich mir eine kleine .sh-Datei geschrieben:

docker-compose pull
docker-compose up -d
sleep 20

docker exec --user www-data nextcloud_fpm php occ upgrade
sleep 20
docker exec --user www-data nextcloud_fpm php occ db:add-missing-indices
docker exec --user www-data nextcloud_fpm php occ app:disable twofactor_totp calendar news contacts onlyoffice previewgenerator tasks mail drawio
docker exec --user www-data nextcloud_fpm php occ app:enable twofactor_totp calendar news contacts onlyoffice  previewgenerator tasks mail drawio
docker exec --user www-data nextcloud_fpm php occ maintenance:mode --off
~

Nachdem immer wieder mal Apps gefehlt haben, habe ich diese in dem Skript zuerst deaktiviert und im Anschluss wieder aktiviert.

Ohne dem Befehl "occ upgrade" wĂŒrde das Upgrade beim nĂ€chsten Aufruf der WeboberflĂ€che ĂŒber den Browser initiiert werden:

Files scannen

Sollte Dateien direkt und nicht ĂŒber die WeboberflĂ€che von Nextcloud hinzugefĂŒgt werden, können dies diese mittels Filescan erkannt und hinzugefĂŒgt werden:

docker exec --user www-data nextcloud_fpm php occ files:scan --all

Gesichtserkennung

App: 

docker exec --user www-data nextcloud_fpm php occ recognize:download-models

Geburtstagskalender neu aufbauen

docker exec --user www-data nextcloud_fpm php occ dav:sync-birthday-calendar User

Backup: Datenbank Dump

docker exec db mysqldump --user=root --password=Password -h localhost nextcloud > dump.sql.gz

MariaDB- Upgrade

Nach einem Upgrade der Container sollte eventuell auch ein Blick in die jeweiligen Consolen-Outputs geworfen werden. Als Beispiel wurde in der Datenbank ein Hinweis fĂŒr das Upgrade auf eine neuere Version angezeigt:

[Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name.  Please run mysql_upgrade
[Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name.  Please run mysql_upgrade

Mit dem Befehl "mysql_ugrade -u root -p" im DB-Container konnte ich die Datenbank auf eine neuere Version upgraden:

[+]
root@71fb96934128:/# mysql_upgrade -u root -p
Enter password: 
Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats                                 OK
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.gtid_slave_pos                               OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.index_stats                                  OK
mysql.innodb_index_stats
error    : Table rebuild required. Please do "ALTER TABLE `innodb_index_stats` FORCE" or dump/reload to fix it!
mysql.innodb_table_stats
error    : Table rebuild required. Please do "ALTER TABLE `innodb_table_stats` FORCE" or dump/reload to fix it!
mysql.plugin                                       Needs upgrade

..

`nextcloud`.`oc_twofactor_totp_secrets`            FIXED
`nextcloud`.`oc_users`                             FIXED
`nextcloud`.`oc_vcategory`                         FIXED
`nextcloud`.`oc_vcategory_to_object`               FIXED
`nextcloud`.`oc_whats_new`                         FIXED
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK

Sollte die Datenbank bereits aktuell sein, wĂŒrde der Befehl ohne "force" kein Upgrade versuchen:

root@71fb96934128:/# mysql_upgrade -u root -p
Enter password: 
This installation of MariaDB is already upgraded to 10.5.17-MariaDB.
There is no need to run mysql_upgrade again for 10.5.17-MariaDB.
You can use --force if you still want to run mysql_upgrade

Tuning – Einstellungen – Optimierungen

Cronjob

am Host-OS

sudo crontab -e
*/5 * * * * docker exec --user www-data nextcloud_fpm php -f /var/www/html/cron.php  > /dev/null 2>&1

Sicherheits- und Einrichtungswarnungen

docker exec --user www-data nextcloud_fpm php occ maintenance:mode --on
docker exec --user www-data nextcloud_fpm php occ db:convert-filecache-bigint
docker exec --user www-data nextcloud_fpm php occ maintenance:mode --off
docker exec --user www-data nextcloud_fpm php occ db:add-missing-indices

Brute Force Protection und Reverse Proxy:

in Protokollierung:

/config/config.php:

hinzufĂŒgen von:

'trusted_proxies' => array('172.18.0.2'),
 'forwarded_for_headers' => array('HTTP_X_FORWARDED_FOR')

Connections:

root@soxn:/nextcloud# nano nginx.conf

events {
worker_connections 768;
}

changed to 2048; 

NGINX Bad Gateway – OnlyOffice

Anfangs habe ich folgenden Workaround fĂŒr den Start von OnlyOffice benötigt, mittlerweile ist dieser hinfĂ€llig 


Bash-Script:

#!/bin/bash 

url="https://document.DOMAIN"
keyword="Bad Gateway"

if curl -s "$url" | grep "$keyword"
then
    # if the keyword is in the conent
    echo " ERROR"
	docker restart onlyoffice
else
    echo "the website is working fine"
fi

sudo crontab -e

*/10 * * * * . /nextcloud/check.sh > /dev/null 2>&1

Preview Images

Damit die Anzeige in der Bildergalerie schneller funktioniert, können die Vorschaubilder mittels des Plugins "Preview Generator" vorab erzeugt werden. 

Nach der Installation der App können die Vorschaubilder ĂŒber folgenden Befehl erzeugt werden:

docker exec --user www-data nextcloud_fpm php occ preview:generate-all -vvv

Damit neue Vorschaubilder regelmĂ€ĂŸig erzeugt werden, habe ich am Host-System einen Cronjob hinzugefĂŒgt:

sudo crontab -e
15 3 * * * docker exec --user www-data nextcloud_fpm php occ preview:pre-generate > /dev/null 2>&1

siehe auch: Linux CronJobs - geplante Tasks | Debian crontab [erklÀrt]

Client_max_body_size

File uploadsize.conf

client_max_body_size 10G;

docker-compose.yml 

services:
 proxy:
 image: jwilder/nginx-proxy
 container_name: proxy
 ports:
 - 80:80
 - 443:443
 volumes:
 - ./proxy/conf.d:/etc/nginx/conf.d
 - ./proxy/vhost.d:/etc/nginx/vhost.d
 - ./proxy/html:/usr/share/nginx/html
 - ./proxy/certs:/etc/nginx/certs:ro
 - /var/run/docker.sock:/tmp/docker.sock:ro
 - ./uploadsize.conf:/etc/nginx/conf.d/uploadsize.conf:ro

Redis / Cache

config/apcu.config.php

<?php
$CONFIG = array (
 'memcache.local' => '\OC\Memcache\APCu',
 'opcache.revalidate_freq' => 60,
 'redis' => array(
 'host' => 'nextcloud_redis',
 'port' => 6379,
 ),
 'filelocking.enabled' => true,
 'memcache.locking' => '\OC\Memcache\Redis',
); 

siehe auch: https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html

Docker .env

Wird in dem Ordner in dem sich die docker-compose.yml Datei befindet eine .env-Datei angelegt, können damit Docker-Parameter geÀndert werden:

#.env
COMPOSE_HTTP_TIMEOUT=200

Troubleshooting

Internal Server Error

Nach einem Stromausfall hatte ich folgendes Problem:

Internal Server Error

The server encountered an internal error and was unable to complete your request.
Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.
More details can be found in the server log.

Der Redis-Container hat dabei stÀndig neu gestartet. Im Log konnte ich folgenden Eintrag finden:

Bad file format reading the append only file: make a backup of your AOF file, then use ./redis-check-aof --fix <filename>

Nachdem ich den Redis-Ordner ./nextcloud/redis gelöscht habe, konnte die Installation wieder gestartet werden.

WARNING: [pool www] server reached pm.max_children setting (5), consider raising it 

Mit den Standardeinstellungen wurde im Log des nextcloud:fpm Containers folgende Warnung angezeigt:

WARNING: [pool www] server reached pm.max_children setting (5), consider raising it 

Das Limit kann in der FPM-Config-Datei www.conf erhöht werden, diese ist im nextcloud:fpm Container versteckt:

Um die Datei anzuzeigen, können wir uns in den Container verbinden:

docker exec --user www-data -it nextcloud_fpm bash

Damit die Änderungen an der Config-Datei auch nach einem Reboot vorhanden sind, kann die Datei außerhalb des Containers abgelegt werden, dazu muss die Datei aber vorhanden sein:

mit cat /usr/local/etc/php-fpm.d/www.conf den Inhalt der www.conf anzeigen lassen und im Root Ordner www.conf anlegen:

Folgende Zeile in nextcloup_fpm hinzufĂŒgen:

- ./www.conf:/usr/local/etc/php-fpm.d/www.conf #added 4 max-childs-config

mit nano.conf kann die www.conf angepasst werden:

Nachdem ich in meinem NAS 8 GB Ram habe, habe ich folgende Werte angepasst:

pm.max_children = 80 #(vorher 5)
pm.start_servers = 2
pm.min_spare_servers = 2 #(voher 1)
pm.max_spare_servers = 15 #(vorher 3)

Die komplette Datei schaut bei mir wie folgt aus:

www.conf

[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 80
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 15

Exception: Database error when running migration latest for app core

An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.

Das Problem liegt an der MariaDB-Version. Ab Version 10.6 werden keine komprimierten Spalten mehr unterstĂŒtzt. 

Ich habe das Problem fĂŒrs Erste gelöst, indem ich die Version 10.5 von MariaDB verwende:

docker-compose.yml

...
  db:
    image: mariadb:10.5
    container_name: nextcloud_db
...

siehe: help.nextcloud.com/t/update-to-22-failed-with-database-error-updated/120682

Docker als Benutzer / ohne Root-Rechte

sudo groupadd docker
sudo gpasswd -a $USER docker

Router OpenWrt – interne IP

Nachdem mein NAS und somit die Nextcloud-Installation zu Hause direkt ĂŒber das WLAN erreichbar ist, ohne Umweg: WLAN-Router – Internet – Router, ist es natĂŒrlich sinnvoll die Installation direkt aufzurufen, dazu reicht ein zusĂ€tzlicher DNS-Eintrag am Router: Split-DNS. Die Nextcloud-Domain wird im WLAN somit mit einer internen IP aufgelöst.

Hier als Beispiel die Anpassung meines auf OpenWrt-basierenden Router:

vi /etc/config/dhcp

config 'domain'
option name 'next.domain.xx'
option ip 192.168.1.5

config 'domain'
option name 'office.domain.xx'
option ip 192.168.1.5

config 'domain'
option name 'document.domain.xx'
option ip 192.168.1.5

Desktop-Client

FĂŒr das Synchronisieren von Dateien existiert fĂŒr Windows, macOS und Linux ein Desktop Client. Der Client integriert sich nahtlos in den Filemanager und kĂŒmmert sich um das Synchronisieren der Ordner.

OrdnerSync Rasperry PI

Installieren:

sudo apt install owncloud-client-cmd

und eintragen in crontab:

crontab -e

* * * * * owncloudcmd /lokalerOrdner https://user:password@nextcloudURL/remote.php/webdav/Ordner >/dev/null 2>&1

Fazit

Nextcloud wertet meinen NAS um unzÀhlige Funktionen auf und bietet mir die Möglichkeit Cloud-Dienste wieder nach Hause zu bringen:
Mit Nextcloud habe ich jetzt Sync-Clients fĂŒr Android, Windows und Linux, kann im Browser Office-Dokumente, Diagramme oder Abstimmungen erstellen. Neben den Fotos vom Smartphone kann ich zudem meine Kontakte und KalendereintrĂ€ge synchronisieren oder mit anderen teilen und könnte sogar einen eigenen Messenger inkl. Anruf- und Video-Funktion betreiben und vieles mehr 


positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE fĂŒr deine Bewertung!

Aktualisiert: 01.04.2024 von Bernhard | Translation English |🔔 | Kommentare:6

➚ Docker Container GUI grafische WeboberflĂ€che mit Portainer | ➊ Container | Home Assistant: Docker Inbetriebnahme + SSL Internetzugriff ➚
➊ Home Server | GĂŒnstiger und sparsamer Docker Mini Server fĂŒr zu Hause ➚

Top-Artikel in diesem Bereich


NAS selber bauen: flexibel, stromsparend und gĂŒnstig [HowTo]

Wer nach einem NAS (Network Attached Storage oder Netzwerkspeicher) fĂŒr den Heimgebrauch sucht, kommt an den Herstellern Synology und QNAP nicht vorbei. Beide Hersteller liefern kleine NAS-Komplettlösungen mit der Möglichkeit, Daten lokal oder ĂŒber das Internet zu synchronisieren und beide verlangen fĂŒr die verwendete Hardware nicht gerade wenig Geld.


ioBroker installieren - Docker

Mit ioBroker können verschiedene Automatisierungslösungen oder GerÀte in einem System zusammengefasst werden. Um bestimmte Gateways oder GerÀte ansprechen zu können, werden in ioBroker verschiedene Adapter verwendet.


Inbetriebnahme Zigbee2MQTT in Docker - Schritt fĂŒr Schritt

Zigbee2MQTT ist eine Open-Source Zigbee-Bridge welche sich, dank dem Netzwerkprotokoll MQTT, leicht in bestehende Smarthome-Lösungen integrieren lÀsst. Als Beispiel kann Zigbee2MQTT kombiniert mit MQTT - Broker  Mosquitto und Home-Assistant Daten der Zigbee-GerÀte erfassen, anzeigen, aufzeichnen und diese steuern. Das hier beschriebene Setup verwendet Docker als Basis. Herstellerseite: https://www.zigbee2mqtt.io

Fragen / Kommentare


(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]

✍anonym
15.03.2022 09:53
Aloa,

vielen Dank fĂŒr die Beschreibung. Ich versuche die Installation ebenfalls umzusetzen und scheitere beim Installieren.

Es geht um folgenden Teil, der wohl Ärger macht:
+-+-+-+
networks:
  nextcloud:
    external:
      name: webproxy
+-+-+-+

die Fehlermeldung lautet:

+-+-+-+
Deployment error
failed to deploy a stack: Network webproxy declared as external, but could not be found. Please create the network manually using `docker network create webproxy` and try again. : exit status 1
+-+-+-+
↳
✍Bernhard
gepostet am 15.03.2022 12:21
Das Netzwerk webproxy wird durch den Nginx-Reverse Proxy erstellt, dieser wird fĂŒr https vorausgesetzt. Also zuerst muss der Reverse Proxy eingerichtet werden, siehe Schritt fĂŒr Schritt.

Beitrag erstellt von Bernhard

✍anonym
09.02.2020 09:34
User: Jens 
Ich bekomme nach der Installation immer nur ein 504 Gateway Time-out, wo sollte ich mit der Suche ansetzen? (Installiert ist nur: proxy, companion, db, fpm & webserver)

✍anonym
05.11.2019 10:55
User: Raphael 
Vielen Dank fĂŒr das hilfreiche Manual!
Den Absatz um die pm.max_children zu Àndern hab ich, so denke ich, nicht ganz verstanden.
Stimmt das so:?
Man verbindet sich mit dem Docker Container und bearbeitet darin die www.conf datei, indem man die Zeile mit dem Verweis auf die neue Config Datei hinzufĂŒgt.
Anschließend legt man eine www.conf Date im root ordner des Servers (außerhalb des containers) an und fĂŒgt die 4 Zeilen mit den pm.max children ein.
Aber wird nicht bei jedem neuen build des containers die www.conf im docker auf die ursprĂŒngliche Version zurĂŒckgesetzt?

WĂŒrde mich ĂŒber eine Antwort freuen... raphael_unterrainer(AT)hotmail.com

✍anonym
09.10.2019 20:45
User: Hallo 
Benötige mal deine Hilfe

✍anonym
09.10.2019 20:43
User: Zinnik 
Hallo ich habe ein Problem mit der nextcloud im docker auf einer qnap nas. Ich kann kein letsencrypt zertifikat erstellen.
Kannst du mir helfen?

Inhaltsverzeichnis
  1. Schritt fĂŒr Schritt Nextcloud in Docker inklusive Zugriff vom Internet
  2. docker-compose.yml
  3. nginx.conf
  4. Container hinzufĂŒgen / docker-compose.yml anpassen
  5. Angepasstes docker-compose.yml mit OnlyOffice
  6. Wartung
  7. Tuning – Einstellungen – Optimierungen
  8. Troubleshooting
  9. Router OpenWrt – interne IP
  10. Desktop-Client
  11. OrdnerSync Rasperry PI
  12. Fazit
Kommentare:6
Seiten die auf diese Seite verweisen
Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details