Свой сервер Vox
Поднимите узел для друзей, команды или сообщества. Клиенты подключаются к нему по одной ссылке, а переписка и звонки идут через ваше железо.
$ curl -O https://northwindcdn.com/vox/server/compose.yml $ docker compose up -d ✓ секреты созданы в ./data, в образ не входят ✓ signal :9741 · sfu :9760 · coturn :3478 $ docker compose exec vox link Ссылка сервера для клиентов vox://server/203.0.113.10:9741#5275…3265
Что входит в сервер
Сигнальный сервер
Подключает клиентов, помогает им найти друг друга, хранит сообщения больших групп 7 дней.
9741/TCPTURN (coturn)
Пересылает звонки, файлы и личные сообщения. Канал зашифрован между собеседниками, сервер его не расшифровывает.
3478 + диапазон UDPSFU
Пересылает звук голосовых каналов от 4 участников, чтобы никто не слал поток каждому. Клиенты включают его в настройках.
9760/TCPЧто понадобится
- Система
- Linux x64 с Docker. Для скрипта без Docker — Debian или Ubuntu
- Сеть
- Публичный IPv4, открытые порты из таблицы
- Ресурсы
- 1 ядро и 1 ГБ памяти — примерно на 400 клиентов
- Трафик
- Звонки и файлы идут через TURN, звук каналов с SFU — через SFU. Ширина канала важнее процессора
Что открыть
Как пустить на сервер своих
- 1
Запустите сервер
docker compose up -d на Linux-машине с публичным IP. Или скрипт из архива, если Docker не нужен.
- 2
Скопируйте ссылку
Команда link выведет ссылку vox://server/… — в ней адрес и ключ сервера.
- 3
Отправьте её своим
Ссылка открывает Vox и предлагает добавить сервер. Или вставьте её в Настройки → Сеть.
Скачать сервер
Сервер выходит вместе с приложением. Клиенты обновляются сами — обновляйте сервер вслед за ними.
По умолчанию — Docker: compose-файл поднимает signal, SFU и coturn. Без Docker — архив со скриптом для Debian и Ubuntu: поставит coturn, настроит ufw и systemd. Секреты генерируются при установке и никуда не отправляются.
Пока недоступноЧастые вопросы
Смогут ли пользователи моего сервера писать пользователям других серверов?
Да — серверы разных владельцев связываются между собой, и собеседникам не нужно сидеть на одном сервере. [В разработке: сейчас связаны только узлы одного кластера.]
Сколько клиентов выдержит один сервер?
По умолчанию узел рассчитан на 400 клиентов (CLUSTER_SOFT_LIMIT) при 1 ядре и 1 ГБ памяти. В кластере лишних клиентов он направит на соседний узел.
Что хранится на сервере?
Сообщения групп, которые идут через сервер (от 50 участников), — 7 дней, срок задаёт GROUP_RETENTION. Сервер видит их текст. Личные сообщения и звонки он не хранит. Ещё на диске — ключ сервера и пароли TURN и SFU в ./data: без ключа клиенты не узнают сервер, храните резервную копию.
Как обновлять сервер?
Сервер выходит вместе с приложением, а клиенты обновляются сами, поэтому обновляйте сервер сразу: docker compose pull && docker compose up -d. Со скриптом — повторный запуск установщика новой версии.
Можно ли объединить несколько серверов?
Да, в кластер до 8 узлов: на каждом в CLUSTER_PEERS перечисляются адреса и ключи соседей. Узлы доверяют друг другу, поэтому кластер собирают только из своих серверов.