OffshoreVps
Инструкции3 окт. 20267 мин чтенияАвтор: команда OffshoreVps

Как разместить сервер Matrix (Synapse) на VPS

Запустите собственный домашний сервер Matrix с Synapse, PostgreSQL и Docker: конфигурация, HTTPS, делегирование федерации, пользователи и регистрация.

Matrix — это открытая сеть для общения. Когда вы запускаете собственный домашний сервер Matrix, ваши сообщения и аккаунты находятся на вашем сервере, но вы по-прежнему можете общаться с людьми на других серверах Matrix. В этом руководстве устанавливается Synapse, эталонный домашний сервер, с Docker и PostgreSQL за HTTPS.

Окно терминала на VPS с командами для размещения сервера Matrix, начиная с «mkdir -p ~/synapse && cd ~/synapse»
Примерно такие команды вы будете выполнять на своём сервере в этом руководстве.

Что нужно знать сначала

  • Федерация. Ваш сервер может общаться с другими, а значит, использует трафик и диск для хранения комнат, к которым вы присоединяетесь. Небольшие частные серверы нетребовательны. Присоединение к очень большим публичным комнатам — нет.
  • Размер. Для небольшой группы подойдут 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
Шаги этого руководства по порядку: 1. Что нужно знать сначала; 2. создайте конфигурацию; 3. перейдите на PostgreSQL; 4. HTTPS и федерация; 5. создайте пользователей и закройте регистрацию; 6. Клиенты и осторожность
Шаги этого руководства по порядку.

Шаг 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. Сначала прочитайте о защите сервера.