Files
icq/MIGRATION.md
T
2026-08-28 19:36:21 +00:00

6.0 KiB
Raw Blame History

Миграция XMPP: chat.nixg.ru → nixg.ru (юзеры user@nixg.ru, XMPP-домен через xmpp.nixg.ru)

Дата: 2026-08-28 (вечер) · bigbox (/opt/icq) Статус: ВЫПОЛНЕНО (кроме SRV-DNS у пользователя + замена самоподписанного cert) Цель: 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 — обновить

Как проверить (команды)

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)