--- # гайд (Часть 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).* ---