SERVER GUIDE

Установка VoxNest Server

Чистая Ubuntu 22.04/24.04, два домена и одна команда для установки и обновления. Все каналы, группы, права и блокировки останутся в локальной базе вашей VDS.

01

Подготовьте DNS

Создайте две A-записи. Например, voice.example.com для API и media.voice.example.com для WebRTC. Обе должны указывать на публичный IPv4 сервера. Дождитесь, пока команды вернут адрес вашей VDS:

getent ahostsv4 voice.example.com
getent ahostsv4 media.voice.example.com
02

Установите одной командой

curl -fsSLo voxnest-install.sh https://voxnest.ru/downloads/install-server.sh && sudo sh voxnest-install.sh

Если вы уже вошли как root и sudo не установлен, замените sudo sh на sh. Скрипт скачает архив сервера, проверит его SHA-256 и Docker Compose, при новой установке запросит два домена и название сервера, создаст закрытый .env и запустит Caddy с автоматическим TLS. Рабочая папка: /opt/voxnest/current.

03

Обновляйте той же командой

curl -fsSLo voxnest-install.sh https://voxnest.ru/downloads/install-server.sh && sudo sh voxnest-install.sh

Новая версия устанавливается отдельно; прежний .env сохраняется, Docker volume с каналами, правами и значками остаётся на месте. Для старого проекта voxnest скрипт строго проверяет его том, сеть, API и LiveKit и обновляет только API. Если проверка не прошла, он остановится до запуска контейнеров; не обходите её ручным docker compose up. Для установки вне /opt/voxnest нужны оба параметра: sudo VOXNEST_INSTALL_DIR=/старый/каталог VOXNEST_EXISTING_ENV=/старый/каталог/.env sh voxnest-install.sh.

04

Активируйте администратора

Только свежий сервер после первого успешного запуска покажет одноразовый ключ вида VNPK-…. При обновлении существующего сервера новый ключ не выдаётся. Войдите в клиент, подключитесь к адресу API и вставьте ключ в окно «Ключ привилегий». Ключ срабатывает один раз.

cd /opt/voxnest/current
docker compose -p voxnest-community-server -f docker-compose.yml exec -T api cat /app/data/initial-admin-key.txt
05

Управляйте сервером

cd /opt/voxnest/current
sudo sh start.sh
sudo sh start.sh --logs
sudo sh stop.sh
docker ps --filter label=com.docker.compose.service=api

start.sh ждёт готовности API и при ошибке сам выводит диагностический журнал. Повторная установка не перезаписывает существующий .env.

06

Разрешите обновление из клиента

Эта возможность отключена по умолчанию и включается администратором VDS один раз. Она запускает отдельную системную службу: API не получает доступ к Docker. В клиенте кнопку увидят только участники с правом b_virtualserver_update; у группы администратора сервера оно включено, у гостя — нет.

cd /opt/voxnest/current
sudo sh enable-server-updates.sh
systemctl status voxnest-server-update.service

После этого откройте «Настройки сервера» → «Обзор» в клиенте. Доступная версия появится в блоке обновления сервера. Перед обновлением сохраните резервную копию. Чтобы отключить обновления из клиента: sudo systemctl disable --now voxnest-server-update.service.

07

Резервное копирование

Остановите API, отдельно сохраните .env и фактический Docker volume с каналами, правами и значками. У новой установки он называется voxnest-community-server_voxnest-server-data; у обновлённого старого проекта — voxnest_voxnest-data. Не запускайте docker compose down -v.

cd /opt/voxnest/current
sudo sh stop.sh
volume=voxnest-community-server_voxnest-server-data
[ "$(cat .voxnest-install-mode)" = legacy-voxnest ] && volume=voxnest_voxnest-data
docker run --rm -v "$volume":/data:ro -v "$PWD":/backup alpine tar czf /backup/voxnest-data.tgz -C /data .

Если голос или демонстрация не подключаются

Сначала проверьте DNS и firewall. Сигнал идёт по WSS/443, а медиатрафик предпочитает UDP. Закрытый диапазон UDP заставляет WebRTC долго искать запасной маршрут.

cd /opt/voxnest/current && sudo sh start.sh --logs
ss -lntup | grep -E '(:80|:443|:7881|:3478|:50000)'
Скачать сервер ↓