version: "3.9" services: prosody: image: prosody/prosody:latest container_name: icq-prosody restart: unless-stopped hostname: chat.nixg.ru volumes: - ./data:/var/lib/prosody - ./config:/etc/prosody - ./certs:/etc/prosody/certs - ./modules:/etc/prosody/modules # для кастомных модулей (http_upload и т.п.) - ./logs:/var/log/prosody ports: - "5222:5222" # c2s (клиенты) - "5269:5269" # s2s (федерация) - "5280:5280" # BOSH / websocket - "5281:5281" # websocket TLS (если нужен) environment: - LOCAL=nixg.ru - DOMAIN=nixg.ru - "XMPP_DOMAIN=nixg.ru" # Для проброса трафика извне через WireGuard на 5222/5269 нужно, # чтобы контейнер слушал на хосте. Пока оставляем привязку на все интерфейсы. # Caddy (websocket) идёт на 5280/5281. # Примечание: для федерации также открыть 5269 на VPS02 (форвард на bigbox). webchat: image: nginx:alpine container_name: icq-webchat restart: unless-stopped volumes: - ./webchat/nginx.conf:/etc/nginx/conf.d/default.conf:ro - ./webchat:/usr/share/nginx/html:ro ports: - "8081:8081" # веб-клиент (Caddy на vps02 проксирует на 10.8.0.2:8081) depends_on: - prosody # Мост XMPP -> Telegram (Slidge/slidgram), external component (XEP-0114) # Трафик Telegram идёт через SOCKS5-прокси на хосте (172.27.0.1:1080 = SSH-туннель VPS01) slidgram: image: slidgram-proxy:latest container_name: icq-slidgram restart: unless-stopped volumes: - ./slidgram/data:/var/lib/slidge environment: - SLIDGE_JID=telegram.nixg.ru - SLIDGE_SECRET=83276db6e870f540163f271d9bd7d3a390530b9ad7b45f58 - SLIDGE_SERVER=icq-prosody - SLIDGE_PORT=5347 - SLIDGE_HOME_DIR=/var/lib/slidge - SLIDGE_ADMINS=admin@nixg.ru - SLIDGRAM_PROXY=socks5://172.27.0.1:1080 depends_on: - prosody