mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
81 lines
5.2 KiB
Markdown
81 lines
5.2 KiB
Markdown
# 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`
|
||
(или ad-hoc команда Register) — **пошагово: WALKTHROUGH.md раздел 12**. Нужен api_id/api_hash
|
||
с https://my.telegram.org/apps.
|
||
- ⚠️ Известное ограничение: **URL-аватары** (web.telegram.org) качаются HTTP-клиентом slidge
|
||
напрямую (не через SOCKS5) → в РФ таймаутят. Задача в STATUS.md. На обмен сообщениями не влияет.
|
||
- Офлайн-доки: `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 # команды, засады, решения
|
||
```
|
||
|
||
## Быстрый запуск
|
||
```bash
|
||
# 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](STATUS.md) (текущее состояние), [PRD.md](PRD.md), [WALKTHROUGH.md](WALKTHROUGH.md) |