first_commit

This commit is contained in:
2026-08-28 19:36:10 +00:00
commit a104b6d764
11 changed files with 1334 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
# Миграция 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 — обновить
## Как проверить (команды)
```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)