1. Проведите аудит до изменений

Зафиксируйте ОС, память, маршруты, занятые порты, firewall, Nginx, сертификаты и неработающие services. Сделайте резервные копии всех файлов, которые планируется менять.

cat /etc/os-release
free -h
ip -brief address
ip route
ss -lntup
systemctl --failed
ufw status verbose
nginx -T 2>/dev/null
certbot certificates 2>/dev/null
Не заменяйте рабочую службу на месте. Сначала выделите свободные порты, проверьте новую конфигурацию и только затем включайте новый service.

2. Разделите роли

sing-boxShadowsocks, Trojan, VLESS, VMess, Hysteria2, TUIC, AnyTLS, SOCKS5, HTTP CONNECT, ShadowTLS и Naive.
XrayXHTTP, mKCP, gRPC и VLESS Vision в отдельном service для безопасного обновления.
NginxHTTPS endpoint для Base64-подписки с длинным случайным token.
systemd + UFWАвтозапуск, restart policy, журналирование и точные правила TCP/UDP.

Каждый inbound должен иметь отдельный порт и отдельный UUID, пароль или ключ. WireGuard, OpenVPN, IKEv2 и OpenConnect распространяются отдельными client files, а не обычными URI подписки.

3. Установите официальные сборки

Установите sing-box из официального APT repository. Для Xray скачайте текущий stable ZIP и файл .dgst из XTLS/Xray-core Releases и обязательно сравните SHA-256 перед установкой.

install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://sing-box.app/gpg.key -o /etc/apt/keyrings/sagernet.asc
chmod a+r /etc/apt/keyrings/sagernet.asc

sha256sum Xray-linux-64.zip
sed -n '1,8p' Xray-linux-64.zip.dgst
/usr/local/bin/xray version

Официальные документы: установка sing-box и установка и проверка Xray.

4. TLS, Reality и права доступа

  • При наличии domain используйте доверенный сертификат, правильный SNI и автоматическое renewal.
  • Без domain используйте Reality для совместимых VLESS tests или законный IP certificate; не создавайте поддельный TLS certificate.
  • Запускайте sing-box, Xray и Nginx от отдельных непривилегированных пользователей.
  • SOCKS5 и HTTP CONNECT должны требовать authentication; не создавайте open proxy.
  • Сначала проверьте конфигурации командами core, затем запускайте systemd services.
sing-box check -c /etc/sing-box/config.json
/usr/local/bin/xray run -test -c /etc/xray/config.json
systemctl enable --now sing-box xray
ufw allow OpenSSH
ufw allow <tcp-port>/tcp
ufw allow <udp-port>/udp

5. Опубликуйте подписку SpellVPN

Сформируйте по одной проверенной ссылке на строку: ss://, vless://, vmess://, trojan://, hysteria2://, tuic://, socks5:// или authenticated https://. Правильно URL-encode параметры и Base64-encode весь файл.

install -d -m 0755 /var/www/vpn-sub
base64 -w 0 share-links.txt > /var/www/vpn-sub/subscription.b64
chmod 0644 /var/www/vpn-sub/subscription.b64

В SpellVPN откройте Dashboard → + → subscription URL, вставьте HTTPS endpoint, импортируйте и тестируйте каждый node отдельно.

Случайный URL не равен полноценной authentication. Храните token как secret, меняйте его после утечки и при необходимости добавьте HTTP authentication или IP restrictions.

6. Проверяйте реальный трафик

Открытый port не доказывает работу proxy. Для каждого протокола используйте matching client, затем повторите тест из внешней сети.

ss -lntup
curl --socks5-hostname 127.0.0.1:<local-test-port> https://api.ipify.org
systemctl is-active sing-box xray nginx
systemctl is-enabled sing-box xray nginx
  • Все nodes возвращают public IP сервера.
  • TCP и UDP transports проверены вне VPS.
  • Подписка импортируется без скрытого пропуска nodes.
  • После reboot services, firewall и certificate permissions остаются рабочими.
  • После тестов меняются UUID, passwords, Reality keys и subscription token.