mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 01:50:10 +00:00
9.0 KiB
9.0 KiB
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 — инфраструктура, DNS, учётные данные, TLS/LE, бэкапы
- BRIDGE-TELEGRAM.md — мост Telegram (Slidge): статус, регистрация, задача по аватарам
- WALKTHROUGH.md — полный разбор всех этапов, команд, засад (ESM-фикс, TLS, HTTP Upload, OMEMO, регистрация slidgram §12, push §10.4)
- CHEATSHEET.md — полезные команды
- PRD.md · MIGRATION.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)
- Прод 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 удалён. - Тестовый стенд /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ер). Не трогать сервер.
Быстрые команды
cd /opt/icq && docker compose ps
docker logs icq-prosody --tail 50
docker exec icq-prosody prosodyctl check config
# полный список: CHEATSHEET.md