#!/bin/bash DOMAIN=$1 if [ -z "$DOMAIN" ]; then echo "❌ Ошибка: домен не задан." exit 1 fi echo "Обновление и установка необходимых пакетов..." apt update && apt install -y jq dnsutils LOCAL_IP=$(hostname -I | awk '{print $1}') DNS_IP=$(dig +short "$DOMAIN" | grep '^[0-9]') if [ "$LOCAL_IP" != "$DNS_IP" ]; then echo "❌ Внимание: IP-адрес ($LOCAL_IP) не совпадает с A-записью $DOMAIN ($DNS_IP)." echo "Правильно укажите одну A-запись для вашего домена в ДНС - $LOCAL_IP" read -p "Продолжить на ваш страх и риск? (y/N): " choice if [[ ! "$choice" =~ ^[Yy]$ ]]; then echo "Выполнение скрипта прервано." exit 1 fi echo "Продолжение выполнения скрипта..." fi apt install nginx -y systemctl enable --now nginx apt install certbot -y certbot certonly --webroot -w /var/www/html -d $DOMAIN -m mail@$DOMAIN --agree-tos --non-interactive --deploy-hook "systemctl reload nginx" CONFIG_PATH="/etc/nginx/sites-available/default" echo "✅ Записываем конфигурацию в $CONFIG_PATH для домена $DOMAIN" bash -c "cat > $CONFIG_PATH" < "$WEB_PATH/index.html" < $TITLE

$HEADER

EOF # Установка Xray bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install # Определяем директорию скрипта #SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) SCRIPT_DIR=/usr/local/etc/xray # Генерируем переменные xray_uuid_vrv=$(xray uuid) domains=(www.theregister.com www.20minutes.fr www.dealabs.com www.manomano.fr www.caradisiac.com www.techadvisor.com www.computerworld.com teamdocs.su wikiportal.su docscenter.su www.bing.com github.com tradingview.com) xray_dest_vrv=${domains[$RANDOM % ${#domains[@]}]} xray_dest_vrv222=${domains[$RANDOM % ${#domains[@]}]} key_output=$(xray x25519) xray_privateKey_vrv=$(echo "$key_output" | awk -F': ' '/PrivateKey/ {print $2}') xray_publicKey_vrv=$(echo "$key_output" | awk -F': ' '/Password/ {print $2}') key_mldsa65=$(xray mldsa65) seed_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Seed/ {print $2}') verify_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Verify/ {print $2}') xray_shortIds_vrv=$(openssl rand -hex 8) xray_sspasw_vrv=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) path_subpage=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) path_xhttp=$(openssl rand -base64 15 | tr -dc 'a-z0-9' | head -c 6) ipserv=$(hostname -I | awk '{print $1}') # Экспортируем переменные для envsubst export xray_uuid_vrv xray_dest_vrv xray_dest_vrv222 xray_privateKey_vrv xray_publicKey_vrv xray_shortIds_vrv xray_sspasw_vrv DOMAIN path_subpage path_xhttp WEB_PATH # Создаем JSON конфигурацию сервера cat << 'EOF' | envsubst > "$SCRIPT_DIR/config.json" { "log": { "dnsLog": false, "loglevel": "none" }, "dns": { "servers": [ "https+local://8.8.4.4/dns-query", "https+local://8.8.8.8/dns-query", "https+local://1.1.1.1/dns-query", "localhost" ], "queryStrategy": "UseIPv4" }, "inbounds": [ { "tag": "VxhttpRself", "port": 443, "listen": "0.0.0.0", "protocol": "vless", "settings": { "clients": [ { "id": "${xray_uuid_vrv}" } ], "decryption": "none" }, "sniffing": { "enabled": true, "destOverride": [ "http", "tls", "quic" ] }, "streamSettings": { "network": "xhttp", "xhttpSettings": { "mode": "auto", "path": "/${path_xhttp}" }, "security": "reality", "realitySettings": { "show": false, "xver": 1, "target": "/dev/shm/nginx.sock", "spiderX": "/", "shortIds": [ "${xray_shortIds_vrv}" ], "privateKey": "${xray_privateKey_vrv}", "serverNames": [ "$DOMAIN" ], "limitFallbackUpload": { "afterBytes": 0, "bytesPerSec": 65536, "burstBytesPerSec": 0 }, "limitFallbackDownload": { "afterBytes": 5242880, "bytesPerSec": 262144, "burstBytesPerSec": 2097152 } } } }, { "tag": "VtcpRself", "port": 8443, "listen": "0.0.0.0", "protocol": "vless", "settings": { "clients": [ { "flow": "xtls-rprx-vision", "id": "${xray_uuid_vrv}" } ], "decryption": "none" }, "sniffing": { "enabled": true, "destOverride": [ "http", "tls", "quic" ] }, "streamSettings": { "network": "raw", "security": "reality", "realitySettings": { "show": false, "xver": 1, "target": "/dev/shm/nginx.sock", "spiderX": "/", "shortIds": [ "${xray_shortIds_vrv}" ], "privateKey": "${xray_privateKey_vrv}", "serverNames": [ "$DOMAIN" ], "limitFallbackUpload": { "afterBytes": 0, "bytesPerSec": 65536, "burstBytesPerSec": 0 }, "limitFallbackDownload": { "afterBytes": 5242880, "bytesPerSec": 262144, "burstBytesPerSec": 2097152 } } } }, { "tag": "Shadowsocks", "port": 10443, "listen": "0.0.0.0", "protocol": "shadowsocks", "settings": { "clients": [ { "password": "${xray_sspasw_vrv}", "method": "chacha20-ietf-poly1305" } ] }, "sniffing": { "enabled": true, "destOverride": [ "http", "tls", "quic" ] }, "streamSettings": { "network": "raw" } } ], "outbounds": [ { "tag": "direct", "protocol": "freedom", "settings": { "domainStrategy": "ForceIPv4" } }, { "tag": "block", "protocol": "blackhole" } ], "routing": { "rules": [ { "ip": [ "geoip:private" ], "outboundTag": "block" }, { "protocol": [ "bittorrent" ], "outboundTag": "block" }, { "domain": [ "geosite:category-ads", "geosite:win-spy", "geosite:private" ], "outboundTag": "block" } ], "domainStrategy": "IPIfNonMatch" } } EOF # Создаем JSON конфигурацию клиента cat << 'EOF' | envsubst > "$WEB_PATH/$path_subpage.json" [ { "log": { "loglevel": "warning" }, "dns": { "servers": [ "https://8.8.4.4/dns-query", "https://8.8.8.8/dns-query", "https://1.1.1.1/dns-query" ], "queryStrategy": "UseIPv4" }, "routing": { "domainStrategy": "IPIfNonMatch", "rules": [ { "domain": [ "geosite:category-ads", "geosite:win-spy" ], "outboundTag": "block" }, { "protocol": [ "bittorrent" ], "outboundTag": "direct" }, { "domain": [ "geosite:private", "geosite:apple", "geosite:apple-pki", "geosite:huawei", "geosite:xiaomi", "geosite:category-android-app-download", "geosite:f-droid", "geosite:yandex", "geosite:vk", "geosite:microsoft", "geosite:win-update", "geosite:win-extra", "geosite:google-play", "geosite:steam", "geosite:category-ru" ], "outboundTag": "direct" }, { "ip": [ "geoip:private" ], "outboundTag": "direct" }, { "type": "field", "ip": [ "geoip:!ru" ], "outboundTag": "proxy" }, { "domain": [ "geosite:discord", "geosite:youtube", "geosite:tiktok", "geosite:signal" ], "outboundTag": "proxy" } ] }, "inbounds": [ { "tag": "socks-in", "protocol": "socks", "listen": "127.0.0.1", "port": 10808, "settings": { "udp": true } }, { "tag": "socks-sb", "protocol": "socks", "listen": "127.0.0.1", "port": 2080, "settings": { "udp": true } }, { "tag": "socks-v2rayN", "protocol": "socks", "listen": "127.0.0.1", "port": 1080, "settings": { "udp": true } }, { "tag": "http-in", "protocol": "http", "listen": "127.0.0.1", "port": 10809 } ], "outbounds": [ { "mux": { "concurrency": -1, "enabled": false }, "tag": "proxy", "protocol": "vless", "settings": { "vnext": [ { "address": "$DOMAIN", "port": 443, "users": [ { "id": "${xray_uuid_vrv}", "encryption": "none" } ] } ] }, "streamSettings": { "network": "xhttp", "xhttpSettings": { "mode": "auto", "path": "/${path_xhttp}" }, "security": "reality", "realitySettings": { "show": false, "fingerprint": "chrome", "serverName": "$DOMAIN", "password": "${xray_publicKey_vrv}", "shortId": "${xray_shortIds_vrv}", "mldsa65Verify": "", "spiderX": "/" } } }, { "tag": "direct", "protocol": "freedom" }, { "tag": "block", "protocol": "blackhole" } ], "remarks": "🇧🇩 VlXhttpRty - autoXRAY" }, { "log": { "loglevel": "warning" }, "dns": { "servers": [ "https://8.8.4.4/dns-query", "https://8.8.8.8/dns-query", "https://1.1.1.1/dns-query" ], "queryStrategy": "UseIPv4" }, "routing": { "domainStrategy": "IPIfNonMatch", "rules": [ { "domain": [ "geosite:category-ads", "geosite:win-spy" ], "outboundTag": "block" }, { "protocol": [ "bittorrent" ], "outboundTag": "direct" }, { "domain": [ "geosite:private", "geosite:apple", "geosite:apple-pki", "geosite:huawei", "geosite:xiaomi", "geosite:category-android-app-download", "geosite:f-droid", "geosite:yandex", "geosite:vk", "geosite:microsoft", "geosite:win-update", "geosite:win-extra", "geosite:google-play", "geosite:steam", "geosite:category-ru" ], "outboundTag": "direct" }, { "ip": [ "geoip:private" ], "outboundTag": "direct" }, { "type": "field", "ip": [ "geoip:!ru" ], "outboundTag": "proxy" }, { "domain": [ "geosite:discord", "geosite:youtube", "geosite:tiktok", "geosite:signal" ], "outboundTag": "proxy" } ] }, "inbounds": [ { "tag": "socks-in", "protocol": "socks", "listen": "127.0.0.1", "port": 10808, "settings": { "udp": true } }, { "tag": "socks-sb", "protocol": "socks", "listen": "127.0.0.1", "port": 2080, "settings": { "udp": true } }, { "tag": "socks-v2rayN", "protocol": "socks", "listen": "127.0.0.1", "port": 1080, "settings": { "udp": true } }, { "tag": "http-in", "protocol": "http", "listen": "127.0.0.1", "port": 10809 } ], "outbounds": [ { "mux": { "concurrency": -1, "enabled": false }, "tag": "proxy", "protocol": "vless", "settings": { "vnext": [ { "address": "$DOMAIN", "port": 8443, "users": [ { "id": "${xray_uuid_vrv}", "flow": "xtls-rprx-vision", "encryption": "none" } ] } ] }, "streamSettings": { "network": "raw", "security": "reality", "realitySettings": { "show": false, "fingerprint": "chrome", "serverName": "$DOMAIN", "password": "${xray_publicKey_vrv}", "shortId": "${xray_shortIds_vrv}", "mldsa65Verify": "", "spiderX": "/" } } }, { "tag": "direct", "protocol": "freedom" }, { "tag": "block", "protocol": "blackhole" } ], "remarks": "🇧🇩 VlRawRtyXtls - autoXRAY" }, { "log": { "loglevel": "warning" }, "dns": { "servers": [ "https://8.8.4.4/dns-query", "https://8.8.8.8/dns-query", "https://1.1.1.1/dns-query" ], "queryStrategy": "UseIPv4" }, "routing": { "domainStrategy": "IPIfNonMatch", "rules": [ { "domain": [ "geosite:category-ads", "geosite:win-spy" ], "outboundTag": "block" }, { "protocol": [ "bittorrent" ], "outboundTag": "direct" }, { "domain": [ "geosite:private", "geosite:apple", "geosite:apple-pki", "geosite:huawei", "geosite:xiaomi", "geosite:category-android-app-download", "geosite:f-droid", "geosite:yandex", "geosite:vk", "geosite:microsoft", "geosite:win-update", "geosite:win-extra", "geosite:google-play", "geosite:steam", "geosite:category-ru" ], "outboundTag": "direct" }, { "ip": [ "geoip:private" ], "outboundTag": "direct" }, { "type": "field", "ip": [ "geoip:!ru" ], "outboundTag": "proxy" }, { "domain": [ "geosite:discord", "geosite:youtube", "geosite:tiktok", "geosite:signal" ], "outboundTag": "proxy" } ] }, "inbounds": [ { "tag": "socks-in", "protocol": "socks", "listen": "127.0.0.1", "port": 10808, "settings": { "udp": true } }, { "tag": "socks-sb", "protocol": "socks", "listen": "127.0.0.1", "port": 2080, "settings": { "udp": true } }, { "tag": "socks-v2rayN", "protocol": "socks", "listen": "127.0.0.1", "port": 1080, "settings": { "udp": true } }, { "tag": "http-in", "protocol": "http", "listen": "127.0.0.1", "port": 10809 } ], "outbounds": [ { "mux": { "concurrency": -1, "enabled": false }, "tag": "proxy", "protocol": "shadowsocks", "settings": { "servers": [ { "port": 10443, "method": "chacha20-ietf-poly1305", "address": "$DOMAIN", "password": "${xray_sspasw_vrv}" } ] } }, { "tag": "direct", "protocol": "freedom" }, { "tag": "block", "protocol": "blackhole" } ], "remarks": "🇧🇩 ShadowScha20 - autoXRAY" } ] EOF # Перезапуск Xray echo "Перезапуск Xray..." systemctl restart xray echo -e "Готово!\n" # Формирование ссылок subPageLink="https://$DOMAIN/$path_subpage.json" # Формирование ссылок link1="vless://${xray_uuid_vrv}@$DOMAIN:443?security=reality&type=xhttp&headerType=&path=%2F$path_xhttp&host=&mode=auto&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#VlXhttpRty" link2="vless://${xray_uuid_vrv}@$DOMAIN:8443?security=reality&type=tcp&headerType=&path=&host=&flow=xtls-rprx-vision&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#VlRawRtyXtls" ENCODED_STRING=$(echo -n "chacha20-ietf-poly1305:${xray_sspasw_vrv}" | base64) link3="ss://$ENCODED_STRING@${ipserv}:10443#ShadowS" configListLink="https://$DOMAIN/$path_subpage.html" # Создаем html файл с конфигами cat > "$WEB_PATH/$path_subpage.html" <AutoXRAY configs

🛸 VLESS XHTTP Reality - конфиг для роутера

$link1

🚀 VLESS RAW Reality Vision

$link2

🛡️ Shadowsocks - простой и быстрый

$link3

📂 Ссылка на подписку (готовый конфиг клиента с роутингом)

$subPageLink

📱 Приложение HAPP (Windows/Android/iOS/MAC/Linux)

Маршрутизацию нужно выключить, она тут встроенная. По умолчанию она выключена - включатся, если вы пользовались сторонними сервисами.

EOF echo -e " Ваш конфиг для роутера vless xhttp reality: $link1 Ваш конфиг vless raw reality xtls: $link2 Ваш конфиг Shadowsocks chacha20-ietf-poly1305: $link3 Ваша страничка подписки: \033[32m$subPageLink\033[0m Ссылка на конфиги: \033[32m$configListLink\033[0m Скопируйте подписку в специализированное приложение: - iOS: Happ или v2RayTun или v2rayN - Android: Happ или v2RayTun или v2rayNG - Windows: конфиги Happ или winLoadXRAY или v2rayN для vless v2RayTun или Throne Открыт локальный socks5 на порту 10808, 1080, 2080 и http на 10809. Поддержать автора: https://github.com/xVRVx/autoXRAY "