mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
146 lines
6.9 KiB
Lua
146 lines
6.9 KiB
Lua
-- 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"; -- Publish-Subscribe (XEP-0060): ленты, узлы; основа PEP/bookmarks
|
||
"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)
|
||
component_ports = { 5347 }
|
||
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" }
|
||
|
||
-- Домен (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";
|
||
};
|
||
};
|
||
}
|
||
|
||
-- 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 -- только авторизованные
|
||
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" } |