# sudo docker compose down --volumes # sudo docker compose up -d --remove-orphans name: server services: # --- NGINX Proxy Manager --- nginx-proxy-manager: image: "docker.io/jc21/nginx-proxy-manager:latest" restart: unless-stopped container_name: nginx-proxy-manager ports: - "80:80" - "81:81" # Admin interface - "443:443" environment: - DISABLE_IPV6=true volumes: - ${NGINX_DATA}:/data - ${NGINX_LETSENCRYPT}:/etc/letsencrypt networks: - server-network # --- Nextcloud --- nextcloud: # :80 image: nextcloud:latest restart: unless-stopped container_name: nextcloud depends_on: - nextcloud-db - nextcloud-redis environment: - POSTGRES_HOST=nextcloud-db - POSTGRES_DB=nextcloud - POSTGRES_USER=nextcloud - POSTGRES_PASSWORD=${NEXTCLOUD_DB_PASSWORD} - NEXTCLOUD_TRUSTED_DOMAINS=localhost - OVERWRITEPROTOCOL=https - OVERWRITECLIURL=https://${NC_DOMAIN} - OVERWRITEHOST=${NC_DOMAIN} - TRUSTED_PROXIES=172.16.0.0/12 - NEXTCLOUD_INIT_HTACCESS=true volumes: - ${NEXTCLOUD_DATA}:/var/www/html networks: - server-network - nextcloud-network nextcloud-cron: image: nextcloud:apache restart: unless-stopped container_name: nextcloud-cron entrypoint: /cron.sh depends_on: - nextcloud-db - nextcloud-redis environment: - POSTGRES_HOST=nextcloud-db - POSTGRES_DB=nextcloud - POSTGRES_USER=nextcloud - POSTGRES_PASSWORD=${NEXTCLOUD_DB_PASSWORD} - REDIS_HOST=nextcloud-redis - REDIS_HOST_PASSWORD=${REDIS_PASSWORD} volumes: - ${NEXTCLOUD_DATA}:/var/www/html networks: - nextcloud-network nextcloud-db: image: postgres:latest restart: unless-stopped container_name: nextcloud-db environment: - POSTGRES_DB=nextcloud - POSTGRES_USER=nextcloud - POSTGRES_PASSWORD=${NEXTCLOUD_DB_PASSWORD} volumes: - ${NEXTCLOUD_DB_DATA}:/var/lib/postgresql/data networks: - nextcloud-network nextcloud-redis: image: redis:alpine restart: unless-stopped container_name: nextcloud-redis command: redis-server --requirepass ${REDIS_PASSWORD} networks: - nextcloud-network # --- Gitea --- gitea: # :3000 ports: - "22:22" image: gitea/gitea:latest container_name: gitea restart: unless-stopped volumes: - ${GITEA}:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro networks: - server-network # --- N8n Automation --- n8n: # :5678 image: n8nio/n8n:latest restart: unless-stopped container_name: n8n env_file: - .env environment: - N8N_HOST=${N8N_HOST} - N8N_PORT=5678 - N8N_PROTOCOL=https # Nginx Proxy Manager will handle HTTPS - NODE_ENV=production - WEBHOOK_URL=https://${N8N_HOST}/ - GENERIC_TIMEZONE=${TZ} - N8N_RUNNERS_ENABLED=true - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true volumes: - ${N8N_DATA}:/home/node/.n8n - ${N8N_FILES}:/files networks: - server-network # --- Home Assistant --- homeassistant: # :8123 image: "ghcr.io/home-assistant/home-assistant:stable" container_name: homeassistant env_file: - .env volumes: - ${HA_CONFIG}:/config - /etc/localtime:/etc/localtime:ro - /run/dbus:/run/dbus:ro restart: unless-stopped # devices: # - /dev/ttyUSB0:/dev/ttyUSB0 privileged: true networks: - ha-network - server-network piper: # :10200 image: homeassistant/amd64-addon-piper:latest container_name: piper entrypoint: python3 command: > -m wyoming_piper --piper '/usr/share/piper/piper' --uri 'tcp://0.0.0.0:10200' --length-scale "1" --noise-scale "0.667" --speaker "0" --voice "en_US-lessac-medium" --max-piper-procs "1" --data-dir /data --data-dir /share/piper --download-dir /data volumes: - ${PIPER_DATA}:/data restart: unless-stopped networks: - ha-network whisper: # :10300 image: homeassistant/amd64-addon-whisper:latest container_name: whisper entrypoint: python3 command: > -m wyoming_faster_whisper --uri tcp://0.0.0.0:10300 --model small-int8 --beam-size 1 --language en --data-dir /data --download-dir /data volumes: - ${WHISPER_DATA}:/data restart: unless-stopped networks: - ha-network # --- ESPHome --- esphome: container_name: esphome image: ghcr.io/esphome/esphome:latest volumes: - ${ESPHOME_CONFIG}:/config - /etc/localtime:/etc/localtime:ro restart: unless-stopped privileged: true # network_mode: host ports: - "6052:6052" # # --- Prosody XMPP Server --- # prosody: # :5280 # image: prosody/prosody:latest # container_name: prosody # restart: unless-stopped # ports: # - "5222:5222" # XMPP client connections # - "5269:5269" # XMPP server-to-server connections # volumes: # - ${PROSODY_CONFIG}:/etc/prosody # - ${PROSODY_LOGS}:/var/log/prosody # - ${PROSODY_MODULES}:/usr/lib/prosody-modules # networks: # - server-network volumes: model-cache: networks: server-network: driver: bridge nextcloud-network: driver: bridge ha-network: driver: bridge