# Миграция XMPP: chat.nixg.ru → nixg.ru (юзеры user@nixg.ru, XMPP-домен через xmpp.nixg.ru) > Дата: 2026-08-28 (вечер) · bigbox (/opt/icq) > Статус: **ВЫПОЛНЕНО ПОЛНОСТЬЮ ✅** (2026-08-28): SRV → xmpp.nixg.ru (проверено dig), LE-серт Prosody (dns-01) получен и установлен, HTTP Upload настроен. > Цель: JID юзеров `user@nixg.ru`, Prosody на VirtualHost nixg.ru, веб-клиент остаётся на https://chat.nixg.ru (страница), > WebSocket клиентов → **wss://xmpp.nixg.ru/xmpp-websocket** (поддомен, визитка на apex НЕ тронута). ## ВЫБРАННЫЙ ВАРИАНТ: xmpp.nixg.ru (а не apex!) - Пользователь согласился на вариант **xmpp.nixg.ru**: визитка на apex nixg.ru (81.177.135.175) осталась нетронутой. - XMPP-сервер: VirtualHost **nixg.ru** (JID: user@nixg.ru). - WS-адрес: **wss://xmpp.nixg.ru/xmpp-websocket** (A-запись xmpp.nixg.ru → 87.242.100.206, LE-серт через Caddy). - Веб-клиент: **https://chat.nixg.ru** (страница, Converse.js), websocket_url → wss://xmpp.nixg.ru/xmpp-websocket. ## Что сделано (все шаги выполнены и проверены) ### 1. Бэкап - /opt/icq/backups/pre-migration-20260828-184316.tar.gz (data, config, certs, docker-compose.yml, webchat/) - /opt/icq/backups/data-pre-migration-clean-*.tar.gz ### 2. DNS (панель Jino) — ЧАСТИЧНО, ОСТАЛОСЬ У ПОЛЬЗОВАТЕЛЯ - ✅ A `xmpp.nixg.ru` → 87.242.100.206 (добавлен, проверено через dig @8.8.8.8) - ⏳ SRV _xmpp-client._tcp.nixg.ru → **0 5 5222 xmpp.nixg.ru.** (сейчас ещё chat.nixg.ru) - ⏳ SRV _xmpp-server._tcp.nixg.ru → **0 5 5269 xmpp.nixg.ru.** (сейчас ещё chat.nixg.ru) - ⏳ SRV _xmpp-client-websocket._tcp.nixg.ru → **0 5 443 xmpp.nixg.ru.** (сейчас ещё chat.nixg.ru — заметил пользователь!) - НЕ ТРОГАТЬ: A nixg.ru (визитка 81.177.135.175), A chat.nixg.ru (веб), MX mail.nixg.ru (почта) ### 3. Сертификаты - ✅ Caddy на vps02 выпустил **настоящий Let's Encrypt** для **xmpp.nixg.ru** (acme-v02, issuer YE2, 2026-08-28, до 2026-11-26) — WSS работает. - ✅ Самоподписанный `nixg.ru.crt/key` сгенерирован (SAN: nixg.ru, xmpp.nixg.ru, localhost) → /opt/icq/certs/ - ⏳ **TODO**: заменить самоподписанный cert Prosody (c2s/s2s 5222/5269) для nixg.ru на настоящий LE (dns-01) — для федерации. ### 4. Prosody (config/prosody.cfg.lua) — ✅ - VirtualHost: **nixg.ru** (вместо chat.nixg.ru) - admins = { "admin@nixg.ru" } - ssl: nixg.ru.crt/key - cross_domain_websocket = { "https://chat.nixg.ru", "https://xmpp.nixg.ru" } - MUC: Component "conference.nixg.ru" "muc" - Аккаунт: **admin@nixg.ru**, SCRAM-хеш скопирован из data/chat%2enixg%2eru/accounts/admin.dat → data/nixg%2eru/accounts/admin.dat → пароль тот же: `<в защищённом хранилище>`; проверено: вход по wss://xmpp.nixg.ru AUTH OK (slixmpp) - Старые данные chat%2enixg%2eru оставлены (для отката); PEP/OMEMO админа НЕ переносились (ключи пересоздаст клиент) ### 5. Caddy (vps02, /opt/caddy/Caddyfile) — ✅ - Добавлен блок: ``` xmpp.nixg.ru { # XMPP WebSocket (Converse.js → nginx на bigbox, TLS выпустит Caddy) reverse_proxy 10.8.0.2:8081 { header_up Host {host} header_up X-Forwarded-Proto https } } ``` - Бэкап Caddyfile: /opt/caddy/Caddyfile.bak-* - Проверка: wss://xmpp.nixg.ru/xmpp-websocket → **101 Switching Protocols** (curl --http1.1, Sec-WebSocket-Protocol: xmpp) ### 6. nginx/webchat (bigbox) — ✅ - webchat/index.html: websocket_url → **'wss://xmpp.nixg.ru/xmpp-websocket'** - webchat/nginx.conf: server_name chat.nixg.ru xmpp.nixg.ru ### 7. Проверка end-to-end — ✅ - https://xmpp.nixg.ru/ → 200 (Caddy+nginx) - TLS: LE (issuer YE2), valid до 2026-11-26 - WS: wss://xmpp.nixg.ru/xmpp-websocket → 101 - Вход admin@nixg.ru через wss://xmpp.nixg.ru: AUTH OK (slixmpp) - Веб-чат: https://chat.nixg.ru открылся у пользователя (Converse.js работает) - ⚠️ ЗАЛИПШИЙ localStorage: в браузере мог остаться старый JID admin@chat.nixg.ru → ошибка host-unknown; просто удалить localStorage/зайти в инкогнито ## Что осталось 1. **DNS (пользователь, панель Jino)**: 3 SRV-записи → xmpp.nixg.ru. (см. п.2) 2. **Замена самоподписанного cert Prosody** на LE (dns-01) — для федерации (сейчас с s2s могут быть проблемы с другими серверами) 3. **Документация**: WALKTHROUGH.md и PRD.md ещё содержат старые адреса chat.nixg.ru — обновить ## Как проверить (команды) ```bash cd /opt/icq && docker compose ps dig +short A xmpp.nixg.ru # → 87.242.100.206 dig +short SRV _xmpp-client._tcp.nixg.ru # → 0 5 5222 xmpp.nixg.ru. echo | openssl s_client -connect xmpp.nixg.ru:443 -servername xmpp.nixg.ru 2>/dev/null | openssl x509 -noout -issuer -dates curl -sk --http1.1 -v -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Version: 13" -H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" -H "Sec-WebSocket-Protocol: xmpp" https://xmpp.nixg.ru/xmpp-websocket # → 101 python3 /tmp/wstest_nixg.py # AUTH OK admin@nixg.ru ``` ## Файлы - /opt/icq/config/prosody.cfg.lua - /opt/icq/docker-compose.yml - /opt/icq/webchat/index.html, /opt/icq/webchat/nginx.conf - /tmp/wstest_nixg.py (тест входа) - Caddy: /opt/caddy/Caddyfile (vps02) - DNS: панель Jino (nixg.ru)