Загрузить файлы в «/»
This commit is contained in:
+151
@@ -0,0 +1,151 @@
|
|||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# гайд (Часть 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).*
|
||||||
|
|
||||||
|
---
|
||||||
Reference in New Issue
Block a user