mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
88 lines
9.0 KiB
Markdown
88 lines
9.0 KiB
Markdown
# ICQ XMPP — ТЕКУЩИЙ СТАТУС И ПЛАН (точка входа для новой сессии)
|
||
|
||
> Обновлено: 2026-08-30 · Сессия: bigbox (/opt/icq)
|
||
|
||
## Проект
|
||
Self-hosted XMPP-мессенджер на **nixg.ru** (Prosody **13.0** + веб-клиент Converse v14 + мост Telegram).
|
||
Миграция на nixg.ru (2026-08-28): JID юзеров `user@nixg.ru`, веб-клиент chat.nixg.ru, WS wss://xmpp.nixg.ru.
|
||
Апгрейд Prosody 0.11.9 → **13.0** (2026-08-30): образ gitea.nixg.ru/hermes/icq-prosody:13.0.
|
||
|
||
**Документация:**
|
||
- [INFRA.md](INFRA.md) — инфраструктура, DNS, учётные данные, TLS/LE, бэкапы
|
||
- [BRIDGE-TELEGRAM.md](BRIDGE-TELEGRAM.md) — мост Telegram (Slidge): статус, регистрация, задача по аватарам
|
||
- [WALKTHROUGH.md](WALKTHROUGH.md) — полный разбор всех этапов, команд, засад (ESM-фикс, TLS, HTTP Upload, OMEMO, регистрация slidgram §12, push §10.4)
|
||
- [CHEATSHEET.md](CHEATSHEET.md) — полезные команды
|
||
- [PRD.md](PRD.md) · [MIGRATION.md](MIGRATION.md) · [XEP-AUDIT.md](XEP-AUDIT.md)
|
||
|
||
## Что работает (подтверждено)
|
||
- ✅ XMPP-сервер nixg.ru: c2s 5222 / s2s 5269 / http 5280 / https 5281, федерация через SRV
|
||
- ✅ TLS: LE-серты (Caddy 443 для WS/веб; Prosody c2s/s2s — dns-01, истекает 2026-11-26, продление вручную)
|
||
- ✅ Веб-чат https://chat.nixg.ru/ (Converse v14, вход admin@nixg.ru, wss://xmpp.nixg.ru)
|
||
- ✅ HTTP Upload (upload.nixg.ru, XEP-0363), OMEMO (XEP-0384, через PEP), MAM, Carbons, MUC, PubSub, Bookmarks
|
||
- ✅ Бэкапы → Яндекс.Диск (cron 2:45), watchdog продления LE-серта (тихий, cron ca2a23a34905)
|
||
- ✅ Мост Telegram (Slidge/slidgram): telegram.nixg.ru аутентифицирован, MTProto через SOCKS5-туннель VPS01
|
||
- ✅ **TG-аккаунт привязан к мосту (2026-08-29)**: estorozhenko@nixg.ru → команда register из Pidgin, номер +792****2181, api_id/api_hash из конфига. Логин OK, контакты и аватары синхронизируются.
|
||
- ✅ Пользователи: admin@nixg.ru, estorozhenko@nixg.ru (оба входят); самостоятельная регистрация ОТКЛЮЧЕНА
|
||
- ✅ **Админы сервера** (2026-08-29): `admins = { "admin@nixg.ru", "estorozhenko@nixg.ru" }` — оба могут ad-hoc команды
|
||
- ✅ **Параллельный стенд Prosody 13.0 ПОДТВЕРЖДЁН** (2026-08-30, /opt/icq/test, контейнер icq-prosody-test):
|
||
авторизация (3 юзера OK + неверный пароль отклонён) и mod_privilege XEP-0356 (roster IQ → result)
|
||
работают на 13.0. Образ: gitea.nixg.ru/hermes/icq-prosody:13.0. → Основа для миграции прода.
|
||
- ✅ **Прод на Prosody 13.0** (2026-08-30): мигрирован, всё работает (см. «Выполнено» ниже).
|
||
Тестовый стенд остановлен (icq-prosody-test, --restart=no) до следующего обновления.
|
||
|
||
## Задачи (будущее)
|
||
|
||
### ✅ ВЫПОЛНЕНО: миграция прода на Prosody 13.0 (2026-08-30)
|
||
- [x] **Прод nixg.ru мигрирован с 0.11.9 на 13.0** (образ gitea.nixg.ru/hermes/icq-prosody:13.0):
|
||
авторизация OK, mod_privilege XEP-0356 работает (Archiving stanza в логах),
|
||
WebSocket 101 через nginx, компонент telegram.nixg.ru аутентифицирован,
|
||
HTTP Upload исправлен (`http_upload_access = { "telegram.nixg.ru" }` — регрессия 13.0,
|
||
слоты выдавались только c2s; без фикса — «No upload slot» у Slidge).
|
||
Детали миграции: WALKTHROUGH.md (новый раздел) + референс prosody-13-parallel-stand.md.
|
||
Изменения конфига под 13.0: pubsub → Component "pubsub.nixg.ru", component_ports удалён.
|
||
- [x] **Тестовый стенд /opt/icq/test ОСТАНОВЛЕН (не удалён)** — контейнер icq-prosody-test
|
||
`docker stop` + `--restart=no`; поднять снова при следующем обновлении.
|
||
- [ ] **module:send_iq фикс mod_privilege на проде (опция)** — если миграция 13.0 откладывается:
|
||
стаб-ACK (коммит 770c9fa) остаётся; полного XEP-0356 на 0.11.9 нет (API 0.12).
|
||
|
||
### Прочее (не критично)
|
||
- [ ] **ИДЕЯ: папки Telegram → подгруппы в ростере моста** (2026-08-30): все TG-контакты сейчас
|
||
скопом в группе «Telegram». Предложение: при подключении к мосту читать список папок/каталогов
|
||
из Telegram (архивы/папки чатов) и создавать соответствующие подгруппы в каталоге моста,
|
||
раскладывая контакты по ним. НО: при 2–3-минутном лаге логина (массовый рендер ростера
|
||
на 1602 контакта) это усугубит старт — реализация только вместе с ускорением рендера.
|
||
См. BRIDGE-TELEGRAM.md «Наблюдения». Отложено.
|
||
- [ ] **Разобраться с рендером 1600 TG-контактов в рostере при каждом логине клиента** (2026-08-30):
|
||
клиент заново скачивает весь рostер + Slidge шлёт presence по всем контактам → 2–3 мин
|
||
и «пик в сети» по каждому. Это специфика Slidge, НЕ баг (серверный рostер цел). Идеи:
|
||
проверить, можно ли в Slidge отложить/пропустить массовый рoster-рендер при login
|
||
(свойства :poll-чатов, cache), и не дёргается ли зря. См. BRIDGE-TELEGRAM.md «Наблюдения».
|
||
- [ ] **Аватары TG в мосте таймаутят** — HTTP-часть slidge не ходит через SOCKS5 (URL web.telegram.org
|
||
недоступны из РФ). Косметика, на переписку не влияет. Разбор и варианты: BRIDGE-TELEGRAM.md.
|
||
- [ ] **Бот-книгоискатель (slixmpp + OPDS)** — Этап 3 PRD. (venv готов: /opt/icq/.venv)
|
||
- [ ] **Мост mautrix (WhatsApp)** — Этап 4; нужен external component. [Telegram уже на Slidge]
|
||
- [ ] **Push-уведомления** — после апгрейда 13.0 (util.jwt нативный); варианты — WALKTHROUGH §10.4
|
||
- [ ] **MAM: ошибка при логине «max_items: not a number»** — проверить настройку mod_mam (не мешает чату)
|
||
|
||
## Известные грабли (2026-08-29)
|
||
- ✅ **РЕШЕНО 2026-08-30: «no-auth-mech» / белый кружок в веб-чате после миграции на 13.0** —
|
||
Prosody 13 считает WS-сессию insecure (TLS на edge: Caddy→nginx→Prosody plain 5280),
|
||
не предлагает SASL («No stream features to offer on insecure session»), Converse
|
||
бесконечно переподключается. ФИКС: `consider_websocket_secure = true` (глобальная
|
||
секция prosody.cfg.lua). НЕ использовать `c2s_require_encryption=false` (дыра в 5222).
|
||
Детали: референс prosody-13-production-migration.md в скилле xmpp-server-prosody.
|
||
- mod_privilege (XEP-0356) сломан на 0.11.9 (module:send_iq — API 0.12). Стоит стаб-ACK (коммит 770c9fa):
|
||
Prosody стабилен, но bookmarks/MDS через XEP-0356 не работают → слайдж шлёт приглашения в группы вручную.
|
||
Полное решение — апгрейд 13.0 (ПОДТВЕРЖДЁН на стенде, см. задачи). Детали: WALKTHROUGH §12.7.
|
||
- ⚠️ ВАЖНО 13.0: в компонентной сессии НЕТ `full_jid` (только host), mod_privilege tip-версии логирует
|
||
«Entity nil» — это НЕ ошибка привилегий, просто лог. Привилегии выдаются корректно (см. стенд).
|
||
- Рostер TG-контактов цел на сервере (1602). Если контакты «пропали» в Pidgin после рестарта —
|
||
Disable/Enable аккаунта (клиент сам скачает рostер). Не трогать сервер.
|
||
|
||
## Быстрые команды
|
||
```bash
|
||
cd /opt/icq && docker compose ps
|
||
docker logs icq-prosody --tail 50
|
||
docker exec icq-prosody prosodyctl check config
|
||
# полный список: CHEATSHEET.md
|
||
``` |