add docker stacks
This commit is contained in:
commit
5a8d189c72
|
|
@ -0,0 +1,104 @@
|
||||||
|
---
|
||||||
|
version: "3.4"
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgresql:
|
||||||
|
image: docker.io/library/postgres:12-alpine
|
||||||
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
|
||||||
|
start_period: 20s
|
||||||
|
interval: 30s
|
||||||
|
retries: 5
|
||||||
|
timeout: 5s
|
||||||
|
volumes:
|
||||||
|
- database:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
POSTGRES_PASSWORD: ${PG_PASS:?database password required}
|
||||||
|
POSTGRES_USER: ${PG_USER:-authentik}
|
||||||
|
POSTGRES_DB: ${PG_DB:-authentik}
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
redis:
|
||||||
|
image: docker.io/library/redis:alpine
|
||||||
|
command: --save 60 1 --loglevel warning
|
||||||
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
|
||||||
|
start_period: 20s
|
||||||
|
interval: 30s
|
||||||
|
retries: 5
|
||||||
|
timeout: 3s
|
||||||
|
volumes:
|
||||||
|
- redis:/data
|
||||||
|
server:
|
||||||
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.10.7}
|
||||||
|
restart: unless-stopped
|
||||||
|
command: server
|
||||||
|
environment:
|
||||||
|
AUTHENTIK_REDIS__HOST: redis
|
||||||
|
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
||||||
|
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
|
||||||
|
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
|
||||||
|
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
|
||||||
|
volumes:
|
||||||
|
- ./media:/media
|
||||||
|
- ./custom-templates:/templates
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
ports:
|
||||||
|
- "${AUTHENTIK_PORT_HTTP}:9000"
|
||||||
|
- "${AUTHENTIK_PORT_HTTPS}:9443"
|
||||||
|
depends_on:
|
||||||
|
- postgresql
|
||||||
|
- redis
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
|
||||||
|
# HTTP redirection to HTTPS
|
||||||
|
- traefik.http.routers.authentik.entrypoints=web
|
||||||
|
- traefik.http.routers.authentik.rule=Host(`${AUTHENTIK_URL}`)
|
||||||
|
- traefik.http.middlewares.authentik-https-redirect.redirectscheme.scheme=https
|
||||||
|
- traefik.http.routers.authentik.middlewares=authentik-https-redirect
|
||||||
|
|
||||||
|
# HTTPS config
|
||||||
|
- traefik.http.routers.authentik-secure.entrypoints=websecure
|
||||||
|
- traefik.http.routers.authentik-secure.rule=Host(`${AUTHENTIK_URL}`)
|
||||||
|
- traefik.http.routers.authentik-secure.tls=true
|
||||||
|
- traefik.http.routers.authentik-secure.tls.certresolver=myresolver
|
||||||
|
- traefik.http.services.authentik-secure.loadbalancer.server.port=9000
|
||||||
|
|
||||||
|
- traefik.docker.network=proxy
|
||||||
|
worker:
|
||||||
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.10.7}
|
||||||
|
restart: unless-stopped
|
||||||
|
command: worker
|
||||||
|
environment:
|
||||||
|
AUTHENTIK_REDIS__HOST: redis
|
||||||
|
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
||||||
|
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
|
||||||
|
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
|
||||||
|
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
|
||||||
|
# `user: root` and the docker socket volume are optional.
|
||||||
|
# See more for the docker socket integration here:
|
||||||
|
# https://goauthentik.io/docs/outposts/integrations/docker
|
||||||
|
# Removing `user: root` also prevents the worker from fixing the permissions
|
||||||
|
# on the mounted folders, so when removing this make sure the folders have the correct UID/GID
|
||||||
|
# (1000:1000 by default)
|
||||||
|
user: root
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ./media:/media
|
||||||
|
- ./certs:/certs
|
||||||
|
- ./custom-templates:/templates
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
depends_on:
|
||||||
|
- postgresql
|
||||||
|
- redis
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
database:
|
||||||
|
driver: local
|
||||||
|
redis:
|
||||||
|
driver: local
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
PG_PASS=YOUR_VERY_LONG_DB_PASSWORD
|
||||||
|
AUTHENTIK_SECRET_KEY=YOUR_VERY_LONG_SECRET_KEY
|
||||||
|
AUTHENTIK_ERROR_REPORTING__ENABLED=true
|
||||||
|
AUTHENTIK_PORT_HTTP=9000
|
||||||
|
AUTHENTIK_PORT_HTTPS=9443
|
||||||
|
|
||||||
|
AUTHENTIK_URL=auth.example.com
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
server:
|
||||||
|
image: gitea/gitea:1.21.4
|
||||||
|
container_name: gitea
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- gitea
|
||||||
|
- backend
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
volumes:
|
||||||
|
- ${GITEA_DIR}:/data
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- ${GITEA_PORT_HTTP}:3000
|
||||||
|
- ${GITEA_PORT_SSH}:22
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
|
||||||
|
# HTTP redirection to HTTPS
|
||||||
|
- traefik.http.routers.gitea.entrypoints=web
|
||||||
|
- traefik.http.routers.gitea.rule=Host(`${GITEA_URL}`)
|
||||||
|
- traefik.http.middlewares.gitea-https-redirect.redirectscheme.scheme=https
|
||||||
|
- traefik.http.routers.gitea.middlewares=gitea-https-redirect
|
||||||
|
|
||||||
|
# HTTPS config
|
||||||
|
- traefik.http.routers.gitea-secure.entrypoints=websecure
|
||||||
|
- traefik.http.routers.gitea-secure.rule=Host(`${GITEA_URL}`)
|
||||||
|
- traefik.http.routers.gitea-secure.tls=true
|
||||||
|
- traefik.http.routers.gitea-secure.tls.certresolver=myresolver
|
||||||
|
- traefik.http.services.gitea-secure.loadbalancer.server.port=3000
|
||||||
|
|
||||||
|
- traefik.docker.network=proxy
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgres:14
|
||||||
|
restart: always
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
networks:
|
||||||
|
- gitea
|
||||||
|
volumes:
|
||||||
|
- ${GITEA_DB_DIR}:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
networks:
|
||||||
|
gitea:
|
||||||
|
external: false
|
||||||
|
backend:
|
||||||
|
external: true
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
USER_UID=1000
|
||||||
|
USER_GID=1000
|
||||||
|
|
||||||
|
GITEA_PORT_HTTP=3000
|
||||||
|
GITEA_PORT_SSH=22
|
||||||
|
GITEA_URL=git.example.com
|
||||||
|
|
||||||
|
GITEA_DIR=/path/to/gitea
|
||||||
|
GITEA_DB_DIR=/path/to/gitea/db
|
||||||
|
|
||||||
|
GITEA__database__DB_TYPE=postgres
|
||||||
|
GITEA__database__HOST=db:5432
|
||||||
|
GITEA__database__NAME=gitea
|
||||||
|
GITEA__database__USER=gitea
|
||||||
|
GITEA__database__PASSWD=YOUR_DB_PASSWORD
|
||||||
|
POSTGRES_USER=gitea
|
||||||
|
POSTGRES_PASSWORD=YOUR_DB_PASSWORD
|
||||||
|
POSTGRES_DB=gitea
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
#
|
||||||
|
# WARNING: Make sure to use the docker-compose.yml of the current release:
|
||||||
|
#
|
||||||
|
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
|
||||||
|
#
|
||||||
|
# The compose file on main may not be compatible with the latest release.
|
||||||
|
#
|
||||||
|
|
||||||
|
name: immich
|
||||||
|
|
||||||
|
services:
|
||||||
|
immich-server:
|
||||||
|
container_name: immich_server
|
||||||
|
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
||||||
|
command: [ "start.sh", "immich" ]
|
||||||
|
volumes:
|
||||||
|
- ${IMMICH_UPLOAD_DIR}:/usr/src/app/upload
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
- ${IMMICH_EXTERNAL_DIR}:/mnt/media:ro
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
ports:
|
||||||
|
- ${IMMICH_PORT_HTTP}:3001
|
||||||
|
- ${IMMICH_PORT_HTTPS}:443
|
||||||
|
expose:
|
||||||
|
- ${IMMICH_PORT_HTTP}
|
||||||
|
- ${IMMICH_PORT_HTTPS}
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- database
|
||||||
|
restart: always
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
|
||||||
|
- traefik.http.routers.immich.entrypoints=web
|
||||||
|
- traefik.http.routers.immich.rule=Host(`${IMMICH_URL}`)
|
||||||
|
- traefik.http.routers.immich.middlewares=immich-https-redirect
|
||||||
|
- traefik.http.middlewares.immich-https-redirect.redirectscheme.scheme=https
|
||||||
|
|
||||||
|
- traefik.http.routers.immich-secure.entrypoints=websecure
|
||||||
|
- traefik.http.routers.immich-secure.rule=Host(`${IMMICH_URL}`)
|
||||||
|
- traefik.http.routers.immich-secure.tls=true
|
||||||
|
- traefik.http.routers.immich-secure.tls.certresolver=myresolver
|
||||||
|
- traefik.http.services.immich-secure.loadbalancer.server.port=3001
|
||||||
|
- traefik.http.services.immich-secure.loadbalancer.server.scheme=http
|
||||||
|
|
||||||
|
- traefik.docker.network=proxy
|
||||||
|
|
||||||
|
immich-microservices:
|
||||||
|
container_name: immich_microservices
|
||||||
|
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
||||||
|
# extends:
|
||||||
|
# file: hwaccel.yml
|
||||||
|
# service: hwaccel
|
||||||
|
command: [ "start.sh", "microservices" ]
|
||||||
|
volumes:
|
||||||
|
- ${IMMICH_UPLOAD_DIR}:/usr/src/app/upload
|
||||||
|
- ${IMMICH_EXTERNAL_DIR}:/mnt/media:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- database
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
immich-machine-learning:
|
||||||
|
container_name: immich_machine_learning
|
||||||
|
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
|
||||||
|
volumes:
|
||||||
|
- model-cache:/cache
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
redis:
|
||||||
|
container_name: immich_redis
|
||||||
|
image: redis:6.2-alpine@sha256:c5a607fb6e1bb15d32bbcf14db22787d19e428d59e31a5da67511b49bb0f1ccc
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
database:
|
||||||
|
container_name: immich_postgres
|
||||||
|
image: tensorchord/pgvecto-rs:pg14-v0.1.11@sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
environment:
|
||||||
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||||
|
POSTGRES_USER: ${DB_USERNAME}
|
||||||
|
POSTGRES_DB: ${DB_DATABASE_NAME}
|
||||||
|
volumes:
|
||||||
|
- pgdata:/var/lib/postgresql/data
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
pgdata:
|
||||||
|
model-cache:
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
IMMICH_PORT_HTTP=3001
|
||||||
|
IMMICH_PORT_HTTPS=443
|
||||||
|
|
||||||
|
IMMICH_URL=immich.example.com
|
||||||
|
IMMICH_EXTERNAL_DIR=/path/to/external/libraries
|
||||||
|
IMMICH_UPLOAD_DIR=/path/to/immich/upload
|
||||||
|
|
||||||
|
IMMICH_VERSION=release
|
||||||
|
DB_PASSWORD=YOUR_DB_PASSWORD
|
||||||
|
DB_HOSTNAME=immich_postgres
|
||||||
|
DB_USERNAME=postgres
|
||||||
|
DB_DATABASE_NAME=immich
|
||||||
|
REDIS_HOSTNAME=immich_redis
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
jellyfin:
|
||||||
|
image: jellyfin/jellyfin:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 1900:1900
|
||||||
|
- 7359:7359
|
||||||
|
- ${JELLYFIN_PORT_HTTP}:8096
|
||||||
|
- ${JELLYFIN_PORT_HTTPS}:8920
|
||||||
|
volumes:
|
||||||
|
- ./cache:/cache
|
||||||
|
- ${JELLYFIN_DIR}:/config:r
|
||||||
|
- ${JELLYFIN_MEDIA_DIR}:/data/media:ro
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
|
||||||
|
# HTTP redirection to HTTPS
|
||||||
|
- traefik.http.routers.jellyfin.entrypoints=web
|
||||||
|
- traefik.http.routers.jellyfin.rule=Host(`${JELLYFIN_URL}`)
|
||||||
|
- traefik.http.middlewares.jellyfin-https-redirect.redirectscheme.scheme=https
|
||||||
|
- traefik.http.routers.jellyfin.middlewares=jellyfin-https-redirect
|
||||||
|
|
||||||
|
# HTTPS config
|
||||||
|
- traefik.http.routers.jellyfin-secure.entrypoints=websecure
|
||||||
|
- traefik.http.routers.jellyfin-secure.rule=Host(`${JELLYFIN_URL}`)
|
||||||
|
- traefik.http.routers.jellyfin-secure.tls=true
|
||||||
|
- traefik.http.routers.jellyfin-secure.tls.certresolver=myresolver
|
||||||
|
- traefik.http.services.jellyfin-secure.loadbalancer.server.port=8096
|
||||||
|
|
||||||
|
- traefik.docker.network=proxy
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
JELLYFIN_PORT_HTTP=8096
|
||||||
|
JELLYFIN_PORT_HTTPS=8920
|
||||||
|
JELLYFIN_URL=jellyfin.example.com
|
||||||
|
|
||||||
|
JELLYFIN_DIR=/path/to/jelly
|
||||||
|
JELLYFIN_MEDIA_DIR=/path/to/media
|
||||||
|
|
||||||
|
TZ=America/Toronto
|
||||||
|
PUID=1000
|
||||||
|
PGID=1000
|
||||||
|
|
@ -0,0 +1,135 @@
|
||||||
|
services:
|
||||||
|
aio-apache:
|
||||||
|
depends_on:
|
||||||
|
aio-nextcloud:
|
||||||
|
condition: service_started
|
||||||
|
required: false
|
||||||
|
aio-notify-push:
|
||||||
|
condition: service_started
|
||||||
|
required: false
|
||||||
|
image: nextcloud/aio-apache:latest
|
||||||
|
init: true
|
||||||
|
ports:
|
||||||
|
- ${APACHE_IP_BINDING}:${APACHE_PORT}:${APACHE_PORT}/tcp
|
||||||
|
- ${APACHE_IP_BINDING}:${APACHE_PORT}:${APACHE_PORT}/udp
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
volumes:
|
||||||
|
- nextcloud_aio_nextcloud:/var/www/html:ro
|
||||||
|
- nextcloud_aio_apache:/mnt/data:rw
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- nextcloud-aio
|
||||||
|
read_only: true
|
||||||
|
tmpfs:
|
||||||
|
- /var/log/supervisord
|
||||||
|
- /var/run/supervisord
|
||||||
|
- /usr/local/apache2/logs
|
||||||
|
- /tmp
|
||||||
|
- /home/www-data
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
|
||||||
|
# HTTP redirection to HTTPS
|
||||||
|
- traefik.http.routers.nextcloud.entrypoints=web
|
||||||
|
- traefik.http.routers.nextcloud.rule=Host(`${NEXTCLOUD_URL}`)
|
||||||
|
- traefik.http.middlewares.nextcloud-https-redirect.redirectscheme.scheme=https
|
||||||
|
- traefik.http.routers.nextcloud.middlewares=nextcloud-https-redirect
|
||||||
|
|
||||||
|
# HTTPS config
|
||||||
|
- traefik.http.routers.nextcloud-secure.entrypoints=websecure
|
||||||
|
- traefik.http.routers.nextcloud-secure.rule=Host(`${NEXTCLOUD_URL}`)
|
||||||
|
- traefik.http.routers.nextcloud-secure.tls=true
|
||||||
|
- traefik.http.routers.nextcloud-secure.tls.certresolver=myresolver
|
||||||
|
- traefik.http.services.nextcloud-secure.loadbalancer.server.port=21000
|
||||||
|
|
||||||
|
- traefik.docker.network=proxy
|
||||||
|
|
||||||
|
aio-database:
|
||||||
|
image: nextcloud/aio-postgresql:latest
|
||||||
|
init: true
|
||||||
|
expose:
|
||||||
|
- "5432"
|
||||||
|
volumes:
|
||||||
|
- nextcloud_aio_database:/var/lib/postgresql/data:rw
|
||||||
|
- nextcloud_aio_database_dump:/mnt/data:rw
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
stop_grace_period: 1800s
|
||||||
|
restart: unless-stopped
|
||||||
|
shm_size: 268435456
|
||||||
|
networks:
|
||||||
|
- nextcloud-aio
|
||||||
|
read_only: true
|
||||||
|
tmpfs:
|
||||||
|
- /var/run/postgresql
|
||||||
|
|
||||||
|
aio-nextcloud:
|
||||||
|
depends_on:
|
||||||
|
aio-database:
|
||||||
|
condition: service_started
|
||||||
|
required: false
|
||||||
|
aio-redis:
|
||||||
|
condition: service_started
|
||||||
|
required: false
|
||||||
|
image: nextcloud/aio-nextcloud:latest
|
||||||
|
init: true
|
||||||
|
expose:
|
||||||
|
- "9000"
|
||||||
|
- "9001"
|
||||||
|
volumes:
|
||||||
|
- nextcloud_aio_nextcloud:/var/www/html:rw
|
||||||
|
- ${NEXTCLOUD_USER_DIR}:/mnt/ncdata:rw
|
||||||
|
- ${NEXTCLOUD_DOCKER_DIR}:/mnt:rw
|
||||||
|
- ${NEXTCLOUD_TRUSTED_CACERTS_DIR}:/usr/local/share/ca-certificates:ro
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
stop_grace_period: 600s
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- nextcloud-aio
|
||||||
|
|
||||||
|
aio-notify-push:
|
||||||
|
image: nextcloud/aio-notify-push:latest
|
||||||
|
init: true
|
||||||
|
expose:
|
||||||
|
- "7867"
|
||||||
|
volumes:
|
||||||
|
- nextcloud_aio_nextcloud:/nextcloud:ro
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- nextcloud-aio
|
||||||
|
read_only: true
|
||||||
|
|
||||||
|
aio-redis:
|
||||||
|
image: nextcloud/aio-redis:latest
|
||||||
|
init: true
|
||||||
|
expose:
|
||||||
|
- "6379"
|
||||||
|
env_file:
|
||||||
|
- stack.env
|
||||||
|
volumes:
|
||||||
|
- nextcloud_aio_redis:/data:rw
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- nextcloud-aio
|
||||||
|
read_only: true
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
nextcloud_aio_apache:
|
||||||
|
name: nextcloud_aio_apache
|
||||||
|
nextcloud_aio_database:
|
||||||
|
name: nextcloud_aio_database
|
||||||
|
nextcloud_aio_database_dump:
|
||||||
|
name: nextcloud_aio_database_dump
|
||||||
|
nextcloud_aio_nextcloud:
|
||||||
|
name: nextcloud_aio_nextcloud
|
||||||
|
nextcloud_aio_redis:
|
||||||
|
name: nextcloud_aio_redis
|
||||||
|
|
||||||
|
networks:
|
||||||
|
nextcloud-aio:
|
||||||
|
name: nextcloud-aio
|
||||||
|
driver: bridge
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
NEXTCLOUD_URL=nextcloud.example.com
|
||||||
|
TZ=America/Toronto
|
||||||
|
|
||||||
|
NEXTCLOUD_DOCKER_DIR=/path/to/nextcloud
|
||||||
|
NEXTCLOUD_DATA_DIR=/path/to/users/data
|
||||||
|
NEXTCLOUD_TRUSTED_CACERTS_DIR=./certificates
|
||||||
|
|
||||||
|
ADMIN_USER=admin
|
||||||
|
ADMIN_PASSWORD=YOUR_ADMIN_PASSWORD
|
||||||
|
|
||||||
|
APACHE_IP_BINDING=0.0.0.0
|
||||||
|
APACHE_PORT=21000
|
||||||
|
APACHE_MAX_TIME=3600
|
||||||
|
APACHE_MAX_SIZE=10737418240
|
||||||
|
|
||||||
|
NEXTCLOUD_UPLOAD_LIMIT=10G
|
||||||
|
POSTGRES_DB=nextcloud_database
|
||||||
|
POSTGRES_HOST=aio-database
|
||||||
|
POSTGRES_PASSWORD=YOUR_DB_PASSWORD
|
||||||
|
POSTGRES_USER=nextcloud
|
||||||
|
|
||||||
|
CLAMAV_ENABLED=false
|
||||||
|
COLLABORA_ENABLED=false
|
||||||
|
FULLTEXTSEARCH_ENABLED=false
|
||||||
|
IMAGINARY_ENABLED=false
|
||||||
|
TALK_ENABLED=false
|
||||||
|
ONLYOFFICE_ENABLED=false
|
||||||
|
|
||||||
|
NEXTCLOUD_HOST=aio-nextcloud
|
||||||
|
NOTIFY_PUSH_HOST=aio-notify-push
|
||||||
|
REDIS_HOST=aio-redis
|
||||||
|
REDIS_HOST_PASSWORD=YOUR_REDIS_PASSWORD
|
||||||
|
|
||||||
|
NC_DOMAIN=${NEXTCLOUD_URL}
|
||||||
|
OVERWRITEHOST=${NC_DOMAIN}
|
||||||
|
OVERWRITEPROTOCOL=https
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Docker Services
|
||||||
|
|
||||||
|
## Traefik
|
||||||
|
|
||||||
|
Traefik is the routing point between user request and backend services. It also handles SSL certificates automatically.
|
||||||
|
It forwards requests from service.example.com to your service running behind.
|
||||||
|
Make sure that TRAEFIK_CERT_DIR exists on disk otherwise Traefik will requests certificates to your subdomains every time it restarts and you will get timed out by Letsencrypt.
|
||||||
|
|
||||||
|
## Authentik
|
||||||
|
|
||||||
|
Authentik is the credentials provider used by all the services. You just need to create accounts and assign permissions through authentik UI, then all accounts will be able to access your services without having to manage users for each.
|
||||||
|
|
||||||
|
## Gitea
|
||||||
|
|
||||||
|
A small, nice Git server.
|
||||||
|
|
||||||
|
## Jellyfin
|
||||||
|
|
||||||
|
At-home netflix
|
||||||
|
|
||||||
|
## Nextcloud
|
||||||
|
|
||||||
|
Google drive replacement
|
||||||
|
|
||||||
|
## Immich
|
||||||
|
|
||||||
|
Google photos replacement
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
version: '3.3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
reverse-proxy:
|
||||||
|
# The official v2 Traefik docker image
|
||||||
|
image: traefik:v2.10
|
||||||
|
# Enables the web UI and tells Traefik to listen to docker
|
||||||
|
command:
|
||||||
|
#- "--log.level=DEBUG"
|
||||||
|
- "--api.insecure=true"
|
||||||
|
- "--providers.docker=true"
|
||||||
|
- "--providers.docker.exposedbydefault=false"
|
||||||
|
- "--providers.file.directory=/traefik/conf"
|
||||||
|
- "--providers.file.watch=true"
|
||||||
|
- "--entrypoints.websecure.address=:443"
|
||||||
|
- "--entrypoints.web.address=:80"
|
||||||
|
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
|
||||||
|
- "--certificatesresolvers.myresolver.acme.email=${TRAEFIK_ADMIN_EMAIL}"
|
||||||
|
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
|
||||||
|
networks:
|
||||||
|
- backend
|
||||||
|
ports:
|
||||||
|
- ${TRAEFIK_PORT_HTTP}:80 # The HTTP port
|
||||||
|
- ${TRAEFIK_PORT_HTTPS}:443 # The HTTP port
|
||||||
|
- ${TRAEFIK_BACKEND_PORT}:8080 # The Web UI (enabled by --api.insecure=true)
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
|
||||||
|
- ${TRAEFIK_DIR}:/traefik
|
||||||
|
- ${TRAEFIK_CERT_DIR}:/letsencrypt # For SSL certificates
|
||||||
|
|
||||||
|
networks:
|
||||||
|
backend:
|
||||||
|
external: true
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
TRAEFIK_PORT_HTTP=80
|
||||||
|
TRAEFIK_PORT_HTTPS=443
|
||||||
|
TRAEFIK_BACKEND_PORT=8080
|
||||||
|
|
||||||
|
TRAEFIK_ADMIN_EMAIL=admin@example.com
|
||||||
|
|
||||||
|
TRAEFIK_DIR=/path/to/traefik
|
||||||
|
TRAEFIK_CERT_DIR=/path/to/traefik/certs
|
||||||
Loading…
Reference in New Issue