240 lines
6.0 KiB
YAML
240 lines
6.0 KiB
YAML
# 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 (Do not expose)
|
|
- "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" # Web interface
|
|
|
|
# --- ejabberd XMPP Client ---
|
|
ejabberd: # :5280 (Admin interface)
|
|
image: ejabberd/ecs:latest
|
|
container_name: ejabberd
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- ejabberd-db
|
|
volumes:
|
|
- ${EJABBERD_CONF}/ejabberd.yml:/opt/ejabberd/conf/ejabberd.yml
|
|
ports:
|
|
- "5222:5222" # XMPP client
|
|
- "5223:5223" # XMPP client (TLS)
|
|
- "5269:5269" # XMPP server-to-server (in)
|
|
- "5443:5443" # HTTP upload
|
|
- "5478:5478/udp" # STUN/TURN
|
|
- "1883:1883" # MQTT
|
|
networks:
|
|
- server-network
|
|
- ejabberd-network
|
|
|
|
ejabberd-db: # Edit DB settings here: /mnt/md0/ejabberd/conf/ejabberd.yml
|
|
image: postgres:latest
|
|
container_name: ejabberd-db
|
|
restart: unless-stopped
|
|
environment:
|
|
- POSTGRES_DB=ejabberd
|
|
- POSTGRES_USER=ejabberd
|
|
- POSTGRES_PASSWORD=${EJABBERD_DB_PASSWORD}
|
|
volumes:
|
|
- ${EJABBERD_DB_DATA}:/var/lib/postgresql/data
|
|
networks:
|
|
- ejabberd-network
|
|
|
|
networks:
|
|
server-network:
|
|
driver: bridge
|
|
nextcloud-network:
|
|
driver: bridge
|
|
ha-network:
|
|
driver: bridge
|
|
ejabberd-network:
|
|
driver: bridge
|
|
|