refactor: сегментировать STATUS.md (4.4k токенов -> 0.7k) — детали в INFRA.md/BRIDGE-TELEGRAM.md/CHEATSHEET.md, backup.sh + новые .md

This commit is contained in:
2026-08-29 14:57:01 +00:00
parent 2763ffb012
commit 19589c853d
5 changed files with 157 additions and 197 deletions
+46
View File
@@ -0,0 +1,46 @@
# Мост XMPP↔Telegram (Slidge/slidgram) — детали и задачи
> Вспомогательный файл для STATUS.md; обновлено: 2026-08-29
> Офлайн-доки: docs/slidgram/ (копия slidge.im)
## Статус: ПОДКЛЮЧЁН (2026-08-29)
- Prosody: `component_ports 5347` + `Component "telegram.nixg.ru"` с `component_secret`
(⚠️ В Prosody 0.11 секрет задаётся ТОЛЬКО в секции Component через `component_secret=`;
глобальная таблица `component_secrets` НЕ читается — была засада not-authorized).
- Образ: кастомный `slidgram-proxy:latest` = codeberg.org/slidge/slidgram:latest + патчи
telegram.py/gateway.py (прокидывают SOCKS5 из env `SLIDGRAM_PROXY` в Pyrogram) + pysocks.
- docker-compose: сервис `slidgram` (icq-slidgram), env `SLIDGE_JID/SECRET/SERVER/PORT`,
`SLIDGRAM_PROXY=socks5://172.27.0.1:1080`, том ./slidgram/data (uid 10000, иначе SQLite
«unable to open database file»).
- Трафик 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).
## Регистрация TG-аккаунта (ОЖИДАЕТ действий)
Осталось: admin@nixg.ru → команда `register` на telegram.nixg.ru + api_id/api_hash.
**Пошаговая инструкция: WALKTHROUGH.md → раздел 12** (оба способа: ad-hoc Register / сообщение
«register»; api_id/api_hash с https://my.telegram.org/apps — HTTP открывается из РФ напрямую;
код/2FA — через MTProto по SOCKS5-туннелю, работает из РФ).
## ЗАДАЧА: аватары telegram-пользователей — загрузка таймаутит
- **Симптом**: аватары контактов/компонента не подтягиваются («загрузка аватаров/логотипа с
web.telegram.org таймаутит»).
- **Корень** (по коду в контейнере icq-slidgram): HTTP-часть slidge НЕ ходит через SOCKS5 —
`slidge/core/gateway.py:399` создаёт `aiohttp.ClientSession()` без `proxy=`, и
`slidge/db/avatar.py` (`self.http.get(url)`) качает URL-аватары напрямую; из РФ прямой доступ
к web.telegram.org/photo-URL'ам заблокирован → таймаут. MTProto-часть (`slidgram/telegram.py` →
`Client(proxy=_proxy)`) уже ходит через прокси и работает.
- **Варианты решения** (выбрать при реализации):
1. Прокси в aiohttp-сессию: в `gateway.py:399` `aiohttp.ClientSession(proxy=...)`
(aiohttp — один прокси на сессию), либо `ClientSession(trust_env=True)` + env
`HTTP_PROXY/HTTPS_PROXY/ALL_PROXY`. Для SOCKS5 в docker-сети — `ALL_PROXY=socks5://172.27.0.1:1080`
+ `trust_env=True`, но aiohttp SOCKS5 работает только через aiohttp-socks (доп. зависимость).
2. Прогонять URL-аватары через nginx-прокси на bigbox (rewrite → туннель) — без правок кода.
3. Аватары личных фото уже качаются через Pyrogram `download_media()` (MTProto, через SOCKS5) —
убедиться, что эта ветка используется; прямая HTTP-загрузка нужна для URL-аватаров
(web.telegram.org и т.п.).
- ⚠️ Обмен сообщениями, файлы и стикеры НЕ затрагиваются — это косметика (аватарки в ростере).
## Известные мелочи
- Залипший localStorage браузера со старым JID admin@chat.nixg.ru → Converse шлёт host-unknown.
Лечится: localStorage.removeItem("conversejs-session-jid") или инкогнито.