mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 01:50:10 +00:00
6.0 KiB
6.0 KiB
Миграция 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/зайти в инкогнито
Что осталось
- DNS (пользователь, панель Jino): 3 SRV-записи → xmpp.nixg.ru. (см. п.2)
- Замена самоподписанного cert Prosody на LE (dns-01) — для федерации (сейчас с s2s могут быть проблемы с другими серверами)
- Документация: WALKTHROUGH.md и PRD.md ещё содержат старые адреса chat.nixg.ru — обновить
Как проверить (команды)
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)