NextCloud docker traefik

Installation

docker-compose.yaml



services:
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --log-bin=ROW --innodb-read-only-compressed=OFF
    restart: always
    volumes:
      - ./data/nextcloud_data/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=ChangeIT
    env_file:
      - db.env
    networks:
      - nextcloud-net


  redis:
    image: redis:alpine
    restart: always
    command: redis-server --requirepass ChangeIT
    networks:
      - nextcloud-net

#  collabora:
#    image: collabora/code
#    container_name: nextcloud-collab
#    networks:
#      - proxy
#    cap_add:
#     - MKNOD
#    expose:
#      - 9980
##    ports:
##      - 9980:9980
#    environment:
#      - domain=nc\.roietti\.net
#      - VIRTUAL_HOST=collabora.proietti.net
#      - VIRTUAL_PORT=9980
#      - DONT_GEN_SSL_CERT=true
#      - extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:net.proto=IPv4
#      - dictionaries='it'
#      - LETSENCRYPT_HOST=
#    volumes:
#      - /etc/timezone:/etc/timezone:ro
#      - /etc/localtime:/etc/localtime:ro
#    restart: unless-stopped
#



  app:
#    image: nextcloud:30.0-apache
    image: nextcloud:31-apache
    restart: always
#    hostname: nc
    volumes:
      - ./data/nextcloud_data/nextcloud:/var/www/html
      - ./data/nextcloud-apache.conf:/etc/apache2/conf-enabled/nextcloud-apache.conf:ro
    environment:
      - MYSQL_HOST=db
      - REDIS_HOST=redis
      - REDIS_HOST_PASSWORD=ChangeIT
      - OVERWRITEPROTOCOL=https
      - TRUSTED_PROXIES=172.19.0.7 127.0.0.1 172.19.0.1


    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nc_proietti_net-http.entrypoints=web"
      - "traefik.http.routers.nc_proietti_net-http.rule=Host(`nc.proietti.net`)"

      - "traefik.http.routers.nc_proietti_net-http.middlewares=https-redirect@file"

      - "traefik.http.routers.nc_proietti_net-https.entrypoints=websecure"
      - "traefik.http.routers.nc_proietti_net-https.rule=Host(`nc.proietti.net`)"
      - "traefik.http.routers.nc_proietti_net-https.tls.certresolver=lets-encr"

      - "traefik.http.services.nc_proietti_net.loadbalancer.server.port=80"
      - "traefik.docker.network=proxy"


    env_file:
      - db.env
    depends_on:
      - db
      - redis
    networks:
      - proxy
      - nextcloud-net

  cron:
    image: nextcloud:31-apache
    restart: always
    environment:
      - MYSQL_HOST=db
    volumes:
      - ./data/nextcloud_data/nextcloud:/var/www/html
    entrypoint: /cron.sh
    depends_on:
      - db
      - redis
    networks:
      - proxy
      - nextcloud-net



networks:
  proxy:
    external: true
  nextcloud-net:
    external: false


db.env


MYSQL_PASSWORD=ChangeIT
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud

data/nextcloud-apache.conf


LimitRequestBody 0

Upgrade

Manteniance and solutions

docker exec --user www-data nextcloud-app-1 php occ db:add-missing-indices

docker exec --user www-data nextcloud-app-1 php occ maintenance:repair --include-expensive

docker exec --user www-data nextcloud-app-1 php occ config:system:set maintenance_window_start --type=integer --value=1

.