мая 04, 2025 — Ivan Davydov

Использованные источники

0. Системные требования

  • Firewall с следующими открытыми портами:
    • 5000/tcp (передача файлов)
    • 5222/tcp (подключение клиента)
    • 5269/tcp (федерация, подключение сервера к серверу)
    • 5281/tcp (по желанию, но рекомендуется)
  • Debian 12 с последними обновлениями

Все команды выполняются пользователем root, если не указано иначе.

1. Установка

Выполните эти команды:

wget https://prosody.im/files/prosody.sources -O/etc/apt/sources.list.d/prosody.sources
apt update
apt install prosody lua5.4 liblua5.4-0 liblua5.4-dev luarocks certbot

usermod -aG shadow prosody
usermod -aG ssl-cert prosody

luarocks install luaposix

git clone https://github.com/devurandom/lua-pam && cd lua-pam
make LUA_VERSION=5.4
cp pam.so /usr/lib/

prosodyctl install --server=https://modules.prosody.im/rocks/ mod_auth_pam

2. Настройка

Начните редактировать файл /etc/prosody/prosody.cfg.lua. Следуйте этим инструкциям, заменяя example.net на доменное имя, привязанное к вашему серверу.

Найдите строку, начинающуюся с слова admins, и добавьте ваше будущее имя пользователя в фигурные скобки подобным образом:

admins = { "admin@example.net" }

Где admin - это ваше имя пользователя в вашей системе.

Дальше найдите строку --"mam"; и удалите два дефиса, сделайте то же самое с строкой --"turn_external";, находящейся ниже.

Теперь перейдите к строке authentication = "internal_hashed" и замените internal_hashed на pam.

Перейдите к строке, начинающейся с storage и поменяйте sql на internal (по желанию, в этой инструкции я не рассматриваю настройку с базами данных)

По желанию в строке archive_expires_after = "1w" замените 1w на never, чтобы истории переписок не удалялись каждую неделю.

Найдите строку, начинающуюся с VirtualHost и замените localhost на example.net.

Если вам нужны многопользовательские переписки, на следующей строке добавьте следущее:

Component "muc.lotigara.ru" "muc"
modules_enabled = { "muc_mam", "vcard_muc" }

Последнюю строку можете опустить, если вам не нужно сохранение истории многопользовательских переписок.

Если нужна возможность загружать файлы на ваш сервер, дополните конфигурацию следующими строками:

Component "uf.lotigara.ru" "http_file_share"
http_file_share_size_limit = 512 * 1024 * 1024 --измеряется в байтах
http_file_share_expire_after = 60 * 60 * 24 * 31 * 1000 --измеряется в секундах

В данном случае, лимит размера файла - это 512 МиБ (0,5 ГиБ), а удаляться файлы будут через ~1000 лет. Если требуется изменить какое-либо из этих свойств, смотрите комментарии (в Lua они начинаются с двух дефисов) и пробуйте изменять значения.

Читать далее...

(c) Ivan Davydov 2025. Делайте с этим документом всё, что хотите!


Веб-сайт самохостера Lotigara сгенерирован при помощи Bashblog. Исходные коды этой версии Bashblog можно найти здесь.