131 lines
4.7 KiB
YAML
131 lines
4.7 KiB
YAML
services:
|
|
db:
|
|
image: mariadb:10.6
|
|
container_name: nextcloud-db
|
|
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
|
|
volumes:
|
|
- /mnt/user/appdata/nextcloud/db:/var/lib/mysql
|
|
environment:
|
|
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
|
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
|
- MYSQL_DATABASE=nextcloud
|
|
- MYSQL_USER=nextcloud
|
|
labels:
|
|
net.unraid.docker.icon: "https://raw.githubusercontent.com/linuxserver/docker-templates/refs/heads/master/linuxserver.io/img/mariadb-icon.png"
|
|
folder.view3: "Databases"
|
|
|
|
redis:
|
|
image: redis
|
|
container_name: nextcloud-cache
|
|
volumes:
|
|
- /mnt/user/appdata/nextcloud/cache:/data
|
|
command: redis-server --requirepass ${REDIS_HOST_PASSWORD}
|
|
labels:
|
|
net.unraid.docker.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/redis.png"
|
|
folder.view3: "Databases"
|
|
|
|
proxy:
|
|
image: caddy:latest
|
|
container_name: nextcloud-proxy
|
|
hostname: nextcloud-proxy
|
|
volumes:
|
|
- /mnt/user/appdata/nextcloud/proxy/Caddyfile:/etc/caddy/Caddyfile
|
|
depends_on:
|
|
- app
|
|
networks:
|
|
- default
|
|
- pangolin
|
|
- traefik_proxy
|
|
labels:
|
|
net.unraid.docker.icon: "https://raw.githubusercontent.com/linuxserver/docker-templates/refs/heads/master/linuxserver.io/img/nextcloud-icon.png"
|
|
net.unraid.docker.webui: "https://${DOMAIN}"
|
|
folder.view3: "Networking"
|
|
|
|
pangolin.public-resources.nextcloud-server.name: "${RESOURCE_NAME}"
|
|
pangolin.public-resources.nextcloud-server.full-domain: "${DOMAIN}"
|
|
pangolin.public-resources.nextcloud-server.protocol: "http"
|
|
|
|
pangolin.public-resources.nextcloud-server.auth.sso-enabled: false
|
|
|
|
pangolin.public-resources.nextcloud-server.targets[0].method: "http"
|
|
pangolin.public-resources.nextcloud-server.targets[0].hostname: "nextcloud-proxy"
|
|
pangolin.public-resources.nextcloud-server.targets[0].port: 8080
|
|
|
|
# local proxy
|
|
traefik.enable: true
|
|
traefik.http.services.cloud.loadbalancer.server.port: 8080
|
|
traefik.http.routers.cloud.rule: "Host(`${DOMAIN}`)"
|
|
traefik.http.routers.cloud.entrypoints: websecure
|
|
traefik.http.routers.cloud.tls: true
|
|
traefik.http.routers.cloud.tls.certresolver: cloudflare
|
|
traefik.http.routers.cloud.tls.domains[0].main: "*.homecube.org"
|
|
|
|
app:
|
|
image: nextcloud:34
|
|
container_name: nextcloud
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
volumes:
|
|
- /mnt/user/appdata/nextcloud/app:/var/www/html
|
|
- /mnt/user/nextcloud-data:/var/www/html/data
|
|
environment:
|
|
- NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER}
|
|
- NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
|
|
- NEXTCLOUD_TRUSTED_DOMAINS=${DOMAIN}
|
|
|
|
- MYSQL_DATABASE=nextcloud
|
|
- MYSQL_USER=nextcloud
|
|
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
|
- MYSQL_HOST=db
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- REDIS_HOST_PASSWORD=${REDIS_HOST_PASSWORD}
|
|
|
|
- APACHE_BODY_LIMIT=0
|
|
labels:
|
|
net.unraid.docker.icon: "https://raw.githubusercontent.com/linuxserver/docker-templates/refs/heads/master/linuxserver.io/img/nextcloud-icon.png"
|
|
net.unraid.docker.webui: "https://${DOMAIN}"
|
|
folder.view3: "Services"
|
|
|
|
euro-office:
|
|
image: ghcr.io/euro-office/documentserver:latest
|
|
container_name: euro-office
|
|
networks:
|
|
- pangolin
|
|
- traefik_proxy
|
|
environment:
|
|
- JWT_ENABLED=true
|
|
- JWT_SECRET=${EURO_OFFICE_SECRET}
|
|
labels:
|
|
net.unraid.docker.icon: "https://raw.githubusercontent.com/linuxserver/docker-templates/refs/heads/master/linuxserver.io/img/nextcloud-icon.png"
|
|
net.unraid.docker.webui: "https://${OFFICE_DOMAIN}"
|
|
folder.view3: "Infrastructure"
|
|
|
|
pangolin.public-resources.euro-office.name: "${OFFICE_RESOURCE_NAME}"
|
|
pangolin.public-resources.euro-office.full-domain: "${OFFICE_DOMAIN}"
|
|
pangolin.public-resources.euro-office.protocol: "http"
|
|
|
|
pangolin.public-resources.euro-office.auth.sso-enabled: false
|
|
|
|
pangolin.public-resources.euro-office.targets[0].method: "http"
|
|
pangolin.public-resources.euro-office.targets[0].hostname: "euro-office"
|
|
pangolin.public-resources.euro-office.targets[0].port: 80
|
|
|
|
# local proxy
|
|
traefik.enable: true
|
|
traefik.http.services.office.loadbalancer.server.port: 80
|
|
traefik.http.routers.office.rule: "Host(`${OFFICE_DOMAIN}`)"
|
|
traefik.http.routers.office.entrypoints: websecure
|
|
traefik.http.routers.office.tls: true
|
|
traefik.http.routers.office.tls.certresolver: cloudflare
|
|
traefik.http.routers.office.tls.domains[0].main: "*.homecube.org"
|
|
|
|
networks:
|
|
pangolin:
|
|
name: pangolin_net
|
|
external: true
|
|
|
|
traefik_proxy:
|
|
external: true
|