diff --git a/nextcloud/.env b/nextcloud/.env index b575f01..fd8e2e1 100644 --- a/nextcloud/.env +++ b/nextcloud/.env @@ -1,23 +1,49 @@ -## DOCKER +######## +# DOCKER -COMPOSE_FILE=./docker-compose.yml +#DOCKER_CONTEXT= #DOCKER_HOST= -TRAEFIK_NETWORK_NAME=kifeart +SERVICES_DIR=.. +COMPOSE_FILE=${SERVICES_DIR}/nextcloud/docker-compose.yml:${SERVICES_DIR}/nextcloud/docker-compose.local.yml:${SERVICES_DIR}/postgres/docker-compose.yml:${SERVICES_DIR}/redis/docker-compose.yml +#COMPOSE_PROJECT_NAME= ## APP +NEXTCLOUD_DOMAIN=nextcloud.cool.life +NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN} NEXTCLOUD_CONTAINER_NAME=nextcloud NEXTCLOUD_VOLUME_NAME=nextcloud -NEXTCLOUD_DOMAIN=nextcloud.cool.life -NEXTCLOUD_ADMIN_USER: user -NEXTCLOUD_ADMIN_PASSWORD: password +NEXTCLOUD_ADMIN_USER=user +NEXTCLOUD_ADMIN_PASSWORD=password -# DATABASE -# Voir la description ../postgres/README.md +#SMTP_HOST=mail.test.org +#SMTP_SECURE= +#SMTP_PORT= +#SMTP_AUTHTYPE= +#SMTP_NAME=test@test.org +#SMTP_PASSWORD=blablablabla +#MAIL_FROM_ADDRESS=no-reply +#MAIL_DOMAIN=test.org + +########## +# POSTGRES POSTGRES_USER=user-example POSTGRES_PASSWORD=password-example POSTGRES_DB=postgres-database-name-example POSTGRES_CONTAINER_NAME=nextcloud-postgres POSTGRES_VOLUME_NAME=nextcloud-postgres +#POSTGRES_IMAGE= + +####### +# REDIS + +REDIS_CONTAINER_NAME=nextcloud-redis + +######### +# TRAEFIK + +#TRAEFIK_NETWORK_NAME= +#TRAEFIK_ROUTER_NAME= # Don't use char '.' +#TRAEFIK_ENTRYPOINTS= diff --git a/nextcloud/docker-compose.local.yml b/nextcloud/docker-compose.local.yml new file mode 100644 index 0000000..f6bd168 --- /dev/null +++ b/nextcloud/docker-compose.local.yml @@ -0,0 +1,6 @@ +version: "3.8" + +services: + nextcloud-web: + ports: + - ${LOCAL_PORT:-80}:80 diff --git a/nextcloud/docker-compose.smtp.yml b/nextcloud/docker-compose.smtp.yml new file mode 100644 index 0000000..b8a880f --- /dev/null +++ b/nextcloud/docker-compose.smtp.yml @@ -0,0 +1,13 @@ +version: "3.8" + +services: + nextcloud-fpm: + environment: + SMTP_HOST: ${SMTP_HOST?err} # The hostname of the SMTP server. + SMTP_SECURE: ${SMTP_SECURE:-ssl} # Set to ssl to use SSL, or tls to use STARTTLS. + SMTP_PORT: ${SMTP_PORT:-465} + SMTP_AUTHTYPE: ${SMTP_AUTHTYPE:-LOGIN} + SMTP_NAME: ${SMTP_NAME?err} + SMTP_PASSWORD: ${SMTP_PASSWORD?err} + MAIL_FROM_ADDRESS: ${MAIL_FROM_ADDRESS} + MAIL_DOMAIN: ${MAIL_DOMAIN} diff --git a/nextcloud/docker-compose.traefik.yml b/nextcloud/docker-compose.traefik.yml new file mode 100644 index 0000000..75d9ffe --- /dev/null +++ b/nextcloud/docker-compose.traefik.yml @@ -0,0 +1,18 @@ +version: "3.8" + +networks: + default: + name: ${TRAEFIK_NETWORK_NAME:-traefik} + +services: + nextcloud-web: + environment: + TRUSTED_PROXIES: ${TRAEFIK_NETWORK_NAME:-traefik} + labels: + - traefik.enable=true + - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} + - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-nextcloud}.rule=Host(`${NEXTCLOUD_DOMAIN:?err}`) + - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-nextcloud}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} + - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-nextcloud}.middlewares=nextcloud_redirect + - traefik.http.middlewares.nextcloud_redirect.redirectregex.regex=/.well-known/(card|cal)dav + - traefik.http.middlewares.nextcloud_redirect.redirectregex.replacement=/remote.php/dav/ diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml index 811ae91..2940391 100644 --- a/nextcloud/docker-compose.yml +++ b/nextcloud/docker-compose.yml @@ -1,99 +1,55 @@ version: "3.8" -networks: - default: - name: ${TRAEFIK_NETWORK_NAME} - volumes: nextcloud: - name: ${NEXTCLOUD_VOLUME_NAME} - nextcloud-postgres: - name: ${POSTGRES_VOLUME_NAME} + name: ${NEXTCLOUD_VOLUME_NAME:-nextcloud} services: + nextcloud-fpm: + container_name: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-fpm + image: ${NEXTCLOUD_IMAGE:-nextcloud:22.2.3-fpm-alpine} + restart: always + depends_on: + - postgres + - redis + volumes: + - nextcloud:/var/www/html + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + environment: + NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_TRUSTED_DOMAINS?err} + NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER?err} + NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD?err} + OVERWRITEPROTOCOL: ${OVERWRITEPROTOCOL:-https} + POSTGRES_HOST: postgres # Name is same as ../postgres/docker-compose.yml:8 + POSTGRES_USER: ${POSTGRES_USER:?err} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?err} + POSTGRES_DB: ${POSTGRES_DB:?err} + REDIS_HOST: redis # Name is same as ../redis/docker-compose.yml:4 + PUID: ${NEXTCLOUD_PUID:-1000} + PGID: ${NEXTCLOUD_PGID:-1000} nextcloud-web: - container_name: nextcloud-web - build: ./web + container_name: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-web + build: web restart: always + environment: + PUID: ${NEXTCLOUD_PUID:-1000} + PGID: ${NEXTCLOUD_PGID:-1000} depends_on: - nextcloud-fpm - volumes: - - nextcloud:/var/www/html - labels: - traefik.enable: 'true' - traefik.docker.network: ${TRAEFIK_NETWORK_NAME} - traefik.http.routers.nextcloud-fpm.rule: 'Host(`${NEXTCLOUD_DOMAIN}`)' - traefik.http.routers.nextcloud-fpm.entrypoints: 'web' - traefik.http.routers.nextcloud-fpm.middlewares: nextcloud_redirect - traefik.http.middlewares.nextcloud_redirect.redirectregex.regex: /.well-known/(card|cal)dav - traefik.http.middlewares.nextcloud_redirect.redirectregex.replacement: /remote.php/dav/ - - nextcloud-fpm: - container_name: nextcloud-fpm - image: ${NEXTCLOUD_IMAGE:-nextcloud:22.2.0-fpm-alpine} - restart: always - hostname: ${NEXTCLOUD_DOMAIN} - depends_on: - - nextcloud-postgres - - nextcloud-redis - volumes: - - nextcloud:/var/www/html - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - environment: - NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_DOMAIN} - NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER} - NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD} - OVERWRITEPROTOCOL: 'https' - APACHE_DISABLE_REWRITE_IP: '1' - TRUSTED_PROXIES: ${TRAEFIK_NETWORK_NAME} - OVERWRITEPROTOCOL: 'https' - POSTGRES_HOST: ${POSTGRES_CONTAINER_NAME} - POSTGRES_DB: ${POSTGRES_DB} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - POSTGRES_USER: ${POSTGRES_USER} - REDIS_HOST: 'nextcloud-redis' - PUID: 1001 - PGID: 119 - - nextcloud-postgres: - container_name: ${POSTGRES_CONTAINER_NAME} - image: ${POSTGRES_IMAGE:-postgres:12.8-alpine} - restart: always - environment: - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - POSTGRES_DB: ${POSTGRES_DB} - PUID: 1001 - PGID: 119 - volumes: - - nextcloud-postgres:/var/lib/postgresql/data - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - - nextcloud-redis: - image: ${REDIS_IMAGE:-redis:6.2.6-alpine} - container_name: nextcloud-redis - restart: always - environment: - PUID: 1001 - PGID: 119 - volumes: - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro + volumes_from: + - nextcloud-fpm nextcloud-cron: - image: ${NEXTCLOUD_IMAGE:-nextcloud:22.2.0-fpm-alpine} - container_name: nextcloud-cron + image: ${NEXTCLOUD_IMAGE:-nextcloud:22.2.3-fpm-alpine} + container_name: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-cron restart: always depends_on: - nextcloud-web entrypoint: /cron.sh environment: - PUID: 1001 - PGID: 119 - volumes: - - nextcloud:/var/www/html - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro + PUID: ${NEXTCLOUD_PUID:-1000} + PGID: ${NEXTCLOUD_PGID:-1000} + volumes_from: + - nextcloud-fpm diff --git a/nextcloud/web/Dockerfile b/nextcloud/web/Dockerfile index d183bd2..64dc53c 100644 --- a/nextcloud/web/Dockerfile +++ b/nextcloud/web/Dockerfile @@ -1,3 +1,3 @@ -FROM nginx:1.21.1-alpine +FROM nginx:1.21.4-alpine COPY nginx.conf /etc/nginx/nginx.conf