Update
Deploy authentik / deploy (push) Successful in 16s
Deploy duplicati / deploy (push) Successful in 6s
Deploy immich / deploy (push) Successful in 17s
Deploy obsidian / deploy (push) Successful in 11s

This commit is contained in:
Mike McFetridge
2026-07-22 20:31:54 -04:00
parent daa8765e1c
commit 3d3b9097d5
8 changed files with 211 additions and 106 deletions
+28
View File
@@ -0,0 +1,28 @@
# ============================================================
# SYSTEM SETTINGS
# ============================================================
TZ=America/New_York
PUID=1000
PGID=1000
DATA_PATH=/home/miker/docker/authentik
# ============================================================
# AUTHENTIK VERSION & PORTS
# ============================================================
AUTHENTIK_IMAGE=ghcr.io/goauthentik/server
AUTHENTIK_TAG=2026.2.1
COMPOSE_PORT_HTTP=9000
COMPOSE_PORT_HTTPS=9443
# ============================================================
# DATABASE CREDENTIALS
# ============================================================
PG_DB=authentik
PG_USER=authentik
PG_PASS=GenerateSecurePasswordHere
# ============================================================
# SECURITY KEYS
# ============================================================
# Generate with: openssl rand -base64 36
AUTHENTIK_SECRET_KEY=GenerateSecureSecretKeyHere
+49 -49
View File
@@ -1,79 +1,79 @@
# Authentik Identity & SSO Stack
services: services:
postgresql: postgresql:
env_file: image: docker.io/library/postgres:16-alpine
- .env container_name: authentik-db
restart: unless-stopped
environment: environment:
POSTGRES_DB: ${PG_DB:-authentik} - POSTGRES_DB=${PG_DB:-authentik}
POSTGRES_PASSWORD: ${PG_PASS:?database password required} - POSTGRES_USER=${PG_USER:-authentik}
POSTGRES_USER: ${PG_USER:-authentik} - POSTGRES_PASSWORD=${PG_PASS}
- TZ=${TZ}
volumes:
- ${DATA_PATH}/database:/var/lib/postgresql/data
healthcheck: healthcheck:
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
interval: 30s interval: 30s
timeout: 5s
retries: 5 retries: 5
start_period: 20s start_period: 20s
test:
- CMD-SHELL
- pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}
timeout: 5s
image: docker.io/library/postgres:16-alpine
restart: unless-stopped
volumes:
- /home/miker/docker/authentik/database:/var/lib/postgresql/data
networks: networks:
- authentik - authentik
server: server:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2.1}
container_name: authentik-server
restart: unless-stopped
command: server command: server
environment:
- AUTHENTIK_POSTGRESQL__HOST=postgresql
- AUTHENTIK_POSTGRESQL__NAME=${PG_DB:-authentik}
- AUTHENTIK_POSTGRESQL__USER=${PG_USER:-authentik}
- AUTHENTIK_POSTGRESQL__PASSWORD=${PG_PASS}
- AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY}
- TZ=${TZ}
volumes:
- ${DATA_PATH}/data:/data
- ${DATA_PATH}/custom-templates:/templates
ports:
- "${COMPOSE_PORT_HTTP}:9000"
- "${COMPOSE_PORT_HTTPS}:9443"
shm_size: 512mb
depends_on: depends_on:
postgresql: postgresql:
condition: service_healthy condition: service_healthy
env_file:
- .env
environment:
AUTHENTIK_POSTGRESQL__HOST: postgresql
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required}
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2.1}
ports:
- ${COMPOSE_PORT_HTTP}:9000
- ${COMPOSE_PORT_HTTPS}:9443
restart: unless-stopped
shm_size: 512mb
volumes:
- /home/miker/docker/authentik/data:/data
- /home/miker/docker/authentik/custom-templates:/templates
networks: networks:
- authentik - authentik
- main - main
worker: worker:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2.1}
container_name: authentik-worker
restart: unless-stopped
command: worker command: worker
user: root
environment:
- AUTHENTIK_POSTGRESQL__HOST=postgresql
- AUTHENTIK_POSTGRESQL__NAME=${PG_DB:-authentik}
- AUTHENTIK_POSTGRESQL__USER=${PG_USER:-authentik}
- AUTHENTIK_POSTGRESQL__PASSWORD=${PG_PASS}
- AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY}
- TZ=${TZ}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${DATA_PATH}/data:/data
- ${DATA_PATH}/certs:/certs
- ${DATA_PATH}/custom-templates:/templates
shm_size: 512mb
depends_on: depends_on:
postgresql: postgresql:
condition: service_healthy condition: service_healthy
env_file:
- .env
environment:
AUTHENTIK_POSTGRESQL__HOST: postgresql
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required}
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2.1}
restart: unless-stopped
shm_size: 512mb
user: root
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /home/miker/docker/authentik/data:/data
- /home/miker/docker/authentik/certs:/certs
- /home/miker/docker/authentik/custom-templates:/templates
networks: networks:
- authentik - authentik
- main - main
networks: networks:
main: main:
external: true # Tells Compose not to create this network external: true
authentik: authentik:
external: true # Tells Compose not to create this network external: true
+19
View File
@@ -0,0 +1,19 @@
# ============================================================
# SYSTEM SETTINGS
# ============================================================
TZ=America/New_York
PUID=1000
PGID=1000
PORT=8250
# ============================================================
# PATH LOCATIONS
# ============================================================
DATA_PATH=/home/miker/docker/duplicati
DOCKER_ROOT=/home/miker/docker
IMMICH_LIBRARY=/home/miker/docker/immich/library
# ============================================================
# SECURITY KEYS
# ============================================================
SETTINGS_ENCRYPTION_KEY=84Jo17Ecw5muzGgqVjpeZQYnWBH7XFM7R01CdR646jSIfNbxgp
+25 -12
View File
@@ -1,17 +1,30 @@
# Duplicati — Encrypted Offsite/Local Backup Client
services: services:
duplicati: duplicati:
image: lscr.io/linuxserver/duplicati:latest image: lscr.io/linuxserver/duplicati:latest
container_name: duplicati container_name: duplicati
environment:
- PUID=1000 # Your host user ID
- PGID=1000 # Your host group ID
- TZ=America/New_York
- SETTINGS_ENCRYPTION_KEY=84Jo17Ecw5muzGgqVjpeZQYnWBH7XFM7R01CdR646jSIfNbxgp # <-- Add this line
volumes:
- /home/miker/docker/duplicati/config:/config
- /home/miker/docker/immich/library:/source/photos:ro # Mounts your photo directory as read-only
- /home/miker/docker:/source/apps:ro # Mounts your application data files
- /home/miker/docker/duplicati/backups:/backups # Optional local backup location
ports:
- 8250:8200
restart: unless-stopped restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- SETTINGS_ENCRYPTION_KEY=${SETTINGS_ENCRYPTION_KEY}
volumes:
- ${DATA_PATH}/config:/config
- ${DATA_PATH}/backups:/backups
- ${IMMICH_LIBRARY}:/source/photos:ro
- ${DOCKER_ROOT}:/source/apps:ro
ports:
- "${PORT}:8200"
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8200/ || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
networks:
- main
networks:
main:
external: true
+18
View File
@@ -0,0 +1,18 @@
# ============================================================
# SYSTEM SETTINGS
# ============================================================
TZ=America/New_York
IMMICH_VERSION=v3
# ============================================================
# PATH LOCATIONS
# ============================================================
UPLOAD_LOCATION=/home/miker/docker/immich/library
DB_DATA_LOCATION=/home/miker/docker/immich/postgres
# ============================================================
# DATABASE CREDENTIALS
# ============================================================
DB_USERNAME=postgresadmin
DB_PASSWORD=mM3PXXUjK0QMz7
DB_DATABASE_NAME=immich
+36 -26
View File
@@ -1,51 +1,56 @@
# Immich — Self-Hosted Photo & Video Management
name: immich name: immich
services: services:
immich-server: immich-server:
container_name: immich_server container_name: immich_server
image: ghcr.io/immich-app/immich-server:v3 image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-v3}
# extends: # extends:
# file: hwaccel.transcoding.yml # file: hwaccel.transcoding.yml
# service: cpu # service: cpu
volumes:
- /home/miker/docker/immich/library:/data
- /etc/localtime:/etc/localtime:ro
environment: environment:
DB_USERNAME: postgresadmin - DB_USERNAME=${DB_USERNAME}
DB_PASSWORD: mM3PXXUjK0QMz7 - DB_PASSWORD=${DB_PASSWORD}
DB_DATABASE_NAME: immich - DB_DATABASE_NAME=${DB_DATABASE_NAME}
- TZ=${TZ}
volumes:
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
ports: ports:
- '2283:2283' - "2283:2283"
depends_on: depends_on:
- redis database:
- database condition: service_healthy
restart: always redis:
healthcheck: condition: service_healthy
disable: false restart: unless-stopped
networks: networks:
- immich - immich
- main - main
immich-machine-learning: immich-machine-learning:
container_name: immich_machine_learning container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:v3 image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-v3}
# extends: # extends:
# file: hwaccel.ml.yml # file: hwaccel.ml.yml
# service: cpu # service: cpu
environment:
- TZ=${TZ}
volumes: volumes:
- model-cache:/cache - model-cache:/cache
restart: always restart: unless-stopped
healthcheck:
disable: false
networks: networks:
- immich - immich
redis: redis:
container_name: immich_redis container_name: immich_redis
image: docker.io/valkey/valkey:9@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9 image: docker.io/valkey/valkey:9@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9
restart: unless-stopped
healthcheck: healthcheck:
test: ["CMD-SHELL", "valkey-cli ping || exit 1"] test: ["CMD-SHELL", "valkey-cli ping || exit 1"]
restart: always interval: 10s
timeout: 5s
retries: 5
networks: networks:
- immich - immich
@@ -53,16 +58,21 @@ services:
container_name: immich_postgres container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0 image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
environment: environment:
POSTGRES_PASSWORD: mM3PXXUjK0QMz7 - POSTGRES_USER=${DB_USERNAME}
POSTGRES_USER: postgresadmin - POSTGRES_PASSWORD=${DB_PASSWORD}
POSTGRES_DB: immich - POSTGRES_DB=${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums' - POSTGRES_INITDB_ARGS=--data-checksums
- TZ=${TZ}
volumes: volumes:
- /home/miker/docker/immich/postgres:/var/lib/postgresql/data - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
shm_size: 128mb shm_size: 512mb
restart: always restart: unless-stopped
healthcheck: healthcheck:
disable: false test: ["CMD-SHELL", "pg_isready -U ${DB_USERNAME} -d ${DB_DATABASE_NAME}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 15s
networks: networks:
- immich - immich
+15
View File
@@ -0,0 +1,15 @@
# ============================================================
# SYSTEM SETTINGS
# ============================================================
TZ=America/New_York
PUID=1000
PGID=1000
DATA_PATH=/home/miker/docker/obsidian
# ============================================================
# OBSIDIAN LIVESYNC / COUCHDB CONFIGURATION
# ============================================================
COUCHDB_USER=miker
COUCHDB_PASSWORD=tw9222dvO91ZHb
COUCHDB_DATABASE=obsidian
SERVER_DOMAIN=https://obsidian.mikemcfetridge.com
+21 -19
View File
@@ -1,30 +1,32 @@
# Obsidian Self-Hosted LiveSync (CouchDB Engine)
services: services:
couchdb-obsidian-livesync: couchdb-obsidian-livesync:
image: docker.io/oleduc/docker-obsidian-livesync-couchdb:master
container_name: obsidian-livesync container_name: obsidian-livesync
# image: couchdb:3.3.3 # Specify a stable CouchDB version restart: unless-stopped
image: 'docker.io/oleduc/docker-obsidian-livesync-couchdb:master'
environment: environment:
# User and password for CouchDB admin access - COUCHDB_USER=${COUCHDB_USER}
- COUCHDB_USER=miker - COUCHDB_PASSWORD=${COUCHDB_PASSWORD}
- COUCHDB_PASSWORD=tw9222dvO91ZHb - COUCHDB_DATABASE=${COUCHDB_DATABASE}
- COUCHDB_DATABASE=obsidian - SERVER_DOMAIN=${SERVER_DOMAIN}
- SERVER_DOMAIN=https://obsidian.mikemcfetridge.com - PUID=${PUID}
# Optional: Set PUID, PGID, UMASK, and TZ for user/group permissions and timezone - PGID=${PGID}
- PUID=1000 - UMASK=002
- PGID=1000 - TZ=${TZ}
- UMASK=0022
- TZ=America/New_York # Adjust timezone as needed
volumes: volumes:
# Mount a local directory for CouchDB data persistence - ${DATA_PATH}/data:/opt/couchdb/data
- /home/miker/docker/obsidian/data:/opt/couchdb/data - ${DATA_PATH}/config:/opt/couchdb/etc/local.d
# Mount a local directory for CouchDB configuration files
- /home/miker/docker/obsidian/config:/opt/couchdb/etc/local.d
ports: ports:
# Map CouchDB's default port 5984 to the host machine
- "5984:5984" - "5984:5984"
restart: unless-stopped # Ensure the container restarts automatically unless explicitly stopped healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5984/_up"]
interval: 30s
timeout: 10s
retries: 5
start_period: 20s
networks: networks:
- main - main
networks: networks:
main: main:
external: true # Tells Compose not to create this network external: true