Major accomplishments: - ✅ SELinux policy installed and working - ✅ Core Traefik v2.10 deployment running - ✅ Production configuration ready (v3.1) - ✅ Monitoring stack configured - ✅ Comprehensive documentation created - ✅ Security hardening implemented Current status: - 🟡 Partially deployed (60% complete) - ⚠️ Docker socket access needs resolution - ❌ Monitoring stack not deployed yet - ⚠️ Production migration pending Next steps: 1. Fix Docker socket permissions 2. Deploy monitoring stack 3. Migrate to production config 4. Validate full functionality Files added: - Complete Traefik deployment documentation - Production and test configurations - Monitoring stack configurations - SELinux policy module - Security checklists and guides - Current status documentation
87 lines
2.0 KiB
YAML
87 lines
2.0 KiB
YAML
version: '3.9'
|
|
|
|
services:
|
|
immich_server:
|
|
image: ghcr.io/immich-app/immich-server:v1.119.0
|
|
environment:
|
|
DB_HOST: postgresql_primary
|
|
DB_PORT: 5432
|
|
DB_USERNAME: postgres
|
|
DB_PASSWORD_FILE: /run/secrets/pg_root_password
|
|
DB_DATABASE_NAME: immich
|
|
secrets:
|
|
- pg_root_password
|
|
networks:
|
|
- traefik-public
|
|
- database-network
|
|
volumes:
|
|
- immich_data:/usr/src/app/upload
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3001/api/server-info/ping"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 4G
|
|
cpus: '2.0'
|
|
reservations:
|
|
memory: 1G
|
|
cpus: '0.5'
|
|
placement:
|
|
constraints:
|
|
- "node.labels.role==web"
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.immich.rule=Host(`immich.localhost`)
|
|
- traefik.http.routers.immich.entrypoints=websecure
|
|
- traefik.http.routers.immich.tls=true
|
|
- traefik.http.services.immich.loadbalancer.server.port=3001
|
|
|
|
immich_machine_learning:
|
|
image: ghcr.io/immich-app/immich-machine-learning:v1.119.0
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3003/ping"]
|
|
interval: 60s
|
|
timeout: 15s
|
|
retries: 3
|
|
start_period: 120s
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 8G
|
|
cpus: '4.0'
|
|
reservations:
|
|
memory: 2G
|
|
cpus: '1.0'
|
|
devices:
|
|
- capabilities: [gpu]
|
|
device_ids: ["0"]
|
|
placement:
|
|
constraints:
|
|
- "node.labels.role==db"
|
|
volumes:
|
|
- immich_ml:/cache
|
|
|
|
volumes:
|
|
immich_data:
|
|
driver: local
|
|
driver_opts:
|
|
type: nfs
|
|
o: addr=omv800.local,nolock,soft,rw
|
|
device: :/export/immich/data
|
|
immich_ml:
|
|
driver: local
|
|
|
|
secrets:
|
|
pg_root_password:
|
|
external: true
|
|
|
|
networks:
|
|
traefik-public:
|
|
external: true
|
|
database-network:
|
|
external: true
|