Replica Configuration Current Replica Distribution:
# High availability services tracker-prod_tracker-app: 3 replicas (worker nodes) portainer_agent: global (all nodes) # Single instance services traefik_traefik: 1 replica (manager) postgresql17_postgres: 1 replica (manager) authentik_server: 1 replica (manager) nextcloud_nextcloud: 1 replica (manager) paperless_webserver: 1 replica (manager) Scaling Commands:
# Scale service up docker service scale service-name=5 # Scale multiple services docker service scale service1=3 service2=2 # Scale to zero (maintenance) docker service scale service-name=0 # Auto-scaling based on load (manual implementation) # Monitor CPU/memory and scale accordingly Scaling Considerations:
Environment Variable Patterns Database Connection Pattern:
environment: # PostgreSQL POSTGRES_HOST: postgres POSTGRES_USER: admin POSTGRES_PASSWORD: [SECRET] POSTGRES_DB: database_name # MariaDB DB_HOST: mariadb DB_USERNAME: username DB_PASSWORD: [SECRET] DB_DATABASE: database_name Application Configuration Pattern:
environment: # Application settings APP_URL: https://service.domain.me TZ: America/New_York # User/Group settings (LinuxServer containers) PUID: 1000 PGID: 1000 # Feature toggles ENABLE_REGISTRATION: false DEBUG_MODE: false Security Configuration Pattern:
environment: # Secret keys SECRET_KEY: [SECRET] APP_KEY: [SECRET] # Authentication OAUTH_CLIENT_ID: [SECRET] OAUTH_CLIENT_SECRET: [SECRET] Secret and Config Management Docker Secrets Implementation:
File Organization:
/mnt/docker-configs/swarm/ ├── database/ │ ├── master-db.yml # PostgreSQL │ ├── mariab-service.yml # MariaDB │ └── adminer.yml # Database admin ├── traefik/ │ └── traefik-stack.yml # Reverse proxy ├── authentication/ │ └── authentik-stack.yml # Identity provider ├── applications/ │ ├── nextcloud-stack.yml │ ├── paperless-stack.yml │ ├── vikunja-stack.yml │ └── bookstack-stack.yml ├── monitoring/ │ ├── uptime-kuma-stack.yml │ └── homarr-service.yml └── management/ └── portainer-stack.yml Standard Stack Structure:
# Version specification (optional but recommended) services: service-name: image: image:tag environment: - VAR=value volumes: - volume_name:/container/path networks: - homelab deploy: replicas: 1 placement: constraints: [node.