estorozhenko 3c4190402b Telegram bridge: slidgram + SOCKS5 proxy, mod_privilege (XEP-0356), XEP audit
- docker-compose: сервис slidgram (Slidge->Telegram, внешний компонент XEP-0114)
- кастомный образ slidgram-proxy: SOCKS5-патч (SLIDGRAM_PROXY -> Pyrogram) для маршрутизации через VPS01
- prosody: component telegram.nixg.ru (5347), component_secret в секции Component (0.11!),
  mod_privilege + privileged_entities (roster sync мостов), mod_pubsub включён
- modules/mod_privilege.lua (community, hg.prosody.im)
- docs/slidgram/: офлайн-копия документации slidgram (slidge.im)
- README: секции 'Функциональность (XEP)' и 'Мост Telegram'; XEP-AUDIT.md (полный аудит XEP)
- STATUS.md: мост ПОДКЛЮЧЁН, privilege, аудит
2026-08-29 14:38:25 +00:00
2026-08-28 19:53:02 +00:00

ICQ — приватный XMPP-сервер (Prosody + Converse.js)

Личный XMPP-сервер для семьи/друзей. Домен: nixg.ru, веб-чат: https://chat.nixg.ru.

Стек

  • Prosody 0.11.9 (Docker) — XMPP-сервер: c2s 5222, s2s 5269, WebSocket 5280, HTTPS 5281
  • Converse.js v14 (веб-клиент, ESM) — отдаётся nginx (Docker), доступ через Caddy (vps02)
  • Caddy (vps02, host-network) — TLS-терминатор: chat.nixg.ru, xmpp.nixg.ru, upload.nixg.ru
  • Let's Encrypt — сертификаты для XMPP (c2s/s2s) и веб
  • WireGuard — туннель bigbox (10.8.0.2) ↔ vps02 (10.8.0.4)
  • Slidge/slidgram (Docker) — мост XMPP↔Telegram (внешний компонент, XEP-0114)

Функциональность (XEP-модули)

Возможность XEP Модуль Статус
MUC (групповые чаты) XEP-0045 Component conference.nixg.ru (mod_muc) ✅
PubSub (подписки, ленты) XEP-0060 mod_pubsub ✅
HTTP Upload (файлы) XEP-0363 Component upload.nixg.ru (mod_http_upload, community) ✅
MAM (история) XEP-0313 mod_mam (+mod_muc_mam) ✅
Carbons (все устройства) XEP-0280 mod_carbons ✅
OMEMO / OTR (сквозное шифрование) XEP-0384 PEP (mod_pep) для хранения ключей; серверный mod_omemo в 0.11 отсутствует — шифрование клиент-сайд (Gajim/Dino/Conversations) ⚠️ клиент-сайд
WebRTC (звонки) XEP-0166/0343 клиент-сайд (Jingle); серверного модуля нет ⚠️ клиент-сайд
Bookmarks (избранные) XEP-0402 через PEP/pubsub node storage:bookmarks (отдельного mod_bookmarks в 0.11 нет) ✅ через PEP
Privilege (roster sync для мостов) XEP-0356 mod_privilege (community) ✅
PEP (аватары, OMEMO, отметки) XEP-0163 mod_pep ✅

Мост XMPP↔Telegram (Slidge/slidgram)

  • Внешний компонент telegram.nixg.ru (XEP-0114), порт 5347 (внутри docker-сети).
  • Образ slidgram-proxy:latest = codeberg.org/slidge/slidgram + SOCKS5-патч (env SLIDGRAM_PROXY).
  • Трафик Telegram идёт через SOCKS5 172.27.0.1:1080 (SSH-туннель VPS01, вне РФ) — работает при блокировке Telegram в РФ.
  • Данные сессий: ./slidgram/data/ (том, uid 10000).
  • Регистрация TG-аккаунта: из XMPP-клиента написать «register» на telegram.nixg.ru.
  • Офлайн-доки: docs/slidgram/ (копия slidge.im).

Состав (после клонирования)

/opt/icq
├── config/          # prosody.cfg.lua (+ mounts в контейнер)
├── webchat/         # nginx: index.html + nginx.conf (dist скачивается отдельно)
├── modules/         # community-модули Prosody (mod_http_upload, mod_privilege, ...)
├── slidgram/        # Dockerfile + патчи для образа slidgram-proxy (SOCKS5)
├── docs/slidgram/   # офлайн-копия документации slidgram
├── docker-compose.yml
├── STATUS.md        # точка входа: текущее состояние, задачи
├── PRD.md           # требования/архитектура
├── MIGRATION.md     # переезд chat.nixg.ru → nixg.ru
└── WALKTHROUGH.md   # команды, засады, решения

Быстрый запуск

# 1. dist Converse.js (в .gitignore, т.к. 24MB) — скачать из релиза:
#    https://github.com/conversejs/converse/releases → converse.js-14.0.0.tgz
#    распаковать package/dist/* в webchat/dist/

# 2. Сертификаты: положить LE-серт nixg.ru (fullchain, privkey) в certs/nixg.ru.{crt,key}

# 3. Запуск
docker compose up -d

Домены (DNS, Jino)

Запись Значение
A chat.nixg.ru, xmpp.nixg.ru, upload.nixg.ru 87.242.100.206 (vps02)
SRV _xmpp-client._tcp.nixg.ru 5222 xmpp.nixg.ru
SRV _xmpp-server._tcp.nixg.ru 5269 xmpp.nixg.ru
SRV _xmpp-client-websocket._tcp.nixg.ru 443 xmpp.nixg.ru
TXT _acme-challenge.nixg.ru (при продлении) временно

Лицензия

Приватный проект. Пароли и ключи в репозиторий не попадают (см. .gitignore).


Подробности: STATUS.md (текущее состояние), PRD.md, WALKTHROUGH.md

S
Description
No description provided
Readme 384 KiB
Languages
Lua 64%
JavaScript 15.2%
Python 13.1%
HTML 4.1%
Shell 2%
Other 1.6%