vpn add NAME DAYS
Создать клиента на DAYS дней. Сразу выведет VLESS-ссылки (ws + reality + subscription, если активна).
vpn add test 30
guide · ru
Скрипт скачивает Xray, генерит ключи Reality, поднимает inbound'ы WS+TLS и Reality+Vision, опционально стартует HTTP API и subscription-сервер. Всё работает на Pterodactyl без рута.
Pterodactyl-сервер с bash/python и доменом, привязанным через Pterodactyl Domains.
bash
В любом bash-egg'е (например, generic Linux).
curl
Нужен чтобы скачать Xray и сам скрипт.
python3
Используется для JSON, генерации ключей, API/sub серверов.
домен
Поддомен подключённый через Pterodactyl Domains (TLS-фронт для WS).
sudo и не пишет в системные пути.
Биндимся только на порты, выделенные птеродактилем твоему серверу.
Одна команда в консоль птеродактиля.
В консоли сервера выполни:
curl -fsSL https://raw.githubusercontent.com/h1gurodev/h1cloud-vless/refs/heads/main/main.sh -o start.sh && chmod +x start.sh && bash start.sh
Скрипт скачает Xray-linux-64.zip, распакует xray, сгенерит ключи Reality (x25519) и подготовит конфиг.
При запуске сервера нажми 3 и введи:
bash start.sh
END
Теперь после рестарта сервера всё поднимется само.
При первом старте скрипт попросит ввести домен.
В панели Pterodactyl зайди в раздел Domains и привяжи поддомен к своему серверу (это даст тебе TLS-сертификат и проксирование на твой порт).
При первом запуске скрипт выведет:
Enter domain connected in Pterodactyl Domains:
Введи домен без https://, например vpn.example.com. Домен сохранится в domain.txt.
После запуска ты увидишь шапку h1cloud vless is ready с портами и доменом. Если что-то не запустилось — ищи ошибку выше.
vpn domain vpn.example.com
Печатай прямо в консоли сервера. Можно также запускать как ./main.sh vpn ....
vpn add NAME DAYS
Создать клиента на DAYS дней. Сразу выведет VLESS-ссылки (ws + reality + subscription, если активна).
vpn add test 30
vpn list
Список активных клиентов с UUID, датой окончания и оставшимся временем.
vpn info NAME
Полная инфа по клиенту + готовые ссылки.
vpn link NAME
Только ссылки клиента: ws, reality, subscription.
vpn renew NAME DAYS
Продлить клиента на DAYS дней (прибавляется к текущей дате истечения).
vpn renew test 15
vpn del NAME
Удалить клиента.
vpn keys
Вывести key.txt: все клиенты с ссылками + последние логи.
vpn logs [COUNT]
Показать последние COUNT (по умолчанию 50) строк лога действий.
vpn domain DOMAIN
Сменить публичный домен. После смены все ссылки пересоберутся.
vpn reality PORT [PUBLIC_PORT] [SNI] [DEST]
Настройка Reality. PORT — локальный порт xray, PUBLIC_PORT — внешний, SNI — домен-маска (по умолчанию www.microsoft.com).
vpn reality 8443 8443 www.microsoft.com
vpn restart
Перезапустить xray (пересобрать конфиг). Делается автоматически при add/del/renew.
vpn stop
Остановить сервер (xray + API + sub).
Опциональные сервисы. Можно поднять оба, или только один, или ни одного.
Поднимает HTTP-сервер для управления клиентами через JSON.
vpn api 25626
vpn api token
vpn api status
vpn api stop
Подробное описание методов — в API Docs.
HTTP-сервер для клиентских приложений (v2rayN, NekoBox и т.д.). Отдаёт base64-список ссылок по токену.
vpn sub 25627
vpn sub token
vpn sub status
vpn sub stop
URL: http://DOMAIN:PORT/sub/NAME?token=TOKEN
vpn api PORT / vpn sub PORT на этих портах.
В клиенте у тебя будет 2 ссылки. Любую можно использовать.
WebSocket поверх TLS, который терминирует Pterodactyl Domains. Удобно тем, что использует порт 443 и неотличим от обычного HTTPS-трафика к твоему домену.
/xrayСовременный TLS-стелс от Xray. Маскируется под чужой домен (по умолчанию www.microsoft.com), не требует своего TLS-сертификата.
xtls-rprx-visionСкрипт хранит всё в текущей папке сервера. Бэкап делается копированием этих файлов.
users.jsonСписок клиентов (имя, UUID, expires_at).key.txtСгенерированные VLESS-ссылки для всех клиентов.logs.txtЖурнал действий (create/delete/renew/api).api_token.txtТокен для HTTP API. Не публикуй.sub_token.txtТокен для subscription. Не публикуй.reality_private_key.txtПриватный ключ Reality. Не публикуй.reality_public_key.txtПубличный ключ Reality (pbk в ссылке).reality_short_id.txtReality short id (sid в ссылке).domain.txtПубличный домен.config.jsonСгенерированный конфиг Xray.Если что-то не работает — начни отсюда.
cannot generate reality x25519 keys
Xray не смог сгенерить ключи. Обычно — устаревший парсер на новом формате (см. XTLS/Xray-core#5159).
Скрипт уже умеет три формата: Private key:, PrivateKey: + Password:, и Password (PublicKey):.
Если ошибка всё ещё — обнови скрипт до последней версии.
пустые строки и текст без \n не видно в консоли
Известный баг Pterodactyl wings (panel#4782): строки без содержимого дропаются.
В скрипте всё уже починено через blank() + PYTHONUNBUFFERED=1 + python3 -u.
xray failed to start
Чаще всего — конфликт портов: WS и Reality на одном порту, или порт уже занят.
Проверь SERVER_PORT и REALITY_PORT. Команды:
vpn reality 8443
vpn restart
клиент не подключается через WS
WS+TLS требует, чтобы домен был привязан в Pterodactyl Domains (тогда панель терминирует TLS на 443 и проксирует на твой порт). Без Domains используй только Reality.
api failed to start
Порт не выделен в Pterodactyl или уже занят. Добавь allocation в панели и запусти заново:
vpn api 25626