diff --git a/CHEATSHEET.md b/CHEATSHEET.md index 2bdc425..238485b 100644 --- a/CHEATSHEET.md +++ b/CHEATSHEET.md @@ -1,16 +1,79 @@ # ICQ XMPP — Полезные команды (шпаргалка) +> Все docker-команды выполняются из /opt/icq. Сервер: Prosody 0.11.9 в контейнере icq-prosody. + +## Проект / статус ```bash -cd /opt/icq && docker compose ps -docker logs icq-prosody --tail 50 -docker logs icq-slidgram --since 10m | grep -iE 'register|login|session|avatar|error' -docker exec icq-prosody prosodyctl check config -docker exec icq-prosody prosodyctl register admin nixg.ru 'ПАРОЛЬ' -# внешняя проверка -curl -sS https://upload.nixg.ru/upload +cd /opt/icq && docker compose ps # статус всех контейнеров +docker compose ps -a # включая остановленные +docker compose logs --tail 50 prosody # логи сервиса (или slidgram/webchat) ``` -Проверка входа по WebSocket (slixmpp, ssl не проверяется): +## Пользователи (регистрация ОТКЛЮЧЕНА — только через prosodyctl) +```bash +# Создать пользователя (логин@nixg.ru): +docker exec icq-prosody prosodyctl register ЛОГИН nixg.ru 'ПАРОЛЬ' +# Пример: docker exec icq-prosody prosodyctl register ivan nixg.ru 'secret123' + +# Изменить пароль (та же команда — перезапишет): +docker exec icq-prosody prosodyctl register ivan nixg.ru 'НОВЫЙПАРОЛЬ' + +# Удалить пользователя: +docker exec icq-prosody prosodyctl unregister ЛОГИН nixg.ru + +# Список аккаунтов (лежат в data/nixg.ru/accounts/*.dat на хосте): +ls /opt/icq/data/nixg%2eru/accounts/ +``` +⚠️ In-band self-registration ВЫКЛЮЧЕНА (allow_registration=false, модуль register не загружен). +Единственный способ создать аккаунт — `prosodyctl register`. Пользователи НЕ могут сами регистрироваться. + +## Сервисы (Prosody, мост, веб-чат) +```bash +# Рестарт сервиса: +docker compose restart prosody # или slidgram / webchat +# Пересоздать контейнер с новыми env (после правки docker-compose.yml): +docker compose up -d --force-recreate --no-deps slidgram +# Полный перезапуск проекта: +docker compose up -d +# Остановить/запустить: +docker compose stop && docker compose start + +# Проверка конфига Prosody: +docker exec icq-prosody prosodyctl check config +# Просмотр активных портов/модулей: +docker logs icq-prosody --tail 100 +# Валидация сертификатов/домена: +docker exec icq-prosody prosodyctl check certs +docker exec icq-prosody prosodyctl check dns +``` + +## Мост Telegram (Slidge/slidgram) +```bash +docker logs icq-slidgram --since 10m | grep -iE 'register|login|session|avatar|error' +# Регистрация TG-аккаунта: из XMPP-клиента команда "register" на telegram.nixg.ru +# (api_id/api_hash уже в конфиге; см. WALKTHROUGH.md §12) +# Перезапуск моста после правки env: +docker compose up -d --force-recreate --no-deps slidgram +``` + +## Просмотр логов / диагностика +```bash +docker logs icq-prosody --tail 50 +docker logs icq-webchat --since 5m +docker logs icq-slidgram --since 10m | grep -iE 'error|register|avatar' +# Прямые файлы логов: +tail -50 /opt/icq/logs/prosody.log +tail -30 /opt/icq/logs/prosody.err +``` + +## Внешняя проверка +```bash +curl -sS https://upload.nixg.ru/upload # HTTP Upload (ожидается 403/404 — сервис жив) +curl -sI https://chat.nixg.ru/ # веб-чат +curl -sI https://xmpp.nixg.ru/ # WS endpoint (Caddy) +``` + +## Проверка входа пользователя по WebSocket (slixmpp, ssl не проверяется) ```python bot = slixmpp.ClientXMPP('admin@nixg.ru','ПАРОЛЬ') import ssl; ctx = ssl.create_default_context(); ctx.check_hostname=False; ctx.verify_mode=ssl.CERT_NONE @@ -18,7 +81,7 @@ bot.ssl_context = ctx bot.connect(('wss://xmpp.nixg.ru/xmpp-websocket',)) ``` -Проверка веб-чата headless (UI отрендерен): +## Проверка веб-чата headless (UI отрендерен) ```bash chromium --headless --no-sandbox --disable-gpu --virtual-time-budget=15000 --dump-dom https://chat.nixg.ru/ | grep converse-login-form ``` \ No newline at end of file diff --git a/INFRA.md b/INFRA.md index daf0187..46136ed 100644 --- a/INFRA.md +++ b/INFRA.md @@ -5,8 +5,11 @@ ## Учётные данные - **admin@nixg.ru / пароль: `<СМОТРИ В ЗАЩИЩЁННОМ ХРАНИЛИЩЕ / .env>`** ← перенесён 2026-08-28 с admin@chat.nixg.ru, ВХОД ПОДТВЕРЖДЁН (проверено через WebSocket: slixmpp + wss://xmpp.nixg.ru/xmpp-websocket → AUTH OK). +- **estorozhenko@nixg.ru** — создан 2026-08-29, вход подтверждён (slixmpp, c2s 5222, AUTH OK). - Если пароль снова понадобится сбросить: - `docker exec icq-prosody prosodyctl register admin nixg.ru 'НОВЫЙПАРОЛЬ'` + `docker exec icq-prosody prosodyctl register ЛОГИН nixg.ru 'НОВЫЙПАРОЛЬ'` +- ⚠️ **Самостоятельная регистрация ВЫКЛЮЧЕНА** (2026-08-29): `allow_registration = false`, модуль `register` не загружен. + Создание/удаление пользователей — только через prosodyctl (см. CHEATSHEET.md). - Старый аккаунт admin@chat.nixg.ru: домен chat.nixg.ru убран из Prosody (VirtualHost теперь nixg.ru). ## Инфраструктура diff --git a/STATUS.md b/STATUS.md index 12833ea..e0e95b2 100644 --- a/STATUS.md +++ b/STATUS.md @@ -20,6 +20,7 @@ Self-hosted XMPP-мессенджер на **nixg.ru** (Prosody 0.11.9 + веб- - ✅ HTTP Upload (upload.nixg.ru, XEP-0363), OMEMO (XEP-0384, через PEP), MAM, Carbons, MUC, PubSub, Bookmarks - ✅ Бэкапы → Яндекс.Диск (cron 2:45), watchdog продления LE-серта (тихий, cron ca2a23a34905) - ✅ Мост Telegram (Slidge/slidgram): telegram.nixg.ru аутентифицирован, MTProto через SOCKS5-туннель VPS01 +- ✅ Пользователи: admin@nixg.ru, estorozhenko@nixg.ru (оба входят); самостоятельная регистрация ОТКЛЮЧЕНА ## Задачи (будущее) - [ ] **Регистрация TG-аккаунта в мосте** — admin@nixg.ru → команда `register` на telegram.nixg.ru diff --git a/config/prosody.cfg.lua b/config/prosody.cfg.lua index 19a9917..1b0038b 100644 --- a/config/prosody.cfg.lua +++ b/config/prosody.cfg.lua @@ -37,7 +37,7 @@ modules_enabled = { "uptime"; -- Время работы "time"; -- Время "ping"; -- XMPP Ping - "register"; -- In-band registration (для первого пользователя) + -- "register"; -- In-band registration ОТКЛЮЧЕНА (allow_registration=false; создание только prosodyctl) "adhoc"; -- ad-hoc команды "admin_adhoc"; -- админ-команды "admin_web"; -- XMPP ad-hoc админ-команды (adminsub; НЕ веб-панель — см. разд. 10 WALKTHROUGH) @@ -100,8 +100,8 @@ VirtualHost "nixg.ru" authentication = "internal_hashed" -- Хранилище (встроенное, файлы) storage = "internal" - -- Включить регистрацию (in-band) - allow_registration = true + -- Регистрация ВЫКЛЮЧЕНА (in-band): создание пользователей только prosodyctl register + allow_registration = false -- TLS: сертификаты для домена (для c2s/s2s 5222/5269) ssl = { key = "/etc/prosody/certs/nixg.ru.key";