Nextcloud in Docker

Mit folgendem Compose Script installiere ich standardmäßig Nextcloud in einer Docker-Umgebung:

services:
  nextcloud_db:
    image: mariadb:11.4
    mem_limit: 512M
    container_name: 40_Nextcloud_DB
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - /docker/40_Nextcloud/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=Ma8uiY4aumND3y0vwshhbWFN2mfaZM
      - MYSQL_PASSWORD=7T4622O9ZaaF6m9UAUySF7dsdaKb7s
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud_user
      - MARIADB_AUTO_UPGRADE=1
    networks:
      nextcloud-nw:
        ipv4_address: 172.18.40.11

  nextcloud_redis:
    image: redis:alpine
    mem_limit: 2048M
    container_name: 40_Nextcloud_Redis
    hostname: nextcloud-redis
    restart: unless-stopped
    command: redis-server --requirepass dNxKJMp6UFRwesDnuYprWkH310IDBf # Redis Passwort eingeben
    networks:
      nextcloud-nw:
        ipv4_address: 172.18.40.12

  cron_job:
    image: nextcloud:apache
    mem_limit: 512M
    container_name: 40_Nextcloud_Cronjob
    restart: always
    volumes:
      - /docker/40_Nextcloud/data:/var/www/html
    entrypoint: /cron.sh
    depends_on:
      - nextcloud_db
      - nextcloud_redis
    networks:
      nextcloud-nw:
        ipv4_address: 172.18.40.13

  nextcloud:
    image: nextcloud:latest
    mem_limit: 4096M
    container_name: 40_Nextcloud
    restart: always
    links:
      - nextcloud_db
      - nextcloud_redis
    volumes:
      - /docker/40_Nextcloud/data:/var/www/html
    environment:
      - MYSQL_PASSWORD=7T4622O9ZaaF6m9UAUySF7dsdaKb7s
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud_user
      - MYSQL_HOST=nextcloud_db
      - REDIS_HOST=nextcloud_redis
      - REDIS_HOST_PASSWORD=dNxKJMp6UFRwesDnuYprWkH310IDBf
      - OVERWRITEPROTOCOL=https
      - OVERWRITECLIURL=https://nextcloud.example.de
      - OVERWRITEHOST=nextcloud.example.de
      - NEXTCLOUD_INIT_HTACCESS=true
      - PHP_MEMORY_LIMIT=4G
      - PHP_UPLOAD_LIMIT=4G
    healthcheck:
      test: curl --fail http://172.18.40.14 || exit 1
      interval: 60s
      retries: 5
      start_period: 20s
      timeout: 10s
    ports:
      - "11280:80" # HTTP Port
    networks:
      nextcloud-nw:
        ipv4_address: 172.18.40.14

  clamav:
    image: clamav/clamav:unstable
    mem_limit: 1024M
    container_name: 40_Nextcloud-AV
    volumes:
      - /docker/40_Nextcloud/data:/var/www/html/data
      - /docker/40_Nextcloud/av:/var/lib/clamav
    networks:
      nextcloud-nw:
        ipv4_address: 172.18.40.15
    restart: always

networks:
  nextcloud-nw:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.40.0/24
          gateway: 172.18.40.1

Für den Reverse Proxy verwende ich normalerweise den nginx Proxy Manager oder Zoraxy.

Nach der Installation von Nextcloud sollten noch ein paar standardmäßige Einstellungen gesetzt werden wie z. B. HSTS oder das Wartungsfenster usw.

docker exec -u www-data 40_Nextcloud bash -c \
"echo \"\\\$CONFIG['default_phone_region'] = 'DE';\" >> /var/www/html/config/config.php"


docker exec -u www-data 40_Nextcloud php /var/www/html/occ maintenance:repair --include-expensive
docker exec -u www-data 40_Nextcloud php /var/www/html/occ db:add-missing-indices

docker exec -u www-data 40_Nextcloud bash -c \
"echo \"\\\$CONFIG['maintenance_window_start'] = 2;\" >> /var/www/html/config/config.php && \
echo \"\\\$CONFIG['maintenance_window_duration'] = 2;\" >> /var/www/html/config/config.php"

docker exec -u www-data 40_Nextcloud bash -c \
"echo \"\\\$CONFIG['trusted_proxies'] = ['10.25.210.34'];\" >> /var/www/html/config/config.php"

Ein häufiges Problem ist z.B. wenn Anwender ihren TOTP Code verlieren. So können sie diesen zurücksetzen. Ersetzen Sie den Benutzernamen entsprechend:

docker exec -u www-data 40_Nextcloud php /var/www/html/occ twofactorauth:disable julian totp

Für den Fall das Nextcloud mit einer Firewall eingeschränkt wird:

docker exec -u www-data 40_Nextcloud bash -c \
"echo \"\\\$CONFIG['has_internet_connection'] = 'true';\" >> /var/www/html/config/config.php"

Löschen aller Logs:

docker exec -u www-data 40_Nextcloud truncate /var/www/html/data/nextcloud.log --size 0

Wenn clamav mit benutzt wird, dann muss dies noch über die Antivirus-App in Nextcloud aktiviert werden:

An sich wird empfohlen, den clamav Container mit mindestens 4 GB Arbeitsspeicher in einem produktiven Umfeld zu verwenden.

Abschließend mit einer EICAR Testdatei den Virenschutz testen, https://www.eicar.org/download-anti-malware-testfile/#top Es kann sein, dass ihr den AV von eurem PC zwischenzeitlich deaktivieren müsst, damit der PC die Testdatei nicht löscht.

Schreibe einen Kommentar 0

Deine E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind mit * markiert


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.