docs: опыт 2026-08-29 — грабли mod_privilege на 0.11, миллион приглашений, flood wait, план сборки Prosody 0.12 (WALKTHROUGH §12.7-12.8, STATUS, BRIDGE-TELEGRAM)

This commit is contained in:
2026-08-29 18:20:50 +00:00
parent 770c9fa78f
commit 498d79e6df
3 changed files with 69 additions and 2 deletions
+14
View File
@@ -21,6 +21,20 @@
- Трафик Telegram → SOCKS5 172.27.0.1:1080 (SSH-туннель VPS01) — проверено: SOCKS5→MTProto DC1 OK.
- ✅ **mod_privilege (XEP-0356)**: community-модуль → ./modules/mod_privilege.lua, включён в
modules_enabled + privileged_entities в VirtualHost для telegram.nixg.ru (roster sync, legacy carbons).
⚠️ На Prosody 0.11.9 модуль из prosody-modules НЕ работает (зовёт API 0.12 `module:send_iq`).
Стоит стаб-ACK (коммит 770c9fa): модуль отвечает ACK, не падает, но bookmarks/MDS
через XEP-0356 не выполняются → слайдж шлёт приглашения в группы вручную (см. ниже).
Полное решение — апгрейд Prosody на 0.12 (нативный XEP-0356), задача в STATUS.md.
## Наблюдения после регистрации (2026-08-29)
- **«Миллион запросов на подключение к чату» в Pidgin**: слайдж шлёт gateway-приглашение
на каждую группу (`always_invite_when_adding_bookmarks: true` + bookmarks не пишутся из-за
сломанного mod_privilege → fallback на ручные приглашения). Не баг как таковой; уйдёт после
апгрейда 0.12. Временно: `always_invite_when_adding_bookmarks: false` в preferences (SQLite user_account).
- **Flood wait при первом старте**: `WARNING:slidgram.telegram:Flood in get_chat(...) sleep for N sec`
при синхронизации большого аккаунта (1602 контакта). Норма; кэш заполнится — паузы уйдут.
- **Контакты «пропали» из ростера после рестарта**: рostер на сервере цел (проверено, 1602).
Клиент при переподключении сам запрашивает рostер; если в Pidgin пусто — Disable/Enable аккаунта.
## Регистрация TG-аккаунта — ВЫПОЛНЕНА (2026-08-29)
- estorozhenko@nixg.ru → команда `register` (отправлена из Pidgin на адрес telegram.nixg.ru,
+13 -2
View File
@@ -28,12 +28,23 @@ Self-hosted XMPP-мессенджер на **nixg.ru** (Prosody 0.11.9 + веб-
- [ ] ~~**Регистрация TG-аккаунта в мосте**~~ — ВЫПОЛНЕНО 2026-08-29 (estorozhenko@nixg.ru)
- [ ] **Аватары TG в мосте таймаутят** — HTTP-часть slidge не ходит через SOCKS5 (URL web.telegram.org
недоступны из РФ). Косметика, на переписку не влияет. Разбор и варианты: BRIDGE-TELEGRAM.md.
- [ ] **Сборка Prosody 0.12.x (система сборки)** — ЗАПЛАНИРОВАНО (сделать позже):
официальный Docker-образ не имеет 0.12 (latest=0.11.9); сторонние nightly не годятся.
Собрать свой образ из исходников prosody-0.12.6.tar.gz (WALKTHROUGH §12.8).
Закроет: нативный XEP-0356 (mod_privilege больше не нужен → «миллион приглашений»
в Pidgin исчезнет, bookmarks заработают), push-уведомления (util.jwt), безопасность.
- [ ] Бот-книгоискатель (slixmpp + OPDS) — Этап 3 PRD. (venv готов: /opt/icq/.venv)
- [ ] Мост mautrix (WhatsApp) — Этап 4; нужен external component. [Telegram уже на Slidge]
- [ ] Push-уведомления — ОТЛОЖЕН: Prosody 0.11 не тянет mod_unified_push (нужен util.jwt из 0.12);
варианты (XEP-0357 mod_push / апгрейд до 0.12) — WALKTHROUGH §10.4
- [ ] Push-уведомления — ОТЛОЖЕН до апгрейда 0.12 (нужен util.jwt); варианты — WALKTHROUGH §10.4
- [ ] MAM: ошибка при логине «max_items: not a number» — проверить настройку mod_mam (не мешает чату)
## Известные грабли (2026-08-29)
- mod_privilege (XEP-0356) сломан на 0.11.9 (module:send_iq — API 0.12). Стоит стаб-ACK (коммит 770c9fa):
Prosody стабилен, но bookmarks/MDS через XEP-0356 не работают → слайдж шлёт приглашения в группы вручную.
Полное решение — апгрейд 0.12. Детали: WALKTHROUGH §12.7.
- Рostер TG-контактов цел на сервере (1602). Если контакты «пропали» в Pidgin после рестарта —
Disable/Enable аккаунта (клиент сам скачает рostер). Не трогать сервер.
## Быстрые команды
```bash
cd /opt/icq && docker compose ps
+42
View File
@@ -565,6 +565,48 @@ docker exec icq-prosody prosodyctl list 2>/dev/null # зарегистриро
- **Аватары** могут не подтягиваться (URL-загрузка web.telegram.org не ходит через SOCKS5) —
это отдельная задача в STATUS.md; на приём сообщений не влияет.
### 12.7 Засады 2026-08-29 (после регистрации estorozhenko@nixg.ru)
- **mod_privilege (XEP-0356) ломает Prosody 0.11.9**: community-модуль из prosody-modules
рассчитан на 0.12 и вызывает `module:send_iq()` (API 0.12), которого в 0.11 нет →
traceback `attempt to call method 'send_iq' (a nil value)` при каждом privileged IQ.
Последствия: слайдж висит на IqTimeout при создании MDS-узла / записи bookmarks,
после рестартов контакты TG пропадали из ростера (на сервере рostер цел, клиент
просто не получал push).
- **Фикс (0.11-совместимый стаб)**: в `/opt/icq/modules/mod_privilege.lua` вызов
`module:send_iq(wrapped_iq, newsession):next(...)` заменён на стаб-ACK — модуль
отвечает слайджу `st.reply(stanza)` (ACK) и НЕ пересылает IQ от имени юзера.
Prosody перестаёт падать, слайдж не перезапускается в цикле. Цена: bookmarks/MDS
через XEP-0356 не работают, слайдж шлёт приглашения в группы вручную.
Коммит: 770c9fa.
- **«Миллион запросов на подключение к чату» в Pidgin** — следствие двух вещей:
1) `always_invite_when_adding_bookmarks: true` в preferences пользователя
(slidge шлёт gateway-приглашение на КАЖДУЮ группу при добавлении закладки);
2) bookmarks не записываются (mod_privilege сломан) → слайдж падает в fallback
и шлёт приглашения вручную на каждый чат.
Временное решение: смириться до апгрейда на 0.12 (там XEP-0356 нативный);
альтернатива — `always_invite_when_adding_bookmarks: false` в preferences
(запись: slidge.core.session — user.preferences, изменение в SQLite `user_account`).
- **Flood wait от Telegram при первом старте**: слайдж с большим аккаунтом
(1602 контакта) при старте тянет инфу о каждом чате/контакте → Telegram банит
частые запросы (`WARNING:slidgram.telegram:Flood in get_chat(...), sleep for N seconds`).
Не баг: после кэширования паузы исчезают. Проверка БД: `docker exec icq-slidgram
python3 -c "import sqlite3;c=sqlite3.connect('/var/lib/slidge/slidge.sqlite');print(c.execute('select count(*) from contact').fetchone())"`.
- **Контакты «пропали» после рестарта сервера** — на самом деле рostер цел на сервере
(проверка: slixmpp roster get → 1602 telegram-контакта). Клиент (Pidgin) при
переподключении должен сам запросить рostер (Disable/Enable аккаунта). Если нет —
проблема в клиентском кэше, не в сервере.
### 12.8 Планируется: апгрейд Prosody 0.11.9 → 0.12.x (система сборки)
- **Зачем**: 0.12 имеет нативный XEP-0356 (mod_privilege больше не нужен), util.jwt
(mod_unified_push → push-уведомления), исправления безопасности.
- **Проблема**: официальный Docker-образ `prosody/prosody` не обновлён до 0.12
(latest = 0.11.9; теги только 0.9–0.11 + trunk). Стабильный 0.12.6 доступен
только исходниками: https://prosody.im/downloads/source/prosody-0.12.6.tar.gz
- **Сторонние образы**: `prosodyim/prosody:0.12` (nightly 236 от 2026-04-29) и
`prosodyim/prosody:13.0` (nightly 98 от 2026-06-07) — НЕ для продакшена.
- **Решение**: собрать свой образ из исходников 0.12.6 (Dockerfile на базе
prosody/prosody:0.11.9 + tar.gz 0.12.6). См. STATUS.md «Сборка Prosody 0.12».
## 13. TODO (следующие шаги)
- [x] ~~OMEMO (XEP-0384)~~ — ВЫПОЛНЕНО: раздел 9; скрипт scripts/omemo_check.py.
- [ ] Бот-книгоискатель (slixmpp + OPDS) — Этап 3 PRD. venv уже создан (/opt/icq/.venv: aiohttp, slixmpp).