(с) AlexVDem Этот проект предназначен для автоматического развертывания полнофункционального домашнего сервера Matrix (Synapse) с поддержкой видеозвонков (LiveKit), веб-интерфейсом (Element) и автоматической настройкой прокси-сервера (Nginx).
Скрипт setup.sh выполняет автоматическую конфигурацию всех компонентов системы:
- Synapse: Основной сервер Matrix.
- PostgreSQL: База данных для хранения сообщений и данных пользователей.
- Redis: Кэширование для повышения производительности Synapse.
- LiveKit & Auth Service: Обеспечение работы групповых аудио- и видеозвонков (Element Call).
- Element Web: Веб-клиент для доступа к Matrix через браузер.
- Nginx: Обратный прокси для маршрутизации трафика и работы по HTTPS.
ВНИМАНИЕ: Скрипт генерирует уникальные безопасные пароли и секретные ключи при каждом запуске, встраивая их в конфигурационные файлы. Имейте ввиду, что повторный запуск скрипта на уже сконфигурированном и/или на работаюшем сервере (в его каталоге) сгенерирует новые ключи доступа компонентов сервера и заново занесет их в конфигурационные файлы, что может привести к полной утере данных пользователей. Поэтому, при повторном запуске убедитесь что данные сохранены или скрипт запускается в другом каталоге.
Перед запуском скрипта убедитесь, что:
- ОС: Linux (рекомендуется Ubuntu/Debian).
- Утилиты: Установлены
docker,docker compose,python3,sudo. - Домен: У вас есть доменное имя (например,
matrix.example.com), направленное на IP вашего сервера (A-запись). - SSL-сертификаты: На сервере должны быть установлены сертификаты Let's Encrypt. Скрипт ожидает их наличие по пути:
/etc/letsencrypt/live/ВАШ_ДОМЕН/fullchain.pem/etc/letsencrypt/live/ВАШ_ДОМЕН/privkey.pem(Если их нет, установите черезcertbot certonly --standalone -d ВАШ_ДОМЕН). - Перед запуском убедитесь, что на вашем Linux сервере не работает какой то другой Web - сервер (или приложения), которые используют порты, необходимые для установки этого сервера (особенно 80, 443). Если есть, отключите их.
Для корректной работы всех сервисов (включая видеозвонки) необходимо открыть следующие порты:
- TCP 80, 443: Основной веб-трафик (Nginx), HTTPS и API Matrix. Обязательно.
- UDP 50100-50200: Диапазон портов для передачи медиа-трафика видеозвонков (WebRTC). Обязательно для работы звонков.
- TCP 7880-7882, 8070-8080: Служебные порты LiveKit (API, RTC TCP).
Docker обычно управляет правилами iptables напрямую, что может обходить стандартные настройки UFW. Однако рекомендуется явно разрешить трафик:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 50100:50200/udp
sudo ufw allow 7880:7882/tcp
sudo ufw allow 8070:8080/tcp
sudo ufw reload
Убедитесь, что в настройках безопасности (Security Groups / Port Forwarding) проброшены все вышеуказанные порты (особенно UDP диапазон для видео).
- Перейдите в каталог
synapse-server-auto/. - Переименуйте
example.envв.envи отредактируйте файл.env:DOMAIN_NAME: Ваш домен (например,matrix.example.com).FEDERATION_DOMAIN_WHITELIST: Список доверенных серверов Matrix через запятую (например 'matrix.org, matrix.example.com').MAX_UPLOAD_SIZE: Максимальный размер вложений (например,10M).
- Сделайте скрипт исполняемым:
chmod +x setup.sh - Запустите скрипт:
./setup.sh- Примечание 1: Если вы запускаете его повторно, скрипт выдаст предупреждение о перезаписи данных. Подтвердите действие, введя
y. - Примечание 2: Если
setup.shзапускается безsudo, то он может выдать инфо, что сертификаты не найдены. Если вы полностью уверены, что сертификаты находятся по указанному пути, то можете продолжить работу скрипта.
- Примечание 1: Если вы запускаете его повторно, скрипт выдаст предупреждение о перезаписи данных. Подтвердите действие, введя
Запустите сервер:
docker compose up -d
- Проверьте статус контейнеров:
docker compose ps
- Для регистрации первого пользователя (администратора) выполните команду на сервере:
bash docker exec -it synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008- примечание: при запуске docker контейнера, название сервиса может отличаться от того, что указано в команде, поэтому посмотрите как называется запущенный сервис командой
docker compose psи поменяйте название сервиса в команде добавления пользователя с 'synapse' например на 'synapse-server-auto-synapse-1'
- примечание: при запуске docker контейнера, название сервиса может отличаться от того, что указано в команде, поэтому посмотрите как называется запущенный сервис командой
- Следуйте подсказкам: введите логин, пароль и подтвердите права администратора (yes/no).
Перед использованием сервера рекомендуется провести предварительное тестирование. Создайте 2-3 пользователей согласно разделу 5, подсоединитесь разными пользователями с разных устройств (желательно в разной сети) к серверу и попробуйте передать между ними сообщения или видеозвони для того, чтобы убедиться что все настроено корректно.
- Откройте в браузере:
https://ВАШ_ДОМЕН - Нажмите "Войти" (Sign In).
- Убедитесь, что в поле "Домашний сервер" (Edit) указан ваш домен:
https://ВАШ_ДОМЕН. - Введите логин и пароль, созданные на шаге 5.
- Впоследствии вы можете сменить пароль в параметрах пользователя.
- Установите приложение Element-X из Google Play или F-Droid.
- Откройте приложение и нажмите "Начать" (Get Started).
- Нажмите "I already have an account" (У меня уже есть аккаунт).
- ВАЖНО: Нажмите "Edit" или "Change" рядом с сервером
matrix.org. - Выберите "Other" и введите адрес вашего сервера:
https://ВАШ_ДОМЕН. - Введите ваш логин и пароль.
- Логи: Для просмотра логов используйте
docker compose logs -f [название_сервиса]. - Обновление лимитов: Если нужно изменить
MAX_UPLOAD_SIZE, обновите его в\data\synapse\homeserver.yamlи перезапустите контейнеры:docker compose up -d. - Данные: Все сообщения хранятся в
data/postgres, а медиафайлы — вdata/synapse/media_store.
Для того чтобы ваш сервер мог обмениваться сообщениями с пользователями других серверов (например, matrix.org), должна корректно работать федерация.
- Проверка через сервис: Перейдите на сайт https://federationtester.matrix.org и введите свой домен. Если сайт выдал результат Success, значит база настроена верно.
- Тестовое добавление: Попробуйте в поиске контактов вашего клиента (например, Element) найти пользователя
@alexvdem:matrix.org. Если сервер находит его и предлагает добавить, федерация работает (как минимум с официальным сервером Matrix). - Важное примечание: Федерация может заработать не мгновенно. Иногда требуется некоторое время, чтобы ваш сервер начал полноценно "видеть" другие узлы сети.
Автор https://github.com/AlexVDem/synapse-server-auto Скрипта