Этот репозиторий поднимает на Debian 12:
- статический сайт через
Caddy; - Xray с клиентскими ссылками VLESS + XHTTP;
- базовый firewall через
nftables.
- VPS или VM с
Debian 12, доступом поrootили через пользователя сsudo. - Два публичных IPv4-адреса на этой вмке.
- Домен и DNS-записи:
- основной домен, например
example.com; www-домен, напримерwww.example.com;
- основной домен, например
- домен для Xray, например
h3.example.com; - отдельный домен для старого REALITY-контура, например
h2.example.com. - DNS-записи должны указывать напрямую на сервер, без CDN-прокси.
- Email для Let's Encrypt.
- Локальная машина, с которой вы будете запускать скрипты, с
bash,ssh,rsyncиscp. - SSH-доступ к серверу.
- Скопируйте пример переменных:
cp .env.example .env- Откройте
.envи заполните обязательные значения:
| Переменная | Где взять |
|---|---|
DOMAIN |
Ваш основной домен, который будет открывать сайт, например example.com. Берётся из вашего домена у регистратора или DNS-провайдера. |
WWW_DOMAIN |
Поддомен для сайта, обычно www. от основного домена, например www.example.com. Придумываете сами и добавляете в DNS. |
H3_DOMAIN |
Отдельный поддомен для Xray, например h3.example.com. Придумываете сами и добавляете в DNS. |
REALITY_DOMAIN |
Отдельный поддомен для старого REALITY-контура, например h2.example.com. Если этот контур вам нужен, имя тоже задаёте сами и добавляете в DNS. |
IP1 |
Первый публичный IPv4-адрес сервера. Берётся из панели хостинг-провайдера или с самой машины через ip -4 addr show. |
IP2 |
Второй публичный IPv4-адрес сервера. Берётся там же: из панели провайдера или с сервера через ip -4 addr show. |
SSH_USER |
Пользователь для входа по SSH. Обычно это root, если вы подключаетесь под root. |
SSH_HOST |
Адрес для SSH-подключения. Обычно это один из публичных IP сервера или отдельное DNS-имя, если SSH заведён на него. |
SSH_PORT |
Порт SSH. Обычно 22, если вы не меняли его вручную. |
ACME_EMAIL |
Ваш email для Let's Encrypt. Используйте рабочий адрес, к которому у вас есть доступ. |
-
Если вход на VM идёт по ключу, проверьте
SSH_KEY_PATH. Если по паролю, оставьтеSSH_BATCH_MODE=no. -
Подготовьте VM:
scripts/bootstrap-remote.shЭтот шаг установит Caddy, Xray, nftables и создаст нужные директории.
- Сгенерируйте секреты:
scripts/generate-secrets-remote.shСкрипт сгенерирует UUID, ключи и случайные пути, затем подмешает их в локальный .env.
- Дозаполните в
.envпараметры, которые скрипт не может угадать сам:
REALITY_TARGETREALITY_SERVER_NAME
- Проверьте, что DNS уже смотрит на
IP2для сайта иH3_DOMAIN. После этого выполните деплой:
scripts/deploy-remote.sh- После успешного деплоя возьмите клиентские ссылки из файла:
build/client-links.txtПосле рендера и установки на сервере используются такие пути:
- сайт:
/var/www/xray-vless-xhttp-site - конфиг Caddy:
/etc/caddy/Caddyfile - конфиг Xray:
/usr/local/etc/xray/config.json - firewall:
/etc/nftables.conf - бэкапы предыдущих конфигов:
/var/backups/xray-vless-xhttp