Каждый администратор знает это чувство. Перед тобой сервер, на котором держится вся корпоративная коммуникация, и нужно не просто поддерживать его работу, а управлять пользователями, комнатами, настройками безопасности. Причем делать это быстро, точно и без права на ошибку. Matrix Synapse предлагает целый арсенал командных инструментов для такого управления, но разобраться в них с нуля бывает непросто.
Что стоит за командной строкой Matrix
Matrix представляет собой открытый протокол для децентрализованного общения в реальном времени. Synapse выступает эталонной серверной реализацией этого протокола, написанной на Python. Когда разворачиваешь собственный homeserver, получаешь полный контроль над данными пользователей, но вместе с этим приходит и ответственность за администрирование всей инфраструктуры.
Управление сервером Matrix строится на двух уровнях. Первый - это прямые команды операционной системы для работы с самим сервисом Synapse. Второй - это Admin API, мощный интерфейс для программного управления практически всеми аспектами работы сервера. Понимание обоих уровней позволяет выстроить эффективную систему администрирования.
Любая работа с сервером начинается с базовых операций. Команда для запуска сервиса:
systemctl start matrix-synapse
Остановка выполняется командой:
systemctl stop matrix-synapse
Перезапуск после изменения конфигурации:
systemctl restart matrix-synapse
Проверить состояние системы помогает команда, которая показывает, работает ли сервис, когда он был запущен последний раз и нет ли критических ошибок:
systemctl status matrix-synapse
Создание первых пользователей: фундамент системы
Без пользователей сервер - просто работающий процесс без реальной пользы. Регистрация нового участника системы выполняется через утилиту, которая устанавливается вместе с Synapse. Базовая команда выглядит так:
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
После ее запуска система в интерактивном режиме запросит имя пользователя, пароль и спросит, нужны ли административные права.
Для создания администратора команда дополняется флагом admin:
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008 --admin
Это критически важная операция при первоначальной настройке. Первый администратор получает доступ ко всем функциям управления сервером через Admin API. Без него дальнейшее администрирование становится крайне затруднительным.
Существует и неинтерактивный способ регистрации, когда все параметры передаются прямо в командной строке:
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008 -u username -p password --admin
Такой подход удобен для автоматизации и массового создания учетных записей, но требует осторожности - пароли в истории команд могут стать уязвимостью.
Admin API: центр управления сервером
После создания администратора открывается доступ к Admin API - HTTP-интерфейсу для программного управления сервером. Каждый запрос к API требует токена доступа администратора. Найти его можно в настройках клиента Element в разделе "Справка и О программе" - "Дополнительно" - "Токен доступа".
Базовая структура запроса к Admin API использует curl с заголовком авторизации:
curl --header "Authorization: Bearer <токен_доступа>" -X GET http://127.0.0.1:8008/_synapse/admin/v2/users/@username:domain.com
Этот запрос возвращает полную информацию о пользователе: его статус, является ли он администратором, деактивирован ли аккаунт, дату создания.
Получение списка всех пользователей сервера происходит через специальный endpoint:
curl --header "Authorization: Bearer <токен>" http://127.0.0.1:8008/_synapse/admin/v2/users?from=0&limit=100
Параметр from задает смещение для пагинации, а limit определяет количество записей в ответе. Можно фильтровать результаты, добавляя параметры для исключения гостевых аккаунтов или показа только деактивированных.
Модификация пользователя выполняется PUT-запросом. Например, назначение прав администратора существующему пользователю:
curl --header "Authorization: Bearer <токен>" -X PUT -H "Content-Type: application/json" -d '{"admin": true}' http://127.0.0.1:8008/_synapse/admin/v2/users/@username:domain.com
Тот же механизм позволяет изменить пароль, тип пользователя или заблокировать аккаунт.
Управление комнатами: порядок в пространствах общения
Комнаты в Matrix - это не просто чаты, а сложные структуры с собственными правилами, участниками и историей. Admin API предоставляет обширные возможности для работы с ними. Получить список всех комнат на сервере можно запросом:
curl --header "Authorization: Bearer <токен>" http://127.0.0.1:8008/_synapse/admin/v1/rooms
В ответе придут идентификаторы комнат, их названия, количество участников и другие метаданные.
Детальная информация о конкретной комнате доступна через endpoint с ID комнаты:
curl --header "Authorization: Bearer <токен>" http://127.0.0.1:8008/_synapse/admin/v1/rooms/<room_id>
Здесь раскрывается полная картина: создатель комнаты, правила присоединения, настройки видимости истории, федерация с другими серверами.
Удаление комнаты - операция деликатная и необратимая. API предлагает несколько стратегий. Простое удаление выполняется DELETE-запросом с телом, содержащим причину:
curl --header "Authorization: Bearer <токен>" -X DELETE -H "Content-Type: application/json" -d '{"message": "Комната нарушает правила сервера"}' http://127.0.0.1:8008/_synapse/admin/v1/rooms/<room_id>
При этом можно создать новую комнату с объяснением причины удаления, куда автоматически переместятся локальные пользователи, указав соответствующий параметр в теле запроса.
Назначение администратора комнаты происходит через специальный endpoint:
curl --header "Authorization: Bearer <токен>" -X POST -H "Content-Type: application/json" -d '{"user_id": "@admin:domain.com"}' http://127.0.0.1:8008/_synapse/admin/v1/rooms/<room_id>/make_room_admin
Это дает указанному пользователю максимальные права в пределах комнаты, что критично для модерации проблемных пространств.
Инструменты командной строки для администраторов
Помимо прямого взаимодействия с API существуют специализированные CLI-утилиты, упрощающие администрирование. Synadm представляет собой полноценный инструмент командной строки для Synapse. После установки через pip он предоставляет удобный интерфейс для большинства административных задач:
pip3 install synadm
Конфигурация synadm начинается с команды, которая в интерактивном режиме запрашивает адрес сервера и токен администратора:
synadm config
После настройки доступны десятки команд. Например, показать всех пользователей:
synadm user list
Вывести подробную информацию о конкретном аккаунте:
synadm user details @username:domain.com
Назначить права администратора:
synadm user modify @username:domain.com --admin
Работа с комнатами в synadm столь же интуитивна. Перечислить все комнаты:
synadm room list
Показать детали комнаты:
synadm room details <room_id>
Удалить комнату с запросом подтверждения:
synadm room delete <room_id>
Утилита поддерживает многочисленные флаги для фильтрации и сортировки результатов, что делает ее незаменимой для ежедневного администрирования.
Деактивация пользователей выполняется командой:
synadm user deactivate @username:domain.com
При этом сбрасываются все токены доступа, пользователь выходит из всех комнат, удаляются сторонние идентификаторы. Это радикальная мера, но иногда необходимая для защиты сообщества от нарушителей.
Работа с базой данных: когда API недостаточно
Иногда требуется прямое вмешательство в базу данных. Matrix Synapse обычно использует PostgreSQL, хотя для небольших инсталляций возможен SQLite. Подключение к PostgreSQL выполняется командой:
psql -U synapse_user -d synapse_db
После подключения открывается доступ к SQL-запросам.
Превращение обычного пользователя в администратора на уровне базы данных делается запросом:
UPDATE users SET admin = 1 WHERE name = '@username:domain.com';
Это обходной путь на случай, если первый администратор еще не создан или утерян доступ к Admin API. После такой модификации обязательно перезапустите Synapse для применения изменений.
Просмотр списка серверов в федерации выполняется запросом:
SELECT DISTINCT split_part(state_key, ':', 2) FROM current_state_events WHERE room_id = '<room_id>' AND membership = 'join';
Это показывает, какие внешние сервера имеют участников в конкретной комнате - полезная информация для диагностики проблем федерации.
Мониторинг и диагностика: предупредить проблему
Логи Synapse хранятся в файлах, путь к которым указан в конфигурации, обычно в директории журналов. Команда для отслеживания активности сервера в реальном времени:
tail -f /var/log/matrix-synapse/homeserver.log
При возникновении проблем именно логи становятся первым источником информации о причинах сбоя.
Synapse предоставляет метрики в формате Prometheus на специальном endpoint. Для включения метрик в конфигурационном файле нужно установить соответствующий параметр в секции listeners. После этого системы мониторинга типа Grafana смогут собирать данные о производительности, нагрузке, количестве активных пользователей и комнат.
Проверка состояния федерации с другими серверами Matrix выполняется через публичный API:
curl https://federationtester.matrix.org/api/report?server_name=ваш_домен
Этот сервис тестирует доступность вашего сервера из внешней сети, корректность SSL-сертификатов, правильность DNS-записей SRV. Результаты покажут, может ли ваш сервер полноценно участвовать в федеративной сети Matrix.
Когда смотришь на весь этот арсенал командных инструментов, понимаешь: администрирование Matrix Synapse - это не просто выполнение скриптов. Это выстраивание надежной инфраструктуры коммуникаций, где каждая команда имеет значение, каждый параметр влияет на безопасность и производительность. Освоение этих инструментов превращает администратора из человека, который просто "держит сервер включенным", в настоящего архитектора защищенного коммуникационного пространства.