Bring 15 stale entries in line with current private configs
Several of these had drifted so far they were unrecognizable (Nextcloud was a bare minio stub, Ollama was missing the ollama service entirely, Immich was missing 2 of 4 services). Also removed a real, exposed Authentik OAuth client_id/secret that was sitting in Paperless-NGX's entry (confirmed stale/rotated already, but shouldn't have been public regardless) and stripped internal Caddy CA trust details from every file per the same rule applied to nocodb/dashy etc.
This commit is contained in:
15 files changed
+450
-202
No files matched your search
@@ -3,16 +3,17 @@ services:
|
|||||||
image: actualbudget/actual-server:latest
|
image: actualbudget/actual-server:latest
|
||||||
container_name: actual
|
container_name: actual
|
||||||
ports:
|
ports:
|
||||||
- 5006:5006
|
- ${HTTP_PORT}:5006
|
||||||
environment:
|
environment:
|
||||||
- PUID=PUID
|
- PUID=${PUID}
|
||||||
- PGID=PGID
|
- PGID=${PGID}
|
||||||
- TZ=timezone
|
- TZ=${TZ}
|
||||||
# Uncomment any of the lines below to set configuration options.
|
|
||||||
# - ACTUAL_HTTPS_KEY=/data/selfhost.key
|
|
||||||
# - ACTUAL_HTTPS_CERT=/data/selfhost.crt
|
|
||||||
# See all options and more details at https://actualbudget.github.io/docs/Installing/Configuration
|
|
||||||
# !! If you are not using any of these options, remove the 'environment:' tag entirely.
|
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/actual-data:/data
|
- /path/to/actual/actual-data:/data
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- actual-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
actual-net:
|
||||||
|
external: true
|
||||||
@@ -1,75 +1,108 @@
|
|||||||
---
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
postgresql:
|
postgresql:
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
container_name: authentik-postgres
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: ${PG_DB}
|
||||||
|
POSTGRES_PASSWORD: ${PG_PASS}
|
||||||
|
POSTGRES_USER: ${PG_USER}
|
||||||
|
command: >
|
||||||
|
postgres
|
||||||
|
-c max_connections=400
|
||||||
|
-c shared_buffers=256MB
|
||||||
|
-c work_mem=8MB
|
||||||
|
-c maintenance_work_mem=128MB
|
||||||
|
-c effective_cache_size=1GB
|
||||||
|
healthcheck:
|
||||||
|
interval: 30s
|
||||||
|
retries: 5
|
||||||
|
start_period: 20s
|
||||||
|
test:
|
||||||
|
- CMD-SHELL
|
||||||
|
- pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}
|
||||||
|
timeout: 5s
|
||||||
image: docker.io/library/postgres:16-alpine
|
image: docker.io/library/postgres:16-alpine
|
||||||
restart: unless-stopped
|
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:
|
volumes:
|
||||||
- /path/to/authentik/database:/var/lib/postgresql/data
|
- /path/to/authentik/database:/var/lib/postgresql/data
|
||||||
environment:
|
networks:
|
||||||
POSTGRES_PASSWORD: ${PG_PASS:?database password required}
|
- authentik-net
|
||||||
POSTGRES_USER: ${PG_USER:-authentik}
|
|
||||||
POSTGRES_DB: ${PG_DB:-authentik}
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
redis:
|
redis:
|
||||||
image: docker.io/library/redis:alpine
|
image: redis:7-alpine
|
||||||
command: --save 60 1 --loglevel warning
|
container_name: authentik-redis
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
command: redis-server --appendonly yes
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
|
test: ["CMD", "redis-cli", "ping"]
|
||||||
start_period: 20s
|
interval: 10s
|
||||||
interval: 30s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
timeout: 3s
|
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/authentik/redis:/data
|
- /path/to/authentik/redis:/data
|
||||||
|
networks:
|
||||||
|
- authentik-net
|
||||||
|
|
||||||
server:
|
server:
|
||||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.4.2}
|
|
||||||
restart: unless-stopped
|
|
||||||
command: server
|
command: server
|
||||||
environment:
|
container_name: authentik-server
|
||||||
AUTHENTIK_REDIS__HOST: redis
|
depends_on:
|
||||||
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
postgresql:
|
||||||
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
|
condition: service_healthy
|
||||||
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
|
redis:
|
||||||
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
|
condition: service_healthy
|
||||||
volumes:
|
|
||||||
- /path/to/authentik/media:/media
|
|
||||||
- /path/to/authentik/custom-templates:/templates
|
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
ports:
|
|
||||||
- "${HTTP_PORT}:9000"
|
|
||||||
- "${HTTPS_PORT}:9443"
|
|
||||||
depends_on:
|
|
||||||
- postgresql
|
|
||||||
- redis
|
|
||||||
worker:
|
|
||||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.4.2}
|
|
||||||
restart: unless-stopped
|
|
||||||
command: worker
|
|
||||||
environment:
|
environment:
|
||||||
AUTHENTIK_REDIS__HOST: redis
|
|
||||||
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
||||||
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
|
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB}
|
||||||
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
|
|
||||||
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
|
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
|
||||||
|
AUTHENTIK_POSTGRESQL__USER: ${PG_USER}
|
||||||
|
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
|
||||||
|
AUTHENTIK_REDIS__HOST: redis
|
||||||
|
AUTHENTIK_URL: ${AUTHENTIK_URL}
|
||||||
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.5.3}
|
||||||
|
ports:
|
||||||
|
- ${COMPOSE_PORT_HTTP}:9000
|
||||||
|
restart: unless-stopped
|
||||||
|
shm_size: 512mb
|
||||||
|
volumes:
|
||||||
|
- /path/to/authentik/data:/data
|
||||||
|
- /path/to/authentik/custom-templates:/templates
|
||||||
|
networks:
|
||||||
|
- authentik-net
|
||||||
|
|
||||||
|
worker:
|
||||||
|
command: worker
|
||||||
|
container_name: authentik-worker
|
||||||
|
depends_on:
|
||||||
|
postgresql:
|
||||||
|
condition: service_healthy
|
||||||
|
redis:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
environment:
|
||||||
|
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
||||||
|
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB}
|
||||||
|
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
|
||||||
|
AUTHENTIK_POSTGRESQL__USER: ${PG_USER}
|
||||||
|
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
|
||||||
|
AUTHENTIK_REDIS__HOST: redis
|
||||||
|
AUTHENTIK_URL: ${AUTHENTIK_URL}
|
||||||
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.5.3}
|
||||||
|
restart: unless-stopped
|
||||||
|
shm_size: 512mb
|
||||||
user: root
|
user: root
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/authentik/var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- /path/to/authentik/media:/media
|
- /path/to/authentik/data:/data
|
||||||
- /path/to/authentik/certs:/certs
|
- /path/to/authentik/certs:/certs
|
||||||
- /path/to/authentik/custom-templates:/templates
|
- /path/to/authentik/custom-templates:/templates
|
||||||
env_file:
|
networks:
|
||||||
- .env
|
- authentik-net
|
||||||
depends_on:
|
|
||||||
- postgresql
|
|
||||||
- redis
|
|
||||||
|
|
||||||
|
networks:
|
||||||
|
authentik-net:
|
||||||
|
external: true
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
services:
|
services:
|
||||||
bookstack:
|
bookstack:
|
||||||
image: lscr.io/linuxserver/bookstack
|
image: lscr.io/linuxserver/bookstack:latest
|
||||||
container_name: bookstack
|
container_name: bookstack
|
||||||
environment:
|
environment:
|
||||||
- PUID=${PUID}
|
- PUID=${PUID}
|
||||||
@@ -20,19 +20,44 @@ services:
|
|||||||
- ${HTTP_PORT}:80
|
- ${HTTP_PORT}:80
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- bookstack_db
|
bookstack_db:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:80/ || exit 1"]
|
||||||
|
interval: 15s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 30s
|
||||||
|
networks:
|
||||||
|
- bookstack-net
|
||||||
|
|
||||||
bookstack_db:
|
bookstack_db:
|
||||||
image: lscr.io/linuxserver/mariadb
|
image: lscr.io/linuxserver/mariadb:latest
|
||||||
container_name: bookstack_db
|
container_name: bookstack_db
|
||||||
environment:
|
environment:
|
||||||
- PUID=${PUID}
|
- PUID=${PUID}
|
||||||
- PGID=${PGID}
|
- PGID=${PGID}
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
|
||||||
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
- MYSQL_DATABASE=${DB_DATABASE}
|
||||||
- MYSQL_USER=${MYSQL_USER}
|
- MYSQL_USER=${DB_USER}
|
||||||
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
- MYSQL_PASSWORD=${DB_PASSWORD}
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/bookstack/bookstack_db_data:/config
|
- /path/to/bookstack/bookstack_db_data:/config
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"mysqladmin ping -h localhost -u${DB_USER} -p${DB_PASSWORD} || exit 1",
|
||||||
|
]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
start_period: 20s
|
||||||
|
networks:
|
||||||
|
- bookstack-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
bookstack-net:
|
||||||
|
external: true
|
||||||
@@ -1,15 +1,21 @@
|
|||||||
version: '3'
|
|
||||||
services:
|
services:
|
||||||
calibre-web:
|
calibre-web-automated:
|
||||||
image: lscr.io/linuxserver/calibre-web:latest
|
image: crocodilestick/calibre-web-automated:latest
|
||||||
container_name: calibre-web
|
container_name: calibre-web-automated
|
||||||
environment:
|
environment:
|
||||||
- PUID=PUID
|
- TZ=${TZ}
|
||||||
- PGID=PGID
|
- DOCKER_MODS=linuxserver/mods:universal-calibre
|
||||||
- TZ=timezone
|
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/calibre-web:/config
|
- /path/to/calibre-web:/config
|
||||||
- /path/to/books:/books
|
- /path/to/media/calibre:/calibre-library
|
||||||
|
- /path/to/calibre-web/ingest:/cwa-book-ingest
|
||||||
|
# This is an ingest dir, NOT a library one. Anything added here will be automatically added to your library according to the settings you have configured in CWA Settings page. All files placed here are REMOVED AFTER PROCESSING
|
||||||
ports:
|
ports:
|
||||||
- 8083:8083
|
- ${HTTP_PORT}:8083
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- media-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
media-net:
|
||||||
|
external: true
|
||||||
@@ -1,18 +1,25 @@
|
|||||||
version: '3'
|
|
||||||
services:
|
services:
|
||||||
calibre:
|
calibre:
|
||||||
image: lscr.io/linuxserver/calibre:latest
|
image: lscr.io/linuxserver/calibre:latest
|
||||||
container_name: calibre
|
container_name: calibre
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined #optional
|
||||||
environment:
|
environment:
|
||||||
- PUID=PUID
|
- PUID=${PUID}
|
||||||
- PGID=PGID
|
- PGID=${PGID}
|
||||||
- TZ=timezone
|
- TZ=${TZ}
|
||||||
- CUSTOM_USER=user
|
|
||||||
- PASSWORD=password
|
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/calibre:/config
|
- /path/to/calibre:/config
|
||||||
- /path/to/books:/books
|
- /path/to/books:/books
|
||||||
ports:
|
ports:
|
||||||
- 8080:8080
|
- ${HTTP_PORT}:8080 # Calibre desktop gui.
|
||||||
- 8081:8081
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- media-net
|
||||||
|
- notif-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
media-net:
|
||||||
|
external: true
|
||||||
|
notif-net:
|
||||||
|
external: true
|
||||||
@@ -1,10 +1,27 @@
|
|||||||
services:
|
services:
|
||||||
cloudcmd:
|
cloudcmd:
|
||||||
image: coderaiser/cloudcmd
|
image: coderaiser/cloudcmd:latest
|
||||||
container_name: cloudcmd
|
container_name: cloudcommander
|
||||||
ports:
|
ports:
|
||||||
- 8000:8000
|
- ${HTTP_PORT}:8000
|
||||||
volumes:
|
volumes:
|
||||||
- ~:/root
|
- ~:/root
|
||||||
- /:/mnt/fs
|
- /:/mnt/fs
|
||||||
|
user: "1000:1000"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"curl -fsS http://localhost:8000 | grep -qi cloudcmd || exit 1",
|
||||||
|
]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 25s
|
||||||
|
networks:
|
||||||
|
- cloudcommander-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
cloudcommander-net:
|
||||||
|
external: true
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
homeassistant:
|
homeassistant:
|
||||||
container_name: home-assistant
|
container_name: home-assistant
|
||||||
image: "ghcr.io/home-assistant/home-assistant:stable"
|
image: ghcr.io/home-assistant/home-assistant:stable
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/home-assistant/config:/config
|
- /path/to/home-assistant/config:/config
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
@@ -11,23 +11,46 @@ services:
|
|||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- ${HTTP_PORT}:8123
|
- "${HTTP_PORT}:8123"
|
||||||
depends_on:
|
depends_on:
|
||||||
- homeassistant-db
|
homeassistant-db:
|
||||||
|
condition: service_healthy
|
||||||
privileged: true
|
privileged: true
|
||||||
|
healthcheck:
|
||||||
|
test: [
|
||||||
|
"CMD-SHELL",
|
||||||
|
"curl -fsS -o /dev/null -w '%{http_code}' http://127.0.0.1:8123/api/
|
||||||
|
| grep -q 401",
|
||||||
|
]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 10
|
||||||
|
start_period: 90s
|
||||||
|
networks:
|
||||||
|
- home-assistant-net
|
||||||
|
|
||||||
homeassistant-db:
|
homeassistant-db:
|
||||||
image: docker.io/postgres:16.3
|
|
||||||
container_name: homeassistant-db
|
container_name: homeassistant-db
|
||||||
|
image: postgres:latest
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_USER=${POSTGRES_USER}
|
- POSTGRES_USER=${POSTGRES_USER}
|
||||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
- POSTGRES_DB=${POSTGRES_DB}
|
- POSTGRES_DB=${POSTGRES_DB}
|
||||||
# ensure the database gets created correctly
|
- POSTGRES_INITDB_ARGS=--encoding=UTF-8 --locale=en_US.UTF-8
|
||||||
# https://github.com/matrix-org/synapse/blob/master/docs/postgres.md#set-up-database
|
|
||||||
- POSTGRES_INITDB_ARGS=--encoding=UTF-8
|
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/home-assistant/schemas:/var/lib/postgresql/data
|
- /path/to/home-assistant/schemas:/var/lib/postgresql
|
||||||
security_opt:
|
security_opt:
|
||||||
- no-new-privileges:true
|
- no-new-privileges:true
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
start_period: 10s
|
||||||
|
networks:
|
||||||
|
- home-assistant-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
home-assistant-net:
|
||||||
|
external: true
|
||||||
@@ -1,7 +1,19 @@
|
|||||||
services:
|
services:
|
||||||
it-tools:
|
it-tools:
|
||||||
image: 'corentinth/it-tools:latest'
|
image: corentinth/it-tools:latest
|
||||||
ports:
|
|
||||||
- '${HTTP_PORT}:80'
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
container_name: it-tools
|
container_name: it-tools
|
||||||
|
ports:
|
||||||
|
- ${HTTP_PORT}:80
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "curl -fsS http://localhost/ > /dev/null || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
|
start_period: 10s
|
||||||
|
networks:
|
||||||
|
- it-tools-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
it-tools-net:
|
||||||
|
external: true
|
||||||
@@ -6,37 +6,21 @@ services:
|
|||||||
- PGID=${PGID}
|
- PGID=${PGID}
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
||||||
command: [ "start.sh", "immich" ]
|
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/upload:/usr/src/app/upload
|
- /path/to/immich/data:/data
|
||||||
|
- /path/to/immich/upload:/usr/src/app/upload
|
||||||
|
- /path/to/external-library-1:/path/to/external-library-1:ro
|
||||||
|
- /path/to/external-library-2:/path/to/external-library-2:ro
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
ports:
|
ports:
|
||||||
- ${HTTP_PORT}:3001
|
- ${HTTP_PORT}:2283
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
- database
|
- database
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
immich-microservices:
|
- immich-net
|
||||||
container_name: immich_microservices
|
|
||||||
environment:
|
|
||||||
- PUID=${PUID}
|
|
||||||
- PGID=${PGID}
|
|
||||||
- TZ=${TZ}
|
|
||||||
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
|
||||||
extends:
|
|
||||||
file: hwaccel.yml
|
|
||||||
service: hwaccel
|
|
||||||
command: [ "start.sh", "microservices" ]
|
|
||||||
volumes:
|
|
||||||
- /path/to/upload:/usr/src/app/upload
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
depends_on:
|
|
||||||
- redis
|
|
||||||
- database
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
immich-machine-learning:
|
immich-machine-learning:
|
||||||
container_name: immich_machine_learning
|
container_name: immich_machine_learning
|
||||||
@@ -49,20 +33,26 @@ services:
|
|||||||
- /path/to/immich/model-cache:/cache
|
- /path/to/immich/model-cache:/cache
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- immich-net
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
|
image: redis:6.2-alpine
|
||||||
environment:
|
environment:
|
||||||
- PUID=${PUID}
|
- PUID=${PUID}
|
||||||
- PGID=${PGID}
|
- PGID=${PGID}
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3
|
volumes:
|
||||||
restart: always
|
- /path/to/immich/redis:/data
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- immich-net
|
||||||
|
|
||||||
database:
|
database:
|
||||||
container_name: immich_postgres
|
container_name: immich_postgres
|
||||||
image: registry.hub.docker.com/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
environment:
|
environment:
|
||||||
@@ -72,8 +62,14 @@ services:
|
|||||||
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||||
- POSTGRES_USER=${DB_USERNAME}
|
- POSTGRES_USER=${DB_USERNAME}
|
||||||
- POSTGRES_DB=${DB_DATABASE_NAME}
|
- POSTGRES_DB=${DB_DATABASE_NAME}
|
||||||
|
- POSTGRES_INITDB_ARGS='--data-checksums'
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/immich/pgdata:/var/lib/postgresql/data
|
- /path/to/immich/pgdata:/var/lib/postgresql/data
|
||||||
restart: always
|
shm_size: 128mb
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- immich-net
|
||||||
|
|
||||||
## there is a known issue with Traefik: see here https://github.com/immich-app/immich/discussions/437#discussioncomment-3609797
|
networks:
|
||||||
|
immich-net:
|
||||||
|
external: true
|
||||||
@@ -1,16 +1,24 @@
|
|||||||
services:
|
services:
|
||||||
joplin-db:
|
joplin-db:
|
||||||
image: postgres:15
|
image: postgres:latest
|
||||||
container_name: joplin-db
|
container_name: joplin-db
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/data:/var/lib/postgresql/data
|
- /path/to/joplin:/var/lib/postgresql
|
||||||
ports:
|
ports:
|
||||||
- 5432:5432
|
- "${POSTGRES_PORT}:5432"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_PASSWORD=db_password
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
- POSTGRES_USER=db_user
|
- POSTGRES_USER=${POSTGRES_USER}
|
||||||
- POSTGRES_DB=joplin
|
- POSTGRES_DB=${POSTGRES_DB}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
start_period: 15s
|
||||||
|
networks:
|
||||||
|
- joplin-net
|
||||||
|
|
||||||
joplin:
|
joplin:
|
||||||
image: joplin/server:latest
|
image: joplin/server:latest
|
||||||
@@ -18,22 +26,31 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- joplin-db
|
- joplin-db
|
||||||
ports:
|
ports:
|
||||||
- 22300:22300
|
- "${HTTP_PORT}:22300"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
- APP_PORT=22300
|
- APP_PORT=${HTTP_PORT}
|
||||||
- APP_BASE_URL=https://subdomain.websiteurl.com
|
- APP_BASE_URL=${APP_BASE_URL}
|
||||||
- DB_CLIENT=pg
|
- DB_CLIENT=pg
|
||||||
- POSTGRES_PASSWORD=db_password
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
- POSTGRES_DATABASE=joplin
|
- POSTGRES_DATABASE=${POSTGRES_DB}
|
||||||
- POSTGRES_USER=db_user
|
- POSTGRES_USER=${POSTGRES_USER}
|
||||||
- POSTGRES_PORT=5432
|
- POSTGRES_PORT=${POSTGRES_PORT}
|
||||||
- POSTGRES_HOST=joplin-db
|
- POSTGRES_HOST=joplin-db
|
||||||
- MAILER_ENABLED=1
|
- MAILER_ENABLED=1
|
||||||
- MAILER_HOST=smtp.gmail.com
|
- MAILER_HOST=${MAILER_HOST}
|
||||||
- MAILER_PORT=465
|
- MAILER_PORT=${MAILER_PORT}
|
||||||
- MAILER_SECURE=1
|
- MAILER_SECURITY=${MAILER_SECURITY}
|
||||||
- MAILER_AUTH_USER=[email protected]
|
- MAILER_AUTH_USER=${MAILER_AUTH_USER}
|
||||||
- MAILER_AUTH_PASSWORD=Y0urP@ssw0rd
|
- MAILER_AUTH_PASSWORD=${MAILER_AUTH_PASSWORD}
|
||||||
- MAILER_NOREPLY_NAME=Joplin
|
- MAILER_NOREPLY_NAME=${MAILER_NOREPLY_NAME}
|
||||||
- MAILER_NOREPLY_EMAIL=[email protected]
|
- MAILER_NOREPLY_EMAIL=${MAILER_NOREPLY_EMAIL}
|
||||||
|
- APP_ADMIN_EMAIL=${APP_ADMIN_EMAIL}
|
||||||
|
- APP_ADMIN_PASSWORD=${APP_ADMIN_PASSWORD}
|
||||||
|
- APP_ADMIN_NAME=${APP_ADMIN_NAME}
|
||||||
|
networks:
|
||||||
|
- joplin-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
joplin-net:
|
||||||
|
external: true
|
||||||
@@ -1,14 +1,82 @@
|
|||||||
|
name: nextcloud
|
||||||
services:
|
services:
|
||||||
minio:
|
db:
|
||||||
image: minio/minio
|
image: lscr.io/linuxserver/mariadb:latest
|
||||||
container_name: minio
|
container_name: nextcloud_db
|
||||||
ports:
|
|
||||||
- ${HTTP_PORT}:9000
|
|
||||||
- ${HTTP_PORT1}:9001
|
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/minio:/data
|
- /path/to/nextcloud/data/db:/var/lib/mysql
|
||||||
|
- /path/to/nextcloud/data/db-config:/config
|
||||||
environment:
|
environment:
|
||||||
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
|
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||||
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
||||||
command: server --console-address ":9001" /data
|
- MYSQL_USER=${MYSQL_USER}
|
||||||
restart: always
|
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
||||||
|
- TZ=${TZ}
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- nextcloud-net
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:alpine
|
||||||
|
container_name: nextcloud_redis
|
||||||
|
environment:
|
||||||
|
- "TZ"
|
||||||
|
volumes:
|
||||||
|
- /path/to/nextcloud/data/redis:/data
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- nextcloud-net
|
||||||
|
|
||||||
|
# Main Nextcloud container (custom image with SMB + cert trust)
|
||||||
|
nextcloud:
|
||||||
|
build:
|
||||||
|
context: ./nextcloud
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: nextcloud
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
- redis
|
||||||
|
volumes:
|
||||||
|
- /path/to/nextcloud/html:/var/www/html
|
||||||
|
- /path/to/nextcloud/html/data:/var/www/html/data
|
||||||
|
- /path/to/nextcloud/html/config:/var/www/html/config
|
||||||
|
- /path/to/nextcloud/html/custom_apps:/var/www/html/custom_apps
|
||||||
|
- /path/to/nextcloud/html/themes:/var/www/html/themes
|
||||||
|
env_file:
|
||||||
|
- ".env"
|
||||||
|
environment:
|
||||||
|
- "TZ"
|
||||||
|
- "DB_TYPE=mysql"
|
||||||
|
- "DB_HOST=db"
|
||||||
|
- "DB_NAME=${MYSQL_DATABASE}"
|
||||||
|
- "DB_USER=${MYSQL_USER}"
|
||||||
|
- "DB_PASSWORD=${MYSQL_PASSWORD}"
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- nextcloud-net
|
||||||
|
- caddy-net
|
||||||
|
|
||||||
|
euro-office:
|
||||||
|
build:
|
||||||
|
context: ./euro-office
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: nextcloud_euro-office
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8080:80"
|
||||||
|
environment:
|
||||||
|
- JWT_ENABLED=true
|
||||||
|
- JWT_SECRET=${ONLYOFFICE_JWT_SECRET}
|
||||||
|
volumes:
|
||||||
|
- /path/to/nextcloud/euro-office/data:/var/lib/euro-office/documentserver
|
||||||
|
- /path/to/nextcloud/euro-office/logs:/var/log/euro-office/documentserver
|
||||||
|
- /path/to/nextcloud/euro-office/config:/etc/euro-office/documentserver
|
||||||
|
networks:
|
||||||
|
- nextcloud-net
|
||||||
|
- caddy-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
nextcloud-net:
|
||||||
|
external: true
|
||||||
|
caddy-net:
|
||||||
|
external: true
|
||||||
@@ -1,14 +1,44 @@
|
|||||||
services:
|
services:
|
||||||
open-webui:
|
ollama:
|
||||||
image: ghcr.io/open-webui/open-webui:ollama
|
# Uncomment below for GPU support
|
||||||
container_name: open-webui
|
# deploy:
|
||||||
environment:
|
# resources:
|
||||||
- PUID=${PUID}
|
# reservations:
|
||||||
- PGID=${PGID}
|
# devices:
|
||||||
- TZ=${TZ}
|
# - driver: nvidia
|
||||||
ports:
|
# count: 1
|
||||||
- ${HTTP_PORT}:8080
|
# capabilities:
|
||||||
|
# - gpu
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/open-webui/ollama:/root/.ollama
|
- /path/to/ollama:/root/.ollama
|
||||||
- /path/to/open-webui/app:/app/backend/data
|
# Uncomment below to expose Ollama API outside the container stack
|
||||||
|
ports:
|
||||||
|
- "${HTTP_PORT2}:11434"
|
||||||
|
container_name: ollama
|
||||||
|
pull_policy: always
|
||||||
|
tty: true
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
image: ollama/ollama:latest
|
||||||
|
networks:
|
||||||
|
- openai-net
|
||||||
|
|
||||||
|
open-webui:
|
||||||
|
image: ghcr.io/open-webui/open-webui:latest
|
||||||
|
container_name: open-webui
|
||||||
|
volumes:
|
||||||
|
- /path/to/open-webui:/app/backend/data
|
||||||
|
depends_on:
|
||||||
|
- ollama
|
||||||
|
ports:
|
||||||
|
- "${HTTP_PORT}:8080"
|
||||||
|
environment:
|
||||||
|
- "OLLAMA_BASE_URL=http://ollama:11434"
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- openai-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
openai-net:
|
||||||
|
external: true
|
||||||
@@ -1,14 +1,16 @@
|
|||||||
services:
|
services:
|
||||||
broker:
|
broker:
|
||||||
image: docker.io/library/redis:latest
|
image: docker.io/library/redis:7
|
||||||
|
container_name: paperless-redis
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/paperless/redisdata:/data
|
- /path/to/paperless/redisdata:/data
|
||||||
networks:
|
networks:
|
||||||
paperless:
|
- paperless-net
|
||||||
|
|
||||||
db:
|
db:
|
||||||
image: docker.io/library/postgres:latest
|
image: docker.io/library/postgres:15
|
||||||
|
container_name: paperless-postgres
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/paperless/pgdata:/var/lib/postgresql/data
|
- /path/to/paperless/pgdata:/var/lib/postgresql/data
|
||||||
@@ -17,10 +19,11 @@ services:
|
|||||||
POSTGRES_USER: ${POSTGRES_USER}
|
POSTGRES_USER: ${POSTGRES_USER}
|
||||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||||
networks:
|
networks:
|
||||||
paperless:
|
- paperless-net
|
||||||
|
|
||||||
webserver:
|
webserver:
|
||||||
image: ghcr.io/paperless-ngx/paperless-ngx:latest
|
image: ghcr.io/paperless-ngx/paperless-ngx:latest
|
||||||
|
container_name: paperless
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
@@ -28,7 +31,7 @@ services:
|
|||||||
- gotenberg
|
- gotenberg
|
||||||
- tika
|
- tika
|
||||||
ports:
|
ports:
|
||||||
- "8005:8000"
|
- "${HTTP_PORT}:8000"
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/paperless/data:/usr/src/paperless/data
|
- /path/to/paperless/data:/usr/src/paperless/data
|
||||||
- /path/to/paperless/media:/usr/src/paperless/media
|
- /path/to/paperless/media:/usr/src/paperless/media
|
||||||
@@ -45,16 +48,13 @@ services:
|
|||||||
PAPERLESS_URL: ${PAPERLESS_URL}
|
PAPERLESS_URL: ${PAPERLESS_URL}
|
||||||
PAPERLESS_ADMIN_USER: ${PAPERLESS_ADMIN_USER}
|
PAPERLESS_ADMIN_USER: ${PAPERLESS_ADMIN_USER}
|
||||||
PAPERLESS_ADMIN_PASSWORD: ${PAPERLESS_ADMIN_PASSWORD}
|
PAPERLESS_ADMIN_PASSWORD: ${PAPERLESS_ADMIN_PASSWORD}
|
||||||
PAPERLESS_APPS: "allauth.socialaccount.providers.openid_connect"
|
|
||||||
# Find out how to configure Authentik: https://youtu.be/enwFWELCYJo
|
|
||||||
PAPERLESS_SOCIALACCOUNT_PROVIDERS: '{"openid_connect": {"APPS": [{"provider_id": "authentik","name": "Authentik SSO","client_id": "0gGOZHjx1iJAlh5wN8m1b7uZKwWnPaClGJNKhQDV","secret": "oqskOOlJ1TJzedWZR9WmcVKmxn1HFqGIroi6oiB5xh03qCofuyIDh2DDaf8OnlTybOMiBQkz9rLNO17s4Bx1aG8aGIErp1n6ly0WwQJOk38Tbq3ctOyZGFagEvysp6o2","settings": { "server_url": "https://authentik.local.thesabear.net/application/o/paperless/.well-known/openid-configuration"}}]}}'
|
|
||||||
networks:
|
networks:
|
||||||
paperless:
|
- paperless-net
|
||||||
|
|
||||||
gotenberg:
|
gotenberg:
|
||||||
image: docker.io/gotenberg/gotenberg:latest
|
image: docker.io/gotenberg/gotenberg:7.10
|
||||||
|
container_name: paperless-gotenberg
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
# The gotenberg chromium route is used to convert .eml files. We do not
|
# The gotenberg chromium route is used to convert .eml files. We do not
|
||||||
# want to allow external content like tracking pixels or even javascript.
|
# want to allow external content like tracking pixels or even javascript.
|
||||||
command:
|
command:
|
||||||
@@ -62,14 +62,15 @@ services:
|
|||||||
- "--chromium-disable-javascript=true"
|
- "--chromium-disable-javascript=true"
|
||||||
- "--chromium-allow-list=file:///tmp/.*"
|
- "--chromium-allow-list=file:///tmp/.*"
|
||||||
networks:
|
networks:
|
||||||
paperless:
|
- paperless-net
|
||||||
|
|
||||||
tika:
|
tika:
|
||||||
image: ghcr.io/paperless-ngx/tika:latest
|
image: docker.io/apache/tika:latest
|
||||||
|
container_name: paperless-tika
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
paperless:
|
- paperless-net
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
paperless:
|
paperless-net:
|
||||||
external: true
|
external: true
|
||||||
@@ -3,17 +3,22 @@ services:
|
|||||||
container_name: speedtest-tracker
|
container_name: speedtest-tracker
|
||||||
image: lscr.io/linuxserver/speedtest-tracker:latest
|
image: lscr.io/linuxserver/speedtest-tracker:latest
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "${HTTPS_PORT}:443"
|
||||||
- "443:443"
|
|
||||||
environment:
|
environment:
|
||||||
- PUID=PUID
|
- PUID=${PUID}
|
||||||
- PGID=PGID
|
- PGID=${PGID}
|
||||||
- TZ=timezone
|
- TZ=${TZ}
|
||||||
- APP_KEY=${APP_KEY} # Application key for Laravel framework security. Generate a App Key here - https://speedtest-tracker.dev
|
- APP_KEY=${APP_KEY}
|
||||||
- APP_URL=${APP_URL} # Public URL where the Speedtest Tracker will be accessible.
|
- APP_URL=${APP_URL}
|
||||||
- DB_CONNECTION=sqlite # Uses SQLite as the database.
|
- DB_CONNECTION=sqlite
|
||||||
- SPEEDTEST_SCHEDULE="0 */3 * * *" # Cron schedule, runs every 3 hours.
|
- SPEEDTEST_SCHEDULE="0 */3 * * *" # Cron schedule, runs every 3 hours.
|
||||||
- DISPLAY_TIMEZONE=${DISPLAY_TIMEZONE} # Sets the timezone for displaying data in the UI.
|
- DISPLAY_TIMEZONE=${DISPLAY_TIMEZONE}
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/speedtest-tracker/data:/config # Mounts the directory for persistent data.
|
- /path/to/speedtest-tracker/data:/config
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- speedtest-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
speedtest-net:
|
||||||
|
external: true
|
||||||
@@ -1,15 +1,22 @@
|
|||||||
services:
|
services:
|
||||||
bitwarden:
|
vaultwarden:
|
||||||
image: vaultwarden/server:latest
|
image: vaultwarden/server:latest
|
||||||
container_name: vaultwarden
|
container_name: vaultwarden
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 80:80
|
- ${HTTP_PORT}:80
|
||||||
volumes:
|
volumes:
|
||||||
- /path/to/bw-data:/data
|
- /path/to/vaultwarden/bw-data:/data
|
||||||
environment:
|
environment:
|
||||||
- PUID=PUID
|
- PUID=${PUID}
|
||||||
- PGID=PGID
|
- PGID=${PGID}
|
||||||
- TZ=timezone
|
- TZ=${TZ}
|
||||||
|
- ICON_CACHE_TTL=0
|
||||||
- WEBSOCKET_ENABLED='true' # Required to use websockets
|
- WEBSOCKET_ENABLED='true' # Required to use websockets
|
||||||
- SIGNUPS_ALLOWED='true' # set to false to disable signups
|
- SIGNUPS_ALLOWED='true' # set to false to disable signups
|
||||||
|
networks:
|
||||||
|
- vaultwarden-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
vaultwarden-net:
|
||||||
|
external: true
|
||||||
Reference in new issue
Block a user