Files
icq/config/prosody.cfg.lua

162 lines
8.4 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- Prosody configuration for ICQ (nixg.ru)
-- Домен: nixg.ru (JID юзеров user@nixg.ru)
-- Веб-клиент (Converse.js) остаётся на https://chat.nixg.ru, WS → xmpp.nixg.ru
-- Каталог: /opt/icq
-- Пути
data_path = "/var/lib/prosody"
plugin_paths = { "/etc/prosody/modules" }
-- Логи (глобальная секция)
log = {
info = "/var/log/prosody/prosody.log";
error = "/var/log/prosody/prosody.err";
-- info = "console"; -- раскомментируй для вывода в docker logs
}
-- Администрирование (несколько админов поддерживаются — список)
admins = { "admin@nixg.ru", "estorozhenko@nixg.ru" }
-- Модули (включая стандартные)
modules_enabled = {
-- Generally required
"roster"; -- Список контактов
"saslauth"; -- Аутентификация
"tls"; -- TLS
"dialback"; -- s2s dialback
"disco"; -- Service discovery
"carbons"; -- Копии сообщений на все устройства
"privilege"; -- XEP-0356 Privileged Entity (roster sync для мостов Slidge)
"pep"; -- Personal eventing (OMEMO, avatars)
-- "pubsub"; -- 13.0: НЕ модуль хоста! Загружается как Component (см. ниже Component "pubsub.nixg.ru")
"private"; -- Приватные хранилища XML
"blocklist"; -- Чёрный список
"vcard4"; -- vCard 4
"vcard_legacy"; -- vCard 2 (для старых клиентов)
"version"; -- Версия сервера
"uptime"; -- Время работы
"time"; -- Время
"ping"; -- XMPP Ping
-- "register"; -- In-band registration ОТКЛЮЧЕНА (allow_registration=false; создание только prosodyctl)
"adhoc"; -- ad-hoc команды
"admin_adhoc"; -- админ-команды
"admin_web"; -- XMPP ad-hoc админ-команды (adminsub; НЕ веб-панель — см. разд. 10 WALKTHROUGH)
"bosh"; -- BOSH (HTTP long-polling, для mod_admin_web)
-- Messaging / Chat
"csi"; -- Client State Indication (экономия батареи)
-- "smacks"; -- Stream Management (community-модуль, пока нет)
"offline"; -- Хранение оффлайн-сообщений
"presence"; -- Присутствие
-- Message archive
"mam"; -- Message Archive Management (XEP-0313)
-- HTTP (для веб-клиентов)
"websocket"; -- WebSocket для веб-клиентов
-- Прочее
"server_contact_info"; -- Контактная информация сервера
}
-- Отключить модули, которые не нужны/мешают
modules_disabled = {
-- "s2s"; -- (раскомментируй, чтобы отключить федерацию, но она нужна!)
}
-- Порты и интерфейсы
c2s_ports = { 5222 }
s2s_ports = { 5269 }
-- Слушать на всех интерфейсах (в контейнере)
c2s_interface = "0.0.0.0"
s2s_interface = "0.0.0.0"
-- HTTP (websocket + BOSH + upload)
http_ports = { 5280 }
http_interfaces = { "0.0.0.0" }
-- HTTPS-порт для HTTP Upload (mod_http_upload требует TLS) — с LE-сертификатом
https_ports = { 5281 }
https_interfaces = { "0.0.0.0" }
-- External components (XEP-0114) для мостов (Slidge/Telegram, затем WhatsApp)
-- ВНИМАНИЕ 13.0: component_ports УДАЛЁН (слушатель жёстко на 5347). Listener поднимается
-- наличием module-less Component-блока ниже. component_interfaces — глобально.
component_interfaces = { "0.0.0.0" }
component_secrets = {
["telegram.nixg.ru"] = "83276db6e870f540163f271d9bd7d3a390530b9ad7b45f58",
}
-- Глобальный SSL для HTTPS-порта (LE-серт nixg.ru, SAN: nixg.ru + xmpp.nixg.ru)
ssl = {
key = "/etc/prosody/certs/nixg.ru.key";
certificate = "/etc/prosody/certs/nixg.ru.crt";
}
-- Разрешить WebSocket-подключения с нашего веб-клиента (страница на chat.nixg.ru)
cross_domain_websocket = { "https://chat.nixg.ru", "https://xmpp.nixg.ru" }
-- WebSocket за TLS-прокси (Caddy → nginx → Prosody): Prosody 13 терминально снижает
-- TLS на edge, и WS-сессия приходит "insecure" → SASL-механизмы не предлагаются →
-- Converse: "no-auth-mech" + бесконечные переподключения (белый кружок).
-- Штатный флаг mod_websocket (Prosody 13+): считать WS endpoint безопасным.
-- Использовать вместо trusted_proxies (тот влияет только на логирование IP).
consider_websocket_secure = true
-- Домен (JID юзеров: user@nixg.ru)
VirtualHost "nixg.ru"
-- Аутентификация: внутренняя (mod_auth_internal_hashed)
authentication = "internal_hashed"
-- Хранилище (встроенное, файлы)
storage = "internal"
-- Регистрация ВЫКЛЮЧЕНА (in-band): создание пользователей только prosodyctl register
allow_registration = false
-- TLS: сертификаты для домена (для c2s/s2s 5222/5269)
ssl = {
key = "/etc/prosody/certs/nixg.ru.key";
certificate = "/etc/prosody/certs/nixg.ru.crt";
-- Для федерации нужен полный chain + private key
}
-- Привилегии для мостов Slidge (XEP-0356): синхронизация ростера + legacy carbons
privileged_entities = {
["telegram.nixg.ru"] = {
roster = "both";
message = "outgoing";
iq = {
["http://jabber.org/protocol/pubsub"] = "both";
["http://jabber.org/protocol/pubsub#owner"] = "set";
["urn:xmpp:http:upload:0"] = "get";
};
};
}
-- PubSub (XEP-0060) — в 13.0 ТОЛЬКО как Component (не модуль хоста).
-- Основа для bookmarks/лент; PEP (личные узлы) продолжает жить на VirtualHost через mod_pep.
Component "pubsub.nixg.ru" "pubsub"
-- MUC-компонент (групповые чаты) conference.nixg.ru
Component "conference.nixg.ru" "muc"
name = "ICQ Family Chat"
restrict_room_creation = false -- все могут создавать комнаты
max_history_messages = 200
-- Доп. модули MUC: vcard_muc (аватары комнат, XEP-0153 в MUC), muc_moderation (XEP-0425 модерация)
modules = { "vcard_muc", "muc_moderation" }
-- HTTP Upload (XEP-0363) — mod_http_upload (community-модуль, установлен из apt prosody-modules,
-- скопирован в ./modules/mod_http_upload/. Работает как Component (НЕ в modules_enabled).
Component "upload.nixg.ru" "http_upload"
http_upload_file_size_limit = 10 * 1024 * 1024 -- 10 MB (лимит HTTP-парсера Prosody)
http_upload_expire_after = 7 * 24 * 60 * 60 -- хранить 7 дней
http_upload_require_authentication = true -- только авторизованные
-- 13.0: слот выдаётся ТОЛЬКО origin.type=="c2s" ИЛИ JID из access-списка.
-- Slidge просит слот от имени компонента telegram.nixg.ru → добавить в access,
-- иначе "No upload slot" (регрессия 13.0, в 0.11 пускало компоненты молча).
http_upload_access = { "telegram.nixg.ru" }
http_upload_path = "/var/lib/prosody/http_upload"
-- Внешний URL (без :5281) — Caddy на vps02 проксирует upload.nixg.ru → 10.8.0.2:5281
http_external_url = "https://upload.nixg.ru"
-- Мосты (Slidge) — external component (XEP-0114) для Telegram.
-- Slidge подключается к component_ports (5347) с секретом из component_secrets.
Component "telegram.nixg.ru"
component_secret = "83276db6e870f540163f271d9bd7d3a390530b9ad7b45f58"
modules_enabled = { "disco", "privilege" }