Matrix — это открытая сеть для общения. Когда вы запускаете собственный домашний сервер Matrix, ваши сообщения и аккаунты находятся на вашем сервере, но вы по-прежнему можете общаться с людьми на других серверах Matrix. В этом руководстве устанавливается Synapse, эталонный домашний сервер, с Docker и PostgreSQL за HTTPS.
Что нужно знать сначала
- Федерация. Ваш сервер может общаться с другими, а значит, использует трафик и диск для хранения комнат, к которым вы присоединяетесь. Небольшие частные серверы нетребовательны. Присоединение к очень большим публичным комнатам — нет.
- Размер. Для небольшой группы подойдут 2 vCPU и 4 ГБ RAM. См. хостинг серверов Matrix.
- Домен. Вам нужен домен. Имя сервера (например,
example.com) входит в каждый идентификатор пользователя и не может быть изменено позже.
Шаг 1: создайте конфигурацию
mkdir -p ~/synapse && cd ~/synapse
docker run -it --rm -v $(pwd)/data:/data \
-e SYNAPSE_SERVER_NAME=example.com \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:latest generate
Шаг 2: перейдите на PostgreSQL
По умолчанию используется SQLite, но для чего-либо серьёзнее теста лучше PostgreSQL. Отредактируйте data/homeserver.yaml и замените блок database:
database:
name: psycopg2
args:
user: synapse
password: CHANGE_ME
database: synapse
host: db
cp_min: 5
cp_max: 10
Шаг 3: файл Compose
services:
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: synapse
POSTGRES_PASSWORD: CHANGE_ME
POSTGRES_DB: synapse
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
volumes:
- ./pgdata:/var/lib/postgresql/data
synapse:
image: matrixdotorg/synapse:latest
restart: unless-stopped
depends_on: [db]
ports:
- "127.0.0.1:8008:8008"
volumes:
- ./data:/data
docker compose up -d
docker compose logs -f synapse
Шаг 4: HTTPS и федерация
Запустите Synapse на matrix.example.com и опубликуйте файл делегирования, чтобы имя вашего сервера оставалось example.com:
matrix.example.com {
reverse_proxy 127.0.0.1:8008
}
example.com {
handle /.well-known/matrix/server {
header Content-Type application/json
respond `{"m.server": "matrix.example.com:443"}`
}
handle /.well-known/matrix/client {
header Content-Type application/json
header Access-Control-Allow-Origin *
respond `{"m.homeserver": {"base_url": "https://matrix.example.com"}}`
}
}
Проверьте федерацию с помощью Matrix Federation Tester, когда DNS заработает.
Шаг 5: создайте пользователей и закройте регистрацию
docker compose exec synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
Оставьте enable_registration равным false в homeserver.yaml, если не хотите открытой регистрации.
Клиенты и осторожность
Используйте Element или любой клиент Matrix и входите с именем вашего сервера. Делайте резервные копии папки data и данных Postgres и обновляйте Synapse. Сначала прочитайте о защите сервера.