Если ты администрируешь сервер Matrix Synapse и устал от командной строки, пора познакомиться с Synapse Admin — веб-интерфейсом для управления твоим homeserver. В этой статье я, как Senior DevOps, покажу тебе, как правильно развернуть этот инструмент на Apache, чтобы получить удобную панель управления без лишних сложностей.
Что такое Synapse Admin и зачем он нужен?
Synapse Admin — это веб-приложение на React, которое предоставляет графический интерфейс для администрирования сервера Matrix Synapse. Вместо ручного написания curl-запросов или использования командной строки ты получаешь:
- Управление пользователями (создание, блокировка, сброс паролей)
- Просмотр и модерация комнат
- Мониторинг активности сервера
- Управление серверными ACL и настройками
Предварительные требования
Перед началом установки Synapse Admin убедись, что у тебя есть:
- Работающий сервер Matrix Synapse (версия 1.85.0 или выше)
- Установленный и настроенный Apache 2.4+
- SSL-сертификат (Let's Encrypt или собственный)
- Доступ к серверу с правами sudo/root
- Открытые порты 80 и 443 в фаерволе
Шаг 1: Подготовка Apache и установка модулей
Для работы Synapse Admin через Apache нам понадобятся модули proxy и proxy_http. Давай проверим и установим их:
# Проверяем, установлены ли модули
a2query -m proxy
a2query -m proxy_http
# Если модули не активны, включаем их
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod ssl # Для HTTPS
sudo a2enmod headers # Для работы с заголовками
# Перезагружаем Apache для применения изменений
sudo systemctl restart apache2
Шаг 2: Настройка виртуального хоста для Synapse Admin
Создадим отдельный виртуальный хост для нашего админ-интерфейса. Я рекомендую использовать поддомен, например, admin.matrix.example.com.
# Создаем конфигурационный файл для виртуального хоста
sudo nano /etc/apache2/sites-available/synapse-admin.conf
Вставь следующую конфигурацию, заменив example.com на твой домен:
<VirtualHost *:443>
ServerName admin.matrix.example.com
# SSL конфигурация
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/admin.matrix.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/admin.matrix.example.com/privkey.pem
# Безопасные настройки SSL
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
# Проксирование на локальный Synapse Admin
ProxyPreserveHost On
# Основной endpoint для Synapse Admin
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
# Проксирование API запросов к Synapse
ProxyPass /_synapse/admin http://localhost:8008/_synapse/admin
ProxyPassReverse /_synapse/admin http://localhost:8008/_synapse/admin
# Важные заголовки для CORS и безопасности
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
# Логирование
ErrorLog ${APACHE_LOG_DIR}/synapse-admin_error.log
CustomLog ${APACHE_LOG_DIR}/synapse-admin_access.log combined
# Дополнительные настройки безопасности
<Location />
Require all granted
</Location>
</VirtualHost>
# Редирект с HTTP на HTTPS
<VirtualHost *:80>
ServerName admin.matrix.example.com
Redirect permanent / https://admin.matrix.example.com/
</VirtualHost>
sudo certbot --apache -d admin.matrix.example.com
Шаг 3: Настройка Synapse для работы с Admin
Теперь нужно настроить сам Synapse, чтобы он принимал запросы от нашего веб-интерфейса. Редактируем конфигурационный файл homeserver.yaml:
sudo nano /etc/matrix-synapse/homeserver.yaml
Добавь или измени следующие параметры:
# Включение Admin API
enable_registration: false # Рекомендуется отключить публичную регистрацию
# Настройки CORS для Synapse Admin
web_client_location: "https://admin.matrix.example.com"
# Список разрешенных источников для CORS
cors:
allowed_origins:
- "https://admin.matrix.example.com"
# Настройки клиента (опционально, но полезно)
client_api:
registration_requires_token: true
# Лимиты для Admin API (защита от злоупотреблений)
rc_admin:
per_second: 10
burst_count: 50
Шаг 4: Запуск Synapse Admin через Docker
Самый простой способ запустить Synapse Admin — использовать Docker. Создадим docker-compose.yml файл:
version: '3.8'
services:
synapse-admin:
image: awesometechnologies/synapse-admin:latest
container_name: synapse-admin
restart: unless-stopped
ports:
- "8080:80" # Apache будет проксировать на этот порт
environment:
- REACT_APP_SERVER_URL=https://admin.matrix.example.com
- REACT_APP_HOMESERVER_URL=https://matrix.example.com
networks:
- synapse-network
networks:
synapse-network:
external: true # Если у тебя уже есть сеть для Synapse
# Запускаем контейнер
sudo docker-compose up -d
# Проверяем, что контейнер работает
sudo docker ps | grep synapse-admin
Шаг 5: Активация виртуального хоста и финальная настройка
# Активируем сайт
sudo a2ensite synapse-admin.conf
# Проверяем конфигурацию Apache на ошибки
sudo apache2ctl configtest
# Если всё OK, перезагружаем Apache
sudo systemctl reload apache2
# Перезапускаем Synapse для применения изменений в homeserver.yaml
sudo systemctl restart matrix-synapse
Шаг 6: Создание административного пользователя
Для доступа к Synapse Admin тебе понадобится пользователь с административными правами:
# Регистрируем нового пользователя (если нужно)
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8008
# Или даем существующему пользователю админские права
sudo -u matrix-synapse psql synapse -c \
"UPDATE users SET admin = 1 WHERE name = '@admin:example.com';"
Таблица сравнения методов доступа к Admin API
| Метод | Сложность | Безопасность | Удобство |
|---|---|---|---|
| Прямой доступ к порту 8008 | Низкая | Опасный | Низкое |
| Apache прокси (наш метод) | Средняя | Высокая | Отличное |
| Nginx прокси | Средняя | Высокая | Отличное |
Решение распространенных проблем
Ошибка 502 Bad Gateway
Проверь, что контейнер Synapse Admin запущен и слушает на порту 8080:
# Проверяем порт
sudo netstat -tlnp | grep :8080
# Проверяем логи контейнера
sudo docker logs synapse-admin
CORS ошибки в браузере
Убедись, что в homeserver.yaml правильно указаны allowed_origins и web_client_location:
# Проверяем заголовки ответа Synapse
curl -I https://matrix.example.com/_matrix/client/versions
Проблемы с аутентификацией
Убедись, что пользователь действительно имеет админские права:
sudo -u matrix-synapse psql synapse -c \
"SELECT name, admin FROM users WHERE name LIKE '%admin%';"
Оптимизация производительности
Для продакшн-среды рекомендую добавить эти настройки в конфигурацию Apache:
# Добавь в VirtualHost *:443
# Кэширование статических файлов
<Location /static>
ExpiresActive On
ExpiresDefault "access plus 1 year"
Header append Cache-Control "public"
</Location>
# Настройки прокси
ProxyTimeout 300
ProxyBadHeader Ignore
# Лимиты для защиты
Timeout 60
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Безопасность — наш приоритет
Дополнительные меры безопасности, которые стоит реализовать:
- Ограничь доступ по IP с помощью
Require ip 192.168.1.0/24 - Настрой двухфакторную аутентификацию для администраторов
- Регулярно обновляй образ Docker synapse-admin
- Настрой мониторинг неудачных попыток входа
- Используй отдельный SSL-сертификат для админ-панели
Чек-лист завершения установки
- ✓ Apache модули proxy и proxy_http включены
- ✓ SSL-сертификат установлен и работает
- ✓ Контейнер Synapse Admin запущен на порту 8080
- ✓ CORS настройки в homeserver.yaml применены
- ✓ Административный пользователь создан/назначен
- ✓ Виртуальный хост активирован и Apache перезагружен
Теперь у тебя есть полностью функционирующая панель управления Synapse Admin, доступная по https://admin.matrix.example.com. Помни: с большой силой приходит большая ответственность — используй админ-панель аккуратно и всегда делай бэкапы перед масштабными изменениями.