Files

151 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
# гайд (Часть 2): Вывод Matrix в интернет и настройка Звонков (Coturn)
Без этой настройки ваш Matrix будет работать только в локальной сети Wi-Fi, а телефоны с мобильным интернетом не смогут созваниваться по видео из-за жесткого NAT операторов связи.
**Архитектура:**
* **VPS-сервер:** Дешевый облачный сервер с белым IP (работает как входная дверь).
* **Caddy:** Проксирует трафик в домашнюю сеть (через VPN/Tailscale) и отдает файлы `.well-known` для Федерации.
* **Coturn:** Ретранслирует аудио и видео трафик между телефонами.
---
### 🛡 ЭТАП 1: Настройка Reverse Proxy (Caddy на VPS)
Заходим по SSH на ваш облачный VPS-сервер.
Открываем конфигурационный файл Caddy:
```bash
sudo nano /etc/caddy/Caddyfile
```
Добавляем блок для вашего домена (замените `xir.alexrus1234.ru` на свой домен, а `172.20.6.4` на IP вашего домашнего контейнера Synapse в сети Tailscale):
```caddy
xir.alexrus1234.ru {
# 1. Отдаем паспорт для КЛИЕНТОВ (Element, FluffyChat)
handle_path /.well-known/matrix/client {
header Access-Control-Allow-Origin "*"
header Content-Type "application/json"
respond `{"m.homeserver":{"base_url":"https://xir.alexrus1234.ru"}}`
}
# 2. Отдаем паспорт для СЕРВЕРОВ (Федерация: связь с matrix.org и другими)
handle_path /.well-known/matrix/server {
header Content-Type "application/json"
respond `{"m.server":"xir.alexrus1234.ru:443"}`
}
# 3. Проксируем основной трафик в домашний LXC-контейнер через VPN
reverse_proxy 172.20.6.4:8008 {
header_up X-Forwarded-For {remote_host}
}
}
```
Сохраняем файл и перезапускаем Caddy:
```bash
sudo systemctl reload caddy
```
*(Теперь вы можете зайти в веб-версию Element или приложение на телефоне, указав ваш домен `https://ВАШ_ДОМЕН.ru` в поле "Домашний сервер").*
---
### 📞 ЭТАП 2: Настройка ретранслятора звонков (Coturn на VPS)
Чтобы видеозвонки работали через мобильный LTE, нам нужен STUN/TURN сервер на белом IP. Мы повесим его на нестандартные порты, чтобы не конфликтовать с другими сервисами на VPS (например, Headscale).
**1. Установка Coturn:**
```bash
sudo apt update && sudo apt install coturn -y
```
**2. Настройка:**
Открываем конфиг:
```bash
sudo nano /etc/turnserver.conf
```
Стираем всё содержимое и вставляем этот компактный блок (замените IP, Домен и Пароль на свои!):
```ini
# Нестандартные порты прослушивания
listening-port=3479
tls-listening-port=5349
# ВНЕШНИЙ БЕЛЫЙ IP ВАШЕГО VPS (Обязательно!)
external-ip=193.109.79.180
# Безопасный диапазон портов для ретрансляции аудио/видео
min-port=50000
max-port=52000
# Авторизация (Обязательно для Matrix)
use-auth-secret
# Придумайте сложный пароль, мы впишем его в Synapse
static-auth-secret=ТвойСуперСекретныйПарольДляЗвонков
realm=xir.alexrus1234.ru
# Отключаем ненужное и небезопасное
no-tcp-relay
no-cli
```
**3. Открываем порты в фаерволе (Nftables на VPS):**
Добавляем в `/etc/nftables.conf` разрешения для новых портов:
```nftables
udp dport { 3479, 5349, 50000-52000 } accept
tcp dport { 3479, 5349 } accept
```
Перезагружаем фаервол: `sudo systemctl restart nftables`.
**4. Запуск Coturn:**
```bash
# Разрешаем демону запускаться (актуально для Debian)
sudo sed -i 's/#TURNSERVER_ENABLED=1/TURNSERVER_ENABLED=1/' /etc/default/coturn
sudo systemctl restart coturn
sudo systemctl status coturn # Убедитесь, что статус active (running)
```
---
### 🧠 ЭТАП 3: Знакомим домашний Synapse с Coturn
Возвращаемся на домашний сервер, в контейнер с установленным Synapse (`172.20.6.4`). Нам нужно сказать Матриксу, чтобы он раздавал настройки TURN-сервера звонящим клиентам.
Открываем конфиг Synapse:
```bash
nano /opt/synapse/data/homeserver.yaml
```
Находим (или добавляем в конец) блок `turn_uris` и приводим его к такому виду:
```yaml
turn_uris:
- "turn:ВАШ_ДОМЕН.ru:3479?transport=udp"
- "turn:ВАШ_ДОМЕН.ru:3479?transport=tcp"
- "turns:ВАШ_ДОМЕН.ru:5349?transport=udp"
- "turns:ВАШ_ДОМЕН.ru:5349?transport=tcp"
# Тот самый пароль из turnserver.conf на VPS:
turn_shared_secret: "ТвойСуперСекретныйПарольДляЗвонков"
turn_user_lifetime: 86400000
turn_allow_guests: true
```
Сохраняем конфиг и перезапускаем ядро:
```bash
systemctl restart matrix-synapse
```
---
**🎉 Готово!**
Попробуйте отключить Wi-Fi на телефоне (оставив только мобильный интернет) и позвонить с компьютера на телефон через классический клиент Element или FluffyChat. Видео и звук пройдут идеально, а VPS сработает как ретранслятор!
*(Примечание: новый клиент Element X на данный момент не поддерживает классические P2P звонки и требует установки тяжелого сервера LiveKit. Используйте классические клиенты для звонков 1-на-1).*
---