Files
icq/MIGRATION.md
T

89 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Миграция 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)