From 49df2ad6817ef2a64ced2dc5899fcb47ece1928d Mon Sep 17 00:00:00 2001 From: kpa39l Date: Sat, 29 Aug 2026 08:45:23 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20push-=D1=83=D0=B2=D0=B5=D0=B4=D0=BE?= =?UTF-8?q?=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=E2=80=94=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=BE,=20=D0=B2=D0=B0=D1=80?= =?UTF-8?q?=D0=B8=D0=B0=D0=BD=D1=82=D1=8B=20=D0=B2=20WALKTHROUGH=2010.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Попытка включить mod_unified_push (apt prosody-modules) → НЕ грузится: требует util.jwt (API 0.12), контейнер 0.11.9. Откатил, error из логов ушёл. - Зафиксированы 2 варианта для будущей реализации: (1) XEP-0357 mod_push/mod_push_offline/mod_push_muc из hg (нативный push для Conversations/Monal, под 0.11); (2) UnifiedPush после апгрейда до 0.12. - Уточнён комментарий mod_admin_web в конфиге (XMPP ad-hoc, НЕ веб-панель). --- STATUS.md | 8 +++++++- WALKTHROUGH.md | 37 ++++++++++++++++++++++++++++++++++++- config/prosody.cfg.lua | 2 +- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/STATUS.md b/STATUS.md index 76ffc06..869070a 100644 --- a/STATUS.md +++ b/STATUS.md @@ -148,7 +148,13 @@ chromium --headless --no-sandbox --disable-gpu --enable-logging=stderr --virtual - Ошибки «http_upload MUST happen with TLS» в prosody.err — ИСТОРИЧЕСКИЕ (28 авг 20:01, до настройки LE-серта); за рестарт 29 авг ошибок нет. - [ ] Мосты mautrix (Telegram/WhatsApp) — Этап 4; нужен external component (mod_component). -- [ ] Push-уведомления (APNs/FCM). +- [ ] Push-уведомления (APNs/FCM) — ОТЛОЖЕН (нет особой потребности; см. WALKTHROUGH раздел 10.4 «Варианты»). + Пробовал (2026-08-29): mod_unified_push из apt-prosody-modules НЕ подходит — требует util.jwt (API 0.12), а контейнер на 0.11.9. + Для реализации нужно (любое из): + (1) XEP-0357: mod_push + mod_push_offline (+ mod_push_muc) из официального hg prosody-modules + (в Debian-пакете их НЕТ) — даёт нативный push для Conversations/Monal через публичные шлюзы; под 0.11. + (2) Апгрейд Prosody до 0.12 → тогда заработает mod_unified_push (UnifiedPush, уже есть в apt). + Сделать, когда появится реальная потребность или закончится список задач. ## 5. Полезные команды (кратко) ```bash diff --git a/WALKTHROUGH.md b/WALKTHROUGH.md index ae68777..17ab1e1 100644 --- a/WALKTHROUGH.md +++ b/WALKTHROUGH.md @@ -465,6 +465,41 @@ Component "conference.nixg.ru" "muc" - **Порядок включения**: после правок конфига — `docker exec icq-prosody prosodyctl check config` → `docker compose restart prosody` → `docker logs icq-prosody --tail 100`. +### 10.4 Push-уведомления (APNs/FCM) — варианты реализации + +**Статус (2026-08-29): ОТЛОЖЕНО.** Особой потребности в push нет; реализуем когда понадобится +или когда исчерпается список задач. Ниже — честная картина с учётом нашей версии Prosody. + +Как устроен push в XMPP (коротко): +- **XEP-0357** — стандарт push-уведомлений. «Перевёрнутая» схема: не сервер шлёт в APNs/FCM, + а мобильный клиент регистрирует у Prosody «push-сервис и токен», и сервер при новом + offline-сообщении зовёт push-сервис, а тот уже доставляет через APNs/FCM. +- Нативные клиенты Conversations (Android) и Monal (iOS) ходят на **свои публичные push-шлюзы** + (conversations.im, push.monal.im) — для них достаточно включить XEP-0357-модули на сервере, + свой APNs/FCM-мост поднимать НЕ нужно. + +**Варианты:** + +**(1) XEP-0357 (рекомендуемый, работает на 0.11)** — mod_push + mod_push_offline (+ mod_push_muc для комнат): +```bash +# Модули НЕ в Debian-пакете prosody-modules — берутся из официального репозитория prosody-modules (Mercurial): +# https://hg.prosody.im/prosody-modules/ (каталоги mod_push, mod_push_offline, mod_push_muc) +# Положить в /opt/icq/modules/, затем в prosody.cfg.lua добавить в modules_enabled: +# "push"; "push_offline"; # и "push_muc" для MUC +``` +Плюс: нативный push для Conversations/Monal через их бесплатные публичные шлюзы, без своей инфраструктуры. + +**(2) UnifiedPush (mod_unified_push)** — только после апгрейда Prosody до 0.12: +```bash +# mod_unified_push уже есть в apt-prosody-modules (скопирован был из /usr/lib/prosody/modules/mod_unified_push/) +# НО требует util.jwt — это API Prosody 0.12+, в нашем контейнере (0.11.9) его НЕТ → модуль не грузится: +# modulemanager error: module 'util.jwt' not found +# Поэтому включить его смысл есть только вместе с переходом prosody на 0.12. +``` + +**Вывод:** пока остаёмся на 0.11.9 без push. Когда появится мобильный клиент или потребность — +идти по варианту (1): скачать 3 модуля из hg, положить в modules/, включить в конфиг (это под 0.11). + ## 11. Полезные команды ```bash cd /opt/icq @@ -482,5 +517,5 @@ curl -sS https://upload.nixg.ru/upload - [x] ~~OMEMO (XEP-0384)~~ — ВЫПОЛНЕНО: раздел 9; скрипт scripts/omemo_check.py. - [ ] Бот-книгоискатель (slixmpp + OPDS) — Этап 3 PRD. venv уже создан (/opt/icq/.venv: aiohttp, slixmpp). - [ ] Мосты mautrix-telegram / mautrix-whatsapp — Этап 4 (нужен Prosody mod_component / external component). -- [ ] Push-уведомления APNs/FCM (публичный push-шлюз для Prosody). +- [ ] Push-уведомления APNs/FCM — ОТЛОЖЕНО, варианты в разделе 10.4. - [ ] Продление LE-серта nixg.ru — 2026-10-15 10:00 (cron Hermes, job ca2a23a34905); процедура в разделе 4. \ No newline at end of file diff --git a/config/prosody.cfg.lua b/config/prosody.cfg.lua index 32c6d8c..40a2155 100644 --- a/config/prosody.cfg.lua +++ b/config/prosody.cfg.lua @@ -38,7 +38,7 @@ modules_enabled = { "register"; -- In-band registration (для первого пользователя) "adhoc"; -- ad-hoc команды "admin_adhoc"; -- админ-команды - "admin_web"; -- веб-панель /admin (yurt-page; глобальный, требует bosh+admin_adhoc+http_files) + "admin_web"; -- XMPP ad-hoc админ-команды (adminsub; НЕ веб-панель — см. разд. 10 WALKTHROUGH) "bosh"; -- BOSH (HTTP long-polling, для mod_admin_web) -- Messaging / Chat