EvilFox.CC
  • Home
  • Privacy Policy
  • Donate
  • Контакты

Пример docker-compose для развертывания сервера Matrix Synapse

Download the latest version of the modification

Author: admin
Views: 44
Comments: 0
Published: 28.11.2025
Пример docker-compose для развертывания сервера Matrix Synapse

Подготовка

Требования:

  • Чистый сервер Ubuntu (22.04 / 24.04).

  • Домен (в примере: example.com).

  • DNS записи (A-записи):

    • matrix.example.com -> IP сервера (Сервер Synapse)

    • chat.example.com -> IP сервера (Клиент Element)

    • turn.example.com -> IP сервера (для красоты, можно использовать IP)

Шаг 1: Установка свежего Docker

Не используйте старые версии из репозитория Ubuntu.

# Удаляем старое
sudo apt-get remove docker docker-engine docker.io containerd runc

# Ставим ключи и репозиторий
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Ставим Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Запускаем
sudo systemctl enable --now docker

Шаг 2: Структура и Секреты

  1. Создаем папку:

    mkdir -p matrix-stack/{caddy,synapse-data,postgres-data}
    cd matrix-stack
    1. Генерируем секреты (пароли). Выполните команду openssl rand -hex 32 три раза и сохраните результаты куда-нибудь в блокнот. Назовем их:

      • POSTGRES_PASS (пароль базы)

      • TURN_SECRET (для звонков)

      • REG_SECRET (для регистрации пользователей)


    Шаг 3: Файл docker-compose.yml

    Создайте файл nano docker-compose.yml.
    Замените значения:

    • YOUR_REAL_IP — внешний IP вашего сервера.

    • turn.example.com — ваш домен (или тот же IP).

    • Пароли и секреты на сгенерированные выше.

    services:
      # --- Reverse Proxy (Caddy) ---
      caddy:
        image: caddy:latest
        restart: unless-stopped
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - ./Caddyfile:/etc/caddy/Caddyfile
          - caddy_dаta:/data
          - caddy_config:/config
        networks:
          - matrix-net
    
      # --- Database (Postgres) ---
      postgres:
        image: postgres:15
        restart: unless-stopped
        environment:
          POSTGRES_DB: synapse
          POSTGRES_USER: synapse
          POSTGRES_PASSWORD: "YOUR_POSTGRES_PASSWORD" # <--- ПАРОЛЬ 1
          POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
        volumes:
          - ./postgres-dаta:/var/lib/postgresql/data
        networks:
          - matrix-net
    
      # --- Matrix Server (Synapse) ---
      synapse:
        image: matrixdotorg/synapse:latest
        restart: unless-stopped
        environment:
          - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
        volumes:
          - ./synapse-dаta:/data
        networks:
          - matrix-net
        depends_on:
          - postgres
    
      # --- TURN Server (Coturn) - Звонки ---
      coturn:
        image: coturn/coturn:latest
        restart: unless-stopped
        network_mode: "host" # Критично для звонков
        command:
          - -n
          - --log-file=stdout
          - --min-port=49152
          - --max-port=49200
          - --realm=turn.example.com  # <--- ВАШ ДОМЕН
          - --listening-port=3478
          - --tls-listening-port=5349
          - --external-ip=YOUR_REAL_IP # <--- ОБЯЗАТЕЛЬНО ВНЕШНИЙ IP СЕРВЕРА
          - --use-auth-secret
          - --static-auth-secret=YOUR_TURN_SECRET # <--- СЕКРЕТ 2
          - --no-cli
    
      # --- Web Client (Element) ---
      element:
        image: vectorim/element-web:latest
        restart: unless-stopped
        volumes:
          - ./element-config.json:/app/config.json
        networks:
          - matrix-net
    
    volumes:
      caddy_dаta:
      caddy_config:
    
    networks:
      matrix-net:

    Шаг 4: Конфигурация Element (element-config.json)

    Создайте файл nano element-config.json.
    Это исправит ошибку MISSING_MATRIX_RTC_FOCUS, отключив экспериментальные функции.

    Замените домены на свои:

    {
        "default_server_config": {
            "m.homeserver": {
                "base_url": "https://matrix.example.com",
                "server_name": "matrix.example.com"
            },
            "m.identity_server": {
                "base_url": "https://vector.im"
            }
        },
        "brand": "Element",
        "show_labs_settings": true,
        "features": {
            "feature_element_call_video_rooms": false,
            "feature_group_calls": false,
            "feature_video_rooms": false,
            "feature_new_group_call_experience": false,
            "feature_call_only_mode": false
        },
        "element_call": {
            "url": null
        },
        "jitsi": {
            "preferredDomain": "jitsi.riot.im"
        }
    }

    Шаг 5: Настройка Caddy (Caddyfile)

    Создайте файл nano Caddyfile.

    # --- 1. Synapse (Сервер) ---
    matrix.example.com {
        encode zstd gzip
    
        # Если открыли корень сервера -> редирект в чат
        redir / https://chat.example.com 302
    
        # Проксирование API
        reverse_proxy /_matrix/* synapse:8008
        reverse_proxy /_synapse/* synapse:8008
    
        # Автонастройка клиентов (.well-known)
        handle /.well-known/matrix/client {
            header Content-Type application/json
            header Access-Control-Allow-Origin *
            respond `{"m.homeserver": {"base_url": "https://matrix.example.com"}}`
        }
    
        handle /.well-known/matrix/server {
            header Content-Type application/json
            respond `{"m.server": "matrix.example.com:443"}`
        }
    }
    
    # --- 2. Федерация (Общение с другими серверами) ---
    matrix.example.com:8448 {
        reverse_proxy synapse:8008
    }
    
    # --- 3. Element (Клиент) ---
    chat.example.com {
        encode zstd gzip
        reverse_proxy element:80
    }

    Шаг 6: Генерация и настройка Synapse

    1. Генерация конфига:

    docker compose run --rm -e SYNAPSE_SERVER_NAME=matrix.example.com -e SYNAPSE_REPORT_STATS=no synapse generate
    1. (Замените matrix.example.com на ваш домен Synapse)

    2. Редактирование synapse-data/homeserver.yaml:
      Откройте созданный файл и измените следующие блоки:

      А. URL:
      Добавьте в начало файла:

    public_baseurl: "https://matrix.example.com"

    Б. База данных:

    database:
      name: psycopg2
      args:
        user: synapse
        password: "YOUR_POSTGRES_PASSWORD" # <--- ПАРОЛЬ 1
        database: synapse
        host: postgres
        cp_min: 5
        cp_max: 10

    В. Звонки (TURN):
    Найдите turn_uris и сделайте так:

    turn_uris:
      - "turn:YOUR_REAL_IP:3478?transport=udp"
      - "turn:YOUR_REAL_IP:3478?transport=tcp"
      - "turns:YOUR_REAL_IP:5349?transport=udp"
      - "turns:YOUR_REAL_IP:5349?transport=tcp"
    
    turn_shared_secret: "YOUR_TURN_SECRET" # <--- СЕКРЕТ 2 (тот же, что в docker-compose)
    turn_user_lifetime: 86400000
    turn_allow_guests: True

    Г. Регистрация и права:
    В конце файла:

    enable_registration: false  # Закрываем свободную регистрацию
    registration_shared_secret: "YOUR_REG_SECRET" # <--- СЕКРЕТ 3

    Шаг 7: Запуск

    Запускаем всё и сразу:

    docker compose up -d

    Шаг 8: Создание пользователя и выдача Админа

    Так как мы убрали веб-админку, делаем всё через консоль (это нужно сделать один раз).

    1. Создаем пользователя:

    docker compose exec synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
      • User: admin

      • Password: ваш_супер_пароль

      • Make admin: yes

    1. Если забыли сделать админом при создании:
      Можно выдать права через базу данных:

    docker compose exec postgres psql -U synapse -c "UPDATE users SET admin = 1 WHERE name = '@admin:matrix.example.com';"

    Шаг 9: Использование

    1. Зайдите на https://chat.example.com.

    2. Войдите под созданным пользователем.

    3. Проверка звонков:

      • Зайдите в Настройки -> Голосовая и видеосвязь.

      • Если видите "Ближайший VoIP-релей: coturn" (или ваш IP) — всё работает через сервер.

    Готово! У вас настроен стабильный сервер Matrix без лишних зависимостей.

Gallery

{gallery}

Download Files

Download Files

Downloads

  • admin
  • 44
  • 0
  • 28.11.2025

No comments yet.

Добавить комментарий
Для того, что бы оставить свой комментарий, пройдите Регистрацию.
Для быстрого входа воспользуйтесь соц. сетями.
или
  • Google.com
регистрация Я забыл свой пароль
  • Hearts of Iron 4 EN
    • Gameplay
    • Graphics
    • Alternative History
  • Vless
    • Mikrotik
  • Black Desert
    • BDO Releases
  • Lineage 2
    • Авторские дополнения
    • Дополнения
    • Java сервер
    • Web
    • Руководства
    • Ревизии | RUSaCis - эмулятор Interlude
  • amnezia
    • Решение проблем VPN Amnezia
    • VPN Documentation
  • Mods for Ravenfield
    • Weapons for Ravenfield
  • Моды для Oblivion Ru
    • Оружие
  • Minecraft Mods EN
    • Adventure
  • Flutter - Build apps for any screen
    • Flutter documentation
  • Oblivion Remastered EN
    • Animations
  • The Witcher 3 EN
    • Alchemy and Crafting
  • Моды для Oblivion Remastered RU
    • Дома для игрока
    • Интерфейс
    • Геймплей и изменения
    • Исправления и патчи
    • Ретекстуры и реплейсеры
    • Программы для Oblivion Remastered
    • Одежда, аксессуары
  • Моды для Ведьмак 3 RU
    • Оружие
    • Броня
    • Геймплей
    • Визуальные изменения
    • Модели и текстуры
    • Лица и причёски
    • Исправления и патчи
    • Программы и утилиты
    • Чит коды
    • Сохранения (сейвы)
  • Nodejs
  • Ubuntu
    • Блокировка правил
    • marzban
    • vpn panel Remnawave Panel
    • vpn
    • Автоматизация
    • Видеозвонки
  • Tera
    • Tera Releases
  • bdo evilfox
    • Гайды
    • Админ команды PTS Corsar
    • Corsair API
  • WireGuard
  • Лучший VPN WireGuard
  • Minecraft
    • Моды
    • Оружие
  • Matrix
    • гайды
Оцените работу движка
Статистика
This website uses cookies to enhance your browsing experience. By continuing to use this site, you consent to our use of cookies. For more information, please read our Privacy Policy.
© EvilFox 2022-2026. все права защищены.