- PVSM.RU - https://www.pvsm.ru -

💡 Matrix — это не просто очередной мессенджер, а открытый децентрализованный протокол. Это ваш собственный «Дом», где вы контролируете данные, а не Google или Meta. В этом руководстве я пошагово расскажу, как собрать из готовых компонентов свой идеальный чат-сервер: с авторизацией через Google, видеозвонками высокого качества, двусторонними мостами в Telegram и WhatsApp, а также с веб-интерфейсом. Инструкция рассчитана на новичков, но будет полезна и опытным администраторам
Никогда не писал статьи, особенно здесь, но попытавшись найти нормальную инструкцию для разворачивания сервера Matrix с Google-аутентификацией, видеозвонками мостом Telegram и WhatsApp понял, что они либо не подходят, либо не учитывают нюансы Google-аутентификации (например не все админские сайты подходят и клиенты), часть инструкций, даже на официальном сайте, указаны не верно. В данной статье я постарался максимально точно расписать очерёдность настройки различных модулей. Надеюсь данная инструкция будем вам полезна. Если будут вопросы пишите, чем смогу помогу.
Так же отвечу на возможный вопрос, для чего всё это нужно. Не для кого не секрет, что работа telegram в данный момент не отличается стабильностью. А данный сервер с мостом в telegram позволяет оставаться на связи даже во время работы белых списков (зависит от города).
В этом гайде мы соберём из готовых Docker-контейнеров полнофункциональный Matrix-сервер для семьи или небольшой компании, который включает:
🔐 Вход через Google (а также поддержку обычных логинов/паролей);
🎥 Видеозвонки на базе LiveKit (я их ещё тестирую, качество среднее, но работает);
🔄 Двусторонние мосты в Telegram и WhatsApp (читайте и отвечайте на сообщения прямо из Matrix);
🖥 Красивый веб-клиент Element Web на вашем домене;
⚙️ Удобную админ-панель Ketesa для управления пользователями и комнатами.
Инструкция писалась для Debian 13, но подойдёт для любого дистрибутива Linux с Docker.
Минимальные требования:
|
Параметр |
Значение |
|---|---|
|
ОС |
Debian 13 |
|
CPU |
2–4 ядра |
|
RAM |
4–8 ГБ (рекомендуется 6+) |
|
Диск |
30–40 ГБ (если будете активно общаться лучше сразу выделить 100 ГБ) |
|
Домен 1 |
|
|
Домен 2 |
|
Подключаемся к серверу по SSH и выполняем базовые команды:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git ufw pwgen
Устанавливаем Docker по официальному скрипту (это проще всего):
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp docker
Устанавливаем плагин Docker Compose V2:
sudo apt install -y docker-compose-plugin
Открываем необходимые порты (можно сделать позже):
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3478/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw allow 5349/udp
sudo ufw allow 7880/tcp
sudo ufw allow 7881/tcp
sudo ufw allow 50000:50200/udp
sudo ufw enable
Все наши файлы будут лежать в /opt/matrix-synapse:
sudo mkdir -p /opt/matrix-synapse/{data,element-web,mautrix-telegram,mautrix-whatsapp,livekit,mas-config}
sudo chown -R $USER:$USER /opt/matrix-synapse
cd /opt/matrix-synapse
Чтобы не «засорять» конфиги паролями, создадим файл .env. Сгенерируйте значения командой pwgen -s 32 1.
nano .env
# Основные секреты Synapse
SYNAPSE_POSTGRES_PASSWORD=YOUR_POSTGRES_PASSWORD_HERE1
SYNAPSE_REGISTRATION_SHARED_SECRET=YOUR_REGISTRATION_SHARED_SECRET_HERE2
SYNAPSE_MACAROON_SECRET_KEY=YOUR_MACAROON_SECRET_HERE3
SYNAPSE_FORM_SECRET=YOUR_FORM_SECRET_HERE4
SYNAPSE_TURN_SHARED_SECRET=YOUR_TURN_SHARED_SECRET_HERE5
# MAS
MAS_POSTGRES_PASSWORD=YOUR_MAS_POSTGRES_PASSWORD_HERE6
MAS_SHARED_SECRET=YOUR_MAS_SHARED_SECRET_HERE7
# LiveKit
LIVEKIT_API_KEY=YOUR_LIVEKIT_API_KEY_HERE8
LIVEKIT_API_SECRET=YOUR_LIVEKIT_API_SECRET_HERE9
# Telegram Bridge
TELEGRAM_POSTGRES_PASSWORD=YOUR_TELEGRAM_POSTGRES_PASSWORD_HERE10
# WhatsApp Bridge
WHATSAPP_POSTGRES_PASSWORD=YOUR_WHATSAPP_POSTGRES_PASSWORD_HERE11
Создаём главный файл оркестрации docker-compose.yml:
nano docker-compose.yml
services:
# ==================== БАЗА ДАННЫХ SYNAPSE ====================
postgres:
image: postgres:15-alpine
container_name: matrix_postgres
restart: unless-stopped
volumes:
- ./data/postgres:/var/lib/postgresql/data
environment:
POSTGRES_DB: synapse
POSTGRES_USER: synapse
POSTGRES_PASSWORD: ${SYNAPSE_POSTGRES_PASSWORD}
networks:
- matrix_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U synapse"]
interval: 10s
timeout: 5s
retries: 5
# ==================== SYNAPSE ====================
synapse:
image: matrixdotorg/synapse:v1.151.0rc1
container_name: matrix_synapse
restart: unless-stopped
volumes:
- ./data:/data
- ./logs:/var/log/synapse
ports:
- "8008:8008"
- "9000:9000"
environment:
SYNAPSE_SERVER_NAME: matrix.ваш-домен.ru
SYNAPSE_REPORT_STATS: "no"
networks:
- matrix_network
depends_on:
- postgres
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8008/health"]
interval: 30s
timeout: 10s
retries: 3
# ==================== БАЗА ДАННЫХ MAS ====================
matrix-auth-db:
image: postgres:15-alpine
container_name: matrix_auth_db
restart: unless-stopped
volumes:
- ./matrix-auth-db:/var/lib/postgresql/data
environment:
POSTGRES_DB: matrix_auth
POSTGRES_USER: matrix_auth
POSTGRES_PASSWORD: ${MAS_POSTGRES_PASSWORD}
networks:
- matrix_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U matrix_auth"]
interval: 10s
timeout: 5s
retries: 5
# ==================== MATRIX AUTHENTICATION SERVICE (MAS) ====================
matrix-auth:
image: ghcr.io/element-hq/matrix-authentication-service:latest
container_name: matrix_authentication_service
restart: unless-stopped
depends_on:
matrix-auth-db:
condition: service_healthy
synapse:
condition: service_started
volumes:
- ./mas-config:/config:ro
environment:
- MAS_CONFIG=/config/config.yaml
networks:
- matrix_network
ports:
- "127.0.0.1:8081:8080"
# ==================== ELEMENT WEB ====================
element-web:
image: vectorim/element-web:latest
container_name: element_web
restart: unless-stopped
volumes:
- ./element-web/config.json:/app/config.json:ro
ports:
- "127.0.0.1:8765:80"
networks:
- matrix_network
depends_on:
- synapse
# ==================== KETESA (АДМИН-ПАНЕЛЬ) ====================
ketesa:
container_name: ketesa
hostname: ketesa
build:
context: https://github.com/etkecc/ketesa.git
dockerfile: docker/Dockerfile.build
ports:
- "8181:8080"
restart: unless-stopped
networks:
- matrix_network
# ==================== БАЗА ДАННЫХ TELEGRAM ====================
telegram-db:
image: postgres:15-alpine
container_name: telegram_db
restart: unless-stopped
volumes:
- ./telegram-db:/var/lib/postgresql/data
environment:
POSTGRES_DB: telegram
POSTGRES_USER: telegram
POSTGRES_PASSWORD: ${TELEGRAM_POSTGRES_PASSWORD}
networks:
- matrix_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U telegram"]
interval: 10s
timeout: 5s
retries: 5
# ==================== TELEGRAM BRIDGE ====================
telegram-bridge:
image: dock.mau.dev/mautrix/telegram:latest
container_name: telegram_bridge
restart: unless-stopped
volumes:
- ./mautrix-telegram:/data
environment:
- UID=991
- GID=991
networks:
- matrix_network
ports:
- "127.0.0.1:29317:29317"
depends_on:
telegram-db:
condition: service_healthy
synapse:
condition: service_started
# ==================== БАЗА ДАННЫХ WHATSAPP ====================
whatsapp-db:
image: postgres:15-alpine
container_name: whatsapp_db
restart: unless-stopped
volumes:
- ./whatsapp-db:/var/lib/postgresql/data
environment:
POSTGRES_DB: whatsapp
POSTGRES_USER: whatsapp
POSTGRES_PASSWORD: ${WHATSAPP_POSTGRES_PASSWORD}
networks:
- matrix_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U whatsapp"]
interval: 10s
timeout: 5s
retries: 5
# ==================== WHATSAPP BRIDGE ====================
whatsapp-bridge:
image: dock.mau.dev/mautrix/whatsapp:latest
container_name: mautrix-whatsapp
restart: unless-stopped
volumes:
- ./mautrix-whatsapp:/data
environment:
- UID=1337
- GID=1337
networks:
- matrix_network
depends_on:
- synapse
# ==================== LIVEKIT JWT SERVICE ====================
livekit-jwt:
image: ghcr.io/element-hq/lk-jwt-service:latest
container_name: livekit-jwt
restart: unless-stopped
environment:
- LIVEKIT_URL=wss://livekit.ваш-домен.ru
- LIVEKIT_KEY=${LIVEKIT_API_KEY}
- LIVEKIT_SECRET=${LIVEKIT_API_SECRET}
- LIVEKIT_JWT_BIND=:8080
ports:
- "127.0.0.1:8088:8080"
networks:
- matrix_network
# ==================== LIVEKIT SERVER ====================
livekit:
image: livekit/livekit-server:latest
container_name: livekit
command: --config /etc/livekit.yaml
restart: unless-stopped
volumes:
- ./livekit/livekit.yaml:/etc/livekit.yaml:ro
network_mode: host
networks:
matrix_network:
driver: bridge
Генерируем первоначальный конфиг:
docker run -it --rm
-v /opt/matrix-synapse/data:/data
-e SYNAPSE_SERVER_NAME=matrix.ваш-домен.ru
-e SYNAPSE_REPORT_STATS=no
matrixdotorg/synapse:v1.151.0rc1 generate
Редактируем /opt/matrix-synapse/data/homeserver.yaml:
nano /opt/matrix-synapse/data/homeserver.yaml
# База данных (указываем PostgreSQL вместо SQLite)
database:
name: psycopg2
args:
user: synapse
password: YOUR_SYNAPSE_POSTGRES_PASSWORD
database: synapse
host: postgres
port: 5432
# Отключаем старую регистрацию (всё будет через MAS)
enable_registration: false
# Включаем поддержку Matrix Authentication Service (MAS)
matrix_authentication_service:
enabled: true
endpoint: http://matrix-auth:8080
secret: "YOUR_MAS_SHARED_SECRET"
allow_appservice_registration: true
# Настройки TURN/STUN (для звонков)
turn_uris:
- "turn:matrix.ваш-домен.ru:3478?transport=udp"
- "turns:matrix.ваш-домен.ru:5349?transport=tcp"
turn_shared_secret: "YOUR_TURN_SHARED_SECRET"
# Экспериментальные фичи для видеозвонков (обязательно!)
experimental_features:
msc3266_enabled: true
msc4222_enabled: true
msc4140_enabled: true
msc4143_enabled: true
# Интеграция с LiveKit
livekit_jwt_sso:
enabled: true
livekit_jwt_sso_url: "https://matrix.ваш-домен.ru/livekit/jwt/token"
livekit_key: "YOUR_LIVEKIT_API_KEY"
livekit_secret: "YOUR_LIVEKIT_API_SECRET"
# Подключение мостов (appservices)
app_service_config_files:
- "/data/telegram-registration.yaml"
- "/data/whatsapp-registration.yaml"
nano element-web/config.json
{
"default_server_config": {
"m.homeserver": {
"base_url": "https://matrix.ваш-домен.ru",
"server_name": "matrix.ваш-домен.ru"
}
},
"disable_custom_urls": false,
"disable_guests": true,
"brand": "Чат ваш-домен.ru",
"default_theme": "dark",
"room_directory": {
"servers": ["matrix.ваш-домен.ru"]
},
"livekit_service_url": "wss://matrix.ваш-домен.ru/rtc"
}
MAS — это сервис от Element, который берёт на себя управление пользователями и аутентификацию (в том числе через Google OAuth 2.0).
nano mas-config/config.yaml
http:
public_base: "https://matrix.ваш-домен.ru"
issuer: "https://matrix.ваш-домен.ru"
listeners:
- name: web
resources:
- name: discovery
- name: human
- name: oauth
- name: compat
- name: graphql
- name: assets
binds:
- address: '0.0.0.0'
port: 8080
- name: internal
resources:
- name: health
binds:
- host: localhost
port: 8081
database:
uri: "postgresql://matrix_auth:YOUR_MAS_POSTGRES_PASSWORD@matrix-auth-db/matrix_auth"
secrets:
encryption: "YOUR_ENCRYPTION_KEY" # openssl rand -hex 32
matrix:
kind: synapse
homeserver: matrix.ваш-домен.ru
secret: "YOUR_MAS_SHARED_SECRET"
endpoint: "http://synapse:8008"
upstream_oauth2:
providers:
- id: 01HFS6S2SVAR7Y7QYMZJ53ZAGZ # Уникальный ULID
human_name: Google
brand_name: "google"
issuer: "https://accounts.google.com"
token_endpoint_auth_method: "client_secret_post"
client_id: "YOUR_GOOGLE_CLIENT_ID"
client_secret: "YOUR_GOOGLE_CLIENT_SECRET"
scope: "openid profile email"
claims_imports:
localpart:
action: ignore
displayname:
action: suggest
template: "{{ user.name }}"
email:
action: suggest
template: "{{ user.email }}"
registration:
enabled: true
Перейдите в Google Cloud Console [13].
Создайте проект и включите People API.
В разделе «Учетные данные» создайте OAuth Client ID типа «Веб-приложение».
В поле «Authorized redirect URIs» добавьте: https://matrix.ваш-домен.ru/upstream/callback/01HFS6S2SVAR7Y7QYMZJ53ZAGZ [14]
Скопируйте Client ID и Client Secret в конфиг выше.
LiveKit — это современный Selective Forwarding Unit (SFU), обеспечивающий качественные групповые видеозвонки.
nano livekit/livekit.yaml
port: 7880
bind_addresses:
- '0.0.0.0'
rtc:
tcp_port: 7881
port_range_start: 50000
port_range_end: 50200
use_external_ip: true
room:
auto_create: true
turn:
enabled: true
domain: livekit.ваш-домен.ru
udp_port: 3478
tls_port: 5349
external_tls: true
keys:
"YOUR_LIVEKIT_API_KEY": "YOUR_LIVEKIT_API_SECRET"
Он необходим для выдачи временных токенов доступа к комнатам видеозвонков.
Мосты позволяют читать и отправлять сообщения из Matrix в Telegram и WhatsApp.
Получите API-ключи на my.telegram.org/apps [15]. (там есть нюанс с ошибкой при создании ключей, пишет просто "Ошибка", проблема известная и гуглится, мне помогло вход с мобильного интернета, с телефона)
Создайте бота в Telegram через @BotFather и получите bot_token.
Создайте конфиг:
nano mautrix-telegram/config.yaml
network:
api_id: YOUR_TELEGRAM_API_ID
api_hash: "YOUR_TELEGRAM_API_HASH"
device_info:
lang_code: ru
system_lang_code: ru
homeserver:
address: http://synapse:8008
domain: matrix.ваш-домен.ru
appservice:
address: http://telegram-bridge:29317
hostname: 0.0.0.0
port: 29317
database: postgres://telegram:YOUR_TELEGRAM_POSTGRES_PASSWORD@telegram-db/telegram?sslmode=disable
bot:
username: telegram_bot
displayname: Telegram Bridge Bot
bridge:
permissions:
"matrix.ваш-домен.ru": user
"@YOUR_USERNAME:matrix.ваш-домен.ru": admin
encryption:
allow: true
default: true
msc4190: true
self_sign: true
Генерация регистрации:
docker run --rm -v /opt/matrix-synapse/mautrix-telegram:/data dock.mau.dev/mautrix/telegram:latest
cp /opt/matrix-synapse/mautrix-telegram/registration.yaml /opt/matrix-synapse/data/telegram-registration.yaml
Создайте конфиг:
nano mautrix-whatsapp/config.yaml
homeserver:
address: http://synapse:8008
domain: matrix.ваш-домен.ru
appservice:
address: http://whatsapp-bridge:29318
hostname: 0.0.0.0
port: 29318
database: postgres://whatsapp:YOUR_WHATSAPP_POSTGRES_PASSWORD@whatsapp-db/whatsapp?sslmode=disable
bot:
username: whatsappbot
displayname: WhatsApp Bridge Bot
bridge:
permissions:
"matrix.ваш-домен.ru": user
"@YOUR_USERNAME:matrix.ваш-домен.ru": admin
encryption:
allow: true
default: true
msc4190: true
self_sign: true
Генерация регистрации:
docker run --rm -v /opt/matrix-synapse/mautrix-whatsapp:/data dock.mau.dev/mautrix/whatsapp:latest
cp /opt/matrix-synapse/mautrix-whatsapp/registration.yaml /opt/matrix-synapse/data/whatsapp-registration.yaml
Ketesa — современная админ-панель для Matrix. В docker-compose.yml она уже добавлена. Настройка доступа через Nginx будет в следующем разделе.
Устанавливаем Nginx и Certbot:
sudo apt install -y nginx certbot python3-certbot-nginx
Получаем сертификаты:
sudo certbot certonly --nginx -d matrix.ваш-домен.ru -d livekit.ваш-домен.ru
Создаём конфиг Nginx:
sudo nano /etc/nginx/sites-available/matrix
# Редирект HTTP -> HTTPS
server {
listen 80;
listen [::]:80;
server_name matrix.YOUR_DOMAIN.ru;
location ^~ /.well-known/acme-challenge/ {
root /var/www/html;
}
location / {
return 301 https://$host$request_uri;
}
}
# Основной сервер
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name matrix.YOUR_DOMAIN.ru;
ssl_certificate /etc/letsencrypt/live/matrix.YOUR_DOMAIN.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/matrix.YOUR_DOMAIN.ru/privkey.pem;
client_max_body_size 50M;
proxy_read_timeout 600s;
# Element Web
location / {
proxy_pass http://127.0.0.1:8765/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header X-Frame-Options SAMEORIGIN;
}
# Well-known для клиентов
location = /.well-known/matrix/client {
default_type application/json;
add_header Access-Control-Allow-Origin * always;
return 200 '{
"m.homeserver": {"base_url": "https://matrix.YOUR_DOMAIN.ru"},
"org.matrix.msc4143.rtc_foci": [{"type": "livekit", "livekit_service_url": "https://matrix.YOUR_DOMAIN.ru/livekit/jwt"}]
}';
}
# Прокси для MAS (авторизация, OAuth2)
location ~ ^/(oauth2|authorize|login|callback|account|graphql|upstream) {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Прокси для LiveKit JWT
location /livekit/jwt/ {
proxy_pass http://127.0.0.1:8088/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# API Synapse
location ~ ^(/_matrix|/_synapse/client|/_synapse/admin|/_synapse/mas) {
proxy_pass http://127.0.0.1:8008;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# Сервер для LiveKit
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name livekit.YOUR_DOMAIN.ru;
ssl_certificate /etc/letsencrypt/live/livekit.YOUR_DOMAIN.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/livekit.YOUR_DOMAIN.ru/privkey.pem;
location / {
proxy_pass http://localhost:7880;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Активируем конфиг и перезагружаем Nginx:
sudo ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Запускаем все сервисы:
cd /opt/matrix-synapse
docker compose up -d
Создаём первого пользователя-администратора:
docker exec -it matrix_synapse register_new_matrix_user -c /data/homeserver.yaml -u admin -p YOUR_PASSWORD --admin
Теперь откройте в браузере https://matrix.ваш-домен.ru [16]. Вы увидите страницу входа Element Web. Вы можете войти:
Через Google (кнопка «Continue with Google»);
Как администратор с логином admin и паролем, который вы задали.
В Element найдите бота @telegram_bot:matrix.YOUR_DOMAIN.ru [17]
Отправьте ему команду login phone (вход через QR код не заработал)
Введите код авторизации присланный в Telegram
Найдите бота @whatsappbot:matrix.YOUR_DOMAIN.ru [17]
Отправьте ему команду login
Отсканируйте QR-код через WhatsApp на телефоне
⚠️ Ошибка The as_token was not accepted (мост не запускается)
Решение: Перегенерируйте registration.yaml для соответствующего моста и перезапустите Synapse (docker compose restart synapse). Убедитесь, что путь к файлу регистрации прописан в app_service_config_files в homeserver.yaml.
⚠️ Ошибка M_FORBIDDEN: Application service cannot masquerade as this user
Решение: Пользователь бота (например, @telegram_bot:...) не создан в Synapse. Создайте его вручную через register_new_matrix_user или через SQL.
⚠️ Ошибка 429 Too Many Requests
Решение: Подождите 30–60 секунд — ограничение снимется автоматически. Если проблема повторяется часто, увеличьте лимиты в homeserver.yaml (параметры rc_message, rc_joins).
⚠️ Видеозвонки работают только в одну сторону или не работают совсем
Решение:
1. Убедитесь, что порт 7880 и диапазон 50000-50200/udp открыты в UFW.
2. Проверьте, что в livekit.yaml правильно указан external_ip (ваш реальный IP сервера).
3. Убедитесь, что клиент (Element) имеет доступ к wss://livekit.ваш-домен.ru [12] (проверьте через консоль браузера).
⚠️ Мост Telegram не отвечает на команды
Решение: Проверьте логи моста: docker compose logs telegram-bridge. Убедитесь, что в конфиге указаны верные api_id, api_hash и bot_token. Бот должен быть создан в Telegram и не заблокирован.
Поздравляю! Вы стали полноправным хозяином своей коммуникационной инфраструктуры. Ваш сервер поддерживает видеозвонки, удобный вход через Google и интеграцию с популярными мессенджерами. Все компоненты упакованы в Docker, что упрощает резервное копирование перенос и обновление.
Полезные ссылки:
Репозиторий Synapse [19]
Документация MAS [20]
Документация LiveKit [21]
Мост для Telegram [22]
Мост для WhatsApp [23]
Админ-панель Ketesa [24]
Удачи в настройке! 🚀
Автор: nvbxak
Источник [25]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/450409
Ссылки в тексте:
[1] Требования к серверу и подготовка: #requirements
[2] Структура проекта и переменные окружения: #env
[3] Установка Synapse + PostgreSQL + Element Web: #synapse
[4] Настройка Matrix Authentication Service (MAS) для входа через Google: #mas
[5] Разворачиваем видеозвонки с LiveKit: #livekit
[6] Добавляем мосты в Telegram и WhatsApp: #bridges
[7] Установка админ-панели Ketesa: #ketesa
[8] Настройка Nginx и SSL: #nginx
[9] Запуск, создание администратора и авторизация: #startup
[10] Частые проблемы и их решения: #troubleshooting
[11] matrix.ваш-домен.ru: http://matrix.%D0%B2%D0%B0%D1%88-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD.ru
[12] livekit.ваш-домен.ru: http://livekit.%D0%B2%D0%B0%D1%88-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD.ru
[13] Google Cloud Console: https://console.cloud.google.com/
[14] https://matrix.ваш-домен.ru/upstream/callback/01HFS6S2SVAR7Y7QYMZJ53ZAGZ: https://matrix.%D0%B2%D0%B0%D1%88-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD.ru/upstream/callback/01HFS6S2SVAR7Y7QYMZJ53ZAGZ
[15] my.telegram.org/apps: https://my.telegram.org/apps
[16] https://matrix.ваш-домен.ru: https://matrix.%D0%B2%D0%B0%D1%88-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD.ru
[17] DOMAIN.ru: http://DOMAIN.ru
[18] Официальный сайт Matrix: https://matrix.org/
[19] Репозиторий Synapse: https://github.com/element-hq/synapse
[20] Документация MAS: https://element-hq.github.io/matrix-authentication-service/
[21] Документация LiveKit: https://docs.livekit.io/
[22] Мост для Telegram: https://github.com/mautrix/telegram
[23] Мост для WhatsApp: https://github.com/mautrix/whatsapp
[24] Админ-панель Ketesa: https://github.com/etkecc/ketesa
[25] Источник: https://habr.com/ru/articles/1028012/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1028012
Нажмите здесь для печати.