238 lines
5.8 KiB
YAML
238 lines
5.8 KiB
YAML
version: "3.0"
|
|
|
|
volumes:
|
|
media:
|
|
transmission-config:
|
|
transmission-watch:
|
|
nextcloud-config:
|
|
nextcloud-data:
|
|
nextcloud-www:
|
|
caddy-config:
|
|
caddy-data:
|
|
vw-data:
|
|
postgres-data:
|
|
postgres-backups:
|
|
|
|
networks:
|
|
inner:
|
|
|
|
services:
|
|
minidlna:
|
|
build:
|
|
context: minidlna
|
|
dockerfile: Dockerfile
|
|
container_name: dlna
|
|
environment:
|
|
PUID: 1000
|
|
PGID: 1000
|
|
TZ: ${TZ}
|
|
MINIDLNA_MEDIA_DIR: /media
|
|
MINIDLNA_FRIENDLY_NAME: tinyNAS
|
|
volumes:
|
|
- media:/media
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD",
|
|
"curl",
|
|
"--silent",
|
|
"--fail",
|
|
"127.0.0.1:8200",
|
|
"||",
|
|
"exit 1"
|
|
]
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 6
|
|
start_period: 10s
|
|
restart: unless-stopped
|
|
ports:
|
|
- 8200:8200
|
|
|
|
transmission:
|
|
image: lscr.io/linuxserver/transmission:latest
|
|
container_name: transmission
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=${TZ}
|
|
- USER=${TRANSMISSION_USER}
|
|
- PASS=${TRANSMISSION_PASSWORD}
|
|
volumes:
|
|
- transmission-config:/config
|
|
- media:/downloads
|
|
- transmission-watch:/watch
|
|
ports:
|
|
- 51413:51413
|
|
- 51413:51413/udp
|
|
restart: unless-stopped
|
|
networks:
|
|
- inner
|
|
|
|
nextcloud:
|
|
image: nextcloud:stable-fpm-alpine
|
|
container_name: nextcloud
|
|
environment:
|
|
PUID: 1000
|
|
PGID: 1000
|
|
TZ: ${TZ}
|
|
POSTGRES_DB: nextcloud
|
|
POSTGRES_USER: ${PG_USER}
|
|
POSTGRES_PASSWORD: ${PG_PASSWORD}
|
|
POSTGRES_HOST: postgres:5432
|
|
NEXTCLOUD_TRUSTED_DOMAINS: nextcloud.${HOST}
|
|
REDIS_HOST: redis
|
|
REDIS_HOST_PASSWORD: ${REDIS_PASSWORD}
|
|
volumes:
|
|
- nextcloud-config:/config:rw
|
|
- nextcloud-data:/var/data:rw
|
|
- nextcloud-www:/var/www/html:rw
|
|
restart: unless-stopped
|
|
networks:
|
|
- inner
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_started
|
|
|
|
nextcloud-cron:
|
|
image: nextcloud:stable-fpm-alpine
|
|
restart: always
|
|
container_name: nextcloud-cron
|
|
environment:
|
|
PUID: 1000
|
|
PGID: 1000
|
|
TZ: ${TZ}
|
|
POSTGRES_DB: nextcloud
|
|
POSTGRES_USER: ${PG_USER}
|
|
POSTGRES_PASSWORD: ${PG_PASSWORD}
|
|
POSTGRES_HOST: postgres:5432
|
|
NEXTCLOUD_TRUSTED_DOMAINS: nextcloud.${HOST}
|
|
REDIS_HOST: redis
|
|
REDIS_HOST_PASSWORD: ${REDIS_PASSWORD}
|
|
volumes:
|
|
- nextcloud-config:/config:rw
|
|
- nextcloud-data:/data:rw
|
|
- nextcloud-www:/var/www/html:rw
|
|
entrypoint: /cron.sh
|
|
networks:
|
|
- inner
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_started
|
|
|
|
vaultwarden:
|
|
image: vaultwarden/server:latest
|
|
container_name: vaultwarden
|
|
restart: always
|
|
environment:
|
|
PUID: 1000
|
|
PGID: 1000
|
|
TZ: ${TZ}
|
|
WEBSOCKET_ENABLED: "true"
|
|
DATABASE_URL: postgresql://${PG_USER}:${PG_PASSWORD}@postgres:5432/vaultwarden
|
|
volumes:
|
|
- vw-data:/data
|
|
networks:
|
|
- inner
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
|
|
gateway:
|
|
image: caddy:2
|
|
container_name: caddy
|
|
restart: always
|
|
ports:
|
|
- 80:80
|
|
- 443:443
|
|
volumes:
|
|
- ./etc/Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- caddy-config:/config:rw
|
|
- caddy-data:/data:rw
|
|
- nextcloud-www:/var/www/nextcloud:rw
|
|
environment:
|
|
PUID: 1000
|
|
PGID: 1000
|
|
TZ: ${TZ}
|
|
HOST: ${HOST}
|
|
EMAIL: ${EMAIL}
|
|
LOG_FILE: "/data/access.log"
|
|
networks:
|
|
- inner
|
|
depends_on:
|
|
- nextcloud
|
|
- vaultwarden
|
|
- transmission
|
|
|
|
postgres:
|
|
image: postgres:15.2-alpine3.17
|
|
restart: always
|
|
container_name: postgres
|
|
environment:
|
|
PUID: 1000
|
|
PGID: 1000
|
|
TZ: ${TZ}
|
|
PGUSER: ${PG_USER}
|
|
POSTGRES_USER: ${PG_USER}
|
|
POSTGRES_PASSWORD: ${PG_PASSWORD}
|
|
DB_NAME: nextcloud,vaultwarden
|
|
LANG: ru_RU.utf8
|
|
volumes:
|
|
- "postgres-data:/var/lib/postgresql/data"
|
|
- "./etc/init.sql:/docker-entrypoint-initdb.d/init.sql"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -d vaultwarden -U docker"]
|
|
interval: 20s
|
|
timeout: 10s
|
|
retries: 10
|
|
networks:
|
|
- inner
|
|
|
|
backups:
|
|
image: postgres:15.2-alpine3.17
|
|
container_name: postgres_backup
|
|
# Run nextcloud-restore-application-data.sh to restore application data if needed.
|
|
# Run nextcloud-restore-database.sh to restore database if needed.
|
|
command: sh -c 'sleep 30m
|
|
&& while true; do
|
|
PGPASSWORD="$$(echo $$POSTGRES_PASSWORD)"
|
|
pg_dump
|
|
-h postgres
|
|
-p 5432
|
|
-d nextcloud
|
|
-U docker | gzip > /srv/nextcloud-postgres/backups/nextcloud-postgres-backup-$$(date "+%Y-%m-%d_%H-%M").gz
|
|
&& tar -zcpf /srv/nextcloud-application-data/backups/nextcloud-application-data-backup-$$(date "+%Y-%m-%d_%H-%M").tar.gz /var/www/html
|
|
&& find /srv/nextcloud-postgres/backups -type f -mtime +7 | xargs rm -f
|
|
&& find /srv/nextcloud-application-data/backups -type f -mtime +7 | xargs rm -f;
|
|
sleep 24h; done'
|
|
environment:
|
|
PUID: 1000
|
|
PGID: 1000
|
|
TZ: ${TZ}
|
|
PGUSER: ${PG_USER}
|
|
POSTGRES_USER: ${PG_USER}
|
|
POSTGRES_PASSWORD: ${PG_PASSWORD}
|
|
DB_NAME: nextcloud,vaultwarden
|
|
LANG: ru_RU.utf8
|
|
volumes:
|
|
- "postgres-data:/var/lib/postgresql/data"
|
|
# Database backups location
|
|
- "postgres-backups:/srv/nextcloud-postgres/backups"
|
|
restart: unless-stopped
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
|
|
redis:
|
|
container_name: redis
|
|
image: redis:alpine3.17
|
|
restart: always
|
|
mem_limit: 2048m
|
|
mem_reservation: 512m
|
|
command: redis-server --requirepass $REDIS_PASSWORD
|
|
networks:
|
|
- inner |