mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
89 lines
6.0 KiB
Markdown
89 lines
6.0 KiB
Markdown
# Миграция 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) |