Перейти к содержимому

Быстрый старт сервера

Запустите сервер менее чем за 10 минут.


  • Машина с публичным IP-адресом (Linux, macOS или FreeBSD)
  • Открытый порт 443 в брандмауэре/группе безопасности
  • Доступ root или sudo

Универсальный установщик берёт на себя всё:

Окно терминала
curl -fsSL https://assets.rvpn.org/install.sh | sudo bash -s -- --setup --server

Он автоматически определит вашу платформу, скачает нужный бинарник, проверит контрольную сумму и проведёт вас через настройку сервера (ключи, TLS, TUN-режим и т. д.).

Или вручную:

Окно терминала
# Linux x86_64 (большинство VPS)
curl -LO https://assets.rvpn.org/1.3.1/rvpn-server-x86_64-linux-gnu
chmod +x rvpn-server-x86_64-linux-gnu
sudo mv rvpn-server-x86_64-linux-gnu /usr/local/bin/rvpn-server
# Linux ARM64
curl -LO https://assets.rvpn.org/1.3.1/rvpn-server-aarch64-linux-gnu
chmod +x rvpn-server-aarch64-linux-gnu
sudo mv rvpn-server-aarch64-linux-gnu /usr/local/bin/rvpn-server
# FreeBSD
fetch https://assets.rvpn.org/1.3.1/rvpn-server-x86_64-freebsd
chmod +x rvpn-server-x86_64-freebsd
sudo mv rvpn-server-x86_64-freebsd /usr/local/bin/rvpn-server

См. Установка сервера для полного списка бинарников и проверки контрольных сумм.

Проверьте работу:

Окно терминала
rvpn-server --help

Обе команды пишут в пути, заданные в server.toml. Направьте их в /etc/rvpn/, создав сначала минимальный конфиг, затем выполните:

Окно терминала
sudo mkdir -p /etc/rvpn
sudo tee /etc/rvpn/server.toml <<'EOF' >/dev/null
[server]
identity_key_file = "/etc/rvpn/server_identity.key"
prekey_bundle_file = "/etc/rvpn/prekey-bundle.json"
EOF
sudo rvpn-server -c /etc/rvpn/server.toml keygen
sudo rvpn-server -c /etc/rvpn/server.toml prekey-bundle

Это создаст три файла в /etc/rvpn/:

ФайлНазначение
server_identity.keyДолгосрочный ключ идентификации сервера (Ed25519) — храните в секрете
prekey-bundle.jsonПубличный набор prekey — распространяйте среди клиентов
prekey-bundle.private.jsonПриватный prekey-материал — храните в секрете

Без флага -c обе команды пишут в текущий рабочий каталог (server_identity.key / prekey-bundle.json), что подходит для тестов, но легко потерять.

Важно: Храните server_identity.key и prekey-bundle.private.json в безопасности. Делайте резервные копии. При утере клиентам понадобится новый набор prekey.


rvpn-server сам получает и продлевает сертификат Let’s Encrypt по TLS-ALPN-01-challenge. Тот же слушатель :443, без порта :80, без certbot, без внешнего таймера — вся машина состояний живёт внутри процесса сервера.

Добавьте в /etc/rvpn/server.toml:

[server.acme]
enabled = true
domains = ["your-domain.com"]
contacts = ["mailto:[email protected]"]
cache_dir = "/var/lib/rvpn/acme"

Создайте каталог кэша (он должен переживать рестарты, чтобы не бить в rate limits Let’s Encrypt после каждой перезагрузки):

Окно терминала
sudo mkdir -p /var/lib/rvpn/acme
sudo chmod 700 /var/lib/rvpn/acme

Предусловия — проверьте, прежде чем включать:

  1. your-domain.com должен резолвиться (A/AAAA) на публичный IP этого сервера.
  2. Входящий TCP :443 должен быть доступен валидаторам Let’s Encrypt.
  3. На :443 не должно быть ничего другого (challenge использует тот же слушатель).

Первый запуск? На первом старте поставьте staging = true в [server.acme], чтобы прогнать всю цепочку через staging-окружение Let’s Encrypt без rate limits. Если в логах появилось ACME event: CertCacheStore — переключайтесь на staging = false и возьмите свежий cache_dir для production. Полный workflow, три важные для нас LE rate limits и ритм продлений — в reference → [server.acme].

Хотите использовать свой сертификат — например, из существующего certbot или обратного прокси? Пропустите этот раздел и укажите tls_cert_file / tls_key_file в [server], как описано в reference → server-config. ACME и статические сертификаты взаимоисключающие; сервер откажется стартовать, если заданы оба.


rVPN нужен IP-форвардинг для маршрутизации трафика от имени клиентов:

Окно терминала
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Окно терминала
sudo rvpn-server -c /etc/rvpn/server.toml

Вы должны увидеть вывод вроде:

INFO Starting rVPN Server on 0.0.0.0:443
INFO Server listening on wss://0.0.0.0:443
INFO WebSocket endpoint: /api/v1/ws
INFO WebSocket endpoint (desktop SOCKS): /api/v1/ws
INFO WebSocket endpoint (mobile TUN): /api/v1/ws/tun
INFO WebSocket endpoint (DNS proxy): /api/v1/ws/dns
INFO WebSocket endpoint (SOCKS5 mux): /api/v1/ws/mux

Убедившись, что всё работает, настройте systemd-сервис для автозапуска.


Клиентам нужен prekey-bundle.json для подключения. Передайте его вашим пользователям безопасно (шифрованная электронная почта, безопасный мессенджер и т. д.) — этот файл публичный и не требует секретности, но должен быть настоящим файлом с вашего сервера.