├── old ├── oldScriptReadme.md ├── autoXRAYno443.sh ├── autoXRAY.sh ├── autoXRAYselfsteal.sh ├── autoXRAYselfstealConfChina.sh ├── autoXRAYselfstealConfRU.sh └── autoXRAYselfstealConfRUbrEU.sh ├── README.md ├── test ├── gen_page.sh ├── autoXRAYselfConfRUxhttpTEST.sh └── autoXRAYselfTLS2.sh ├── autoXRAYselflConfRUbrEUxhttp.sh └── autoXRAYselfConfRUxhttp.sh /old/oldScriptReadme.md: -------------------------------------------------------------------------------- 1 | # Старые скрипты (не актуально!) 2 | 3 | 4 | **Вы получите:** 5 | 1. основной [VLESS RAW REALITY](https://gozargah.github.io/marzban/ru/docs/xray-inbounds) xtls-rprx-vision на 443 порту с рандомным сайтом маскировки. 6 | 2. вспомогательный vless на 8443 порту. 7 | 3. вспомогательный Shadowsocks на 2040 порту. 8 | 9 | ## Стандартная установка 10 | Зайдите в консоль на сервер, например, с помощью PuTTY и введите команду: 11 | ```bash 12 | bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/old/autoXRAY.sh)" 13 | ``` 14 | Подождите около 5 минут, пока устанавливаются обновления и ядро. В конце установки зелёными цветом будут подсвечены 3 готовых конфига. Вам останется только вставить их в ваше клиентское приложение. 15 | 16 | ## Установка для хостеров 17 | Если вы хотите автоматически развертывать личный VPN для своих клиентов и у вас есть авторизация в Телеграме. 18 | ```bash 19 | bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/old/autoXRAY.sh)" -- chatID tgTOKEN 20 | ``` 21 | chatID — id вашего клиента в ТГ, tgTOKEN — токен вашего бота. Просьба указывать автора и ссылку на эту страницу в качестве первоисточника. 22 | 23 | 24 | После настройки ядра скрипт автоматически пришлет готовые конфиги с инструкцией в ТГ бот. 25 | 26 | 27 | ### Если у вас занят 443 порт 28 | 29 | Сделал выбор до 3 портов, два будут vless и третий ss: 30 | ```bash 31 | bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/old/autoXRAYno443.sh)" -- 456 321 2000 32 | 33 | ``` 34 | 35 | 36 | **Разработан скрипт автоматизации для получения selfsteal** - вставьте ваш домен! 37 | ```bash 38 | bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/old/autoXRAYselfsteal.sh)" -- вашДОМЕН.com 39 | ``` 40 | **Вы получите:** 41 | 1. основной [VLESS RAW REALITY](https://gozargah.github.io/marzban/ru/docs/xray-inbounds) xtls-rprx-vision на 443 порту с рандомным сайтом маскировки. 42 | 2. вспомогательный vless на 8443 порту. 43 | 3. вспомогательный Shadowsocks на 2040 порту. 44 | 45 | 46 | ## Повышенная маскировка 47 | 48 | В идеале, надо настроить ваше клиентское приложение, чтобы оно отправляло российский трафик напрямую, минуя vpn сервер. Также можно: перенаправлять ру трафик в [Cloudflare WARP](https://marzban-docs.sm1ky.com/tutorials/cloudflare-warp/), создать второй ру сервер и перенаправлять его туда. 49 | 50 | Если вы хотите погрузиться в дело конфигурации xray есть отличный [справочник](https://xtls.github.io/ru/config/outbounds/vless.html) и [руководство](https://github.com/XTLS/Xray-core/discussions/3518). 51 | 52 | Редактировать конфиг можно тут: /usr/local/etc/xray/config.json 53 | 54 | После изменений ядро надо перезапустить: systemctl restart xray 55 | 56 | Также рекомендуется: сменить порт ssh со стандартного 22 на другой или сделать вход на сервер по ключу. Настроить файрвол и оставить открытыми порты для работы скрипта:80, 443, 8443, 2040. 57 | 58 | 59 | 60 | 61 | ## selfsteal 62 | 63 | Есть такое понятие как селфстил (selfsteal), когда на самом сервере стоит сайт для маскировки, это дает много плюсов, но требует повышенных знаний и своего домена, настройки реверс-прокси, таких как nginx и маскировочного сайта. 64 | 65 | **Требования:** 66 | 1. Свой домен, не в СНГ зонах. 67 | 2. ДНС-хостинг. 68 | 3. Debian 12 / Ubuntu 24 (на других не тестировалось). 69 | 70 | Необходимо настроить A-запись вашего домена на IP-адрес вашего сервера, чтобы можно было выпустить SSL-сертификат. 71 | 72 | **Преимущества:** 73 | - Сайт всегда работает и устраняется точка отказа. 74 | - Ниже пинг - быстрее соединение. 75 | - Не используются CDN, которые есть на многих популярных сайтах. 76 | - Лучше маскировка - т.к. сайт находится в той же сети что и сервер. 77 | 78 | 79 | ### Конфигурация с клиентским конфигом VPN для Китая 80 | ```bash 81 | bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/old/autoXRAYselfstealConfChina.sh)" -- вашДОМЕН.com 82 | ``` 83 | Разработан по китайским [мануалам](https://xtls.github.io/ru/document/level-0/ch08-xray-clients.html#_8-3-%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-1-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BA%D0%B0-xray-core-%D0%BD%D0%B0-%D0%BF%D0%BA-%D0%B2%D1%80%D1%83%D1%87%D0%BD%D1%83%D1%8E). 84 | 85 | -------------------------------------------------------------------------------- /old/autoXRAYno443.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | port1=${1:-4443} 4 | port2=${2:-8443} 5 | port3=${3:-2040} 6 | 7 | echo "port1: $port1" 8 | echo "port2: $port2" 9 | echo "port3: $port3" 10 | 11 | echo "Обновление и установка необходимых пакетов..." 12 | apt update && apt install -y jq 13 | 14 | # Установка Xray 15 | bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install 16 | 17 | # Определяем директорию скрипта 18 | #SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) 19 | SCRIPT_DIR=/usr/local/etc/xray 20 | 21 | # Генерируем переменные 22 | xray_uuid_vrv=$(xray uuid) 23 | 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) 24 | xray_dest_vrv=${domains[$RANDOM % ${#domains[@]}]} 25 | xray_dest_vrv222=${domains[$RANDOM % ${#domains[@]}]} 26 | 27 | key_output=$(xray x25519) 28 | xray_privateKey_vrv=$(echo "$key_output" | awk -F': ' '/PrivateKey/ {print $2}') 29 | xray_publicKey_vrv=$(echo "$key_output" | awk -F': ' '/Password/ {print $2}') 30 | 31 | key_mldsa65=$(xray mldsa65) 32 | seed_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Seed/ {print $2}') 33 | verify_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Verify/ {print $2}') 34 | 35 | xray_shortIds_vrv=$(openssl rand -hex 8) 36 | 37 | xray_sspasw_vrv=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 38 | 39 | ipserv=$(hostname -I | awk '{print $1}') 40 | 41 | 42 | 43 | # Экспортируем переменные для envsubst 44 | export xray_uuid_vrv xray_dest_vrv xray_dest_vrv222 xray_privateKey_vrv xray_publicKey_vrv xray_shortIds_vrv xray_sspasw_vrv port1 port2 port3 45 | 46 | # Создаем JSON конфигурацию на основе шаблона 47 | #cat << 'EOF' | envsubst > output.json 48 | # Создаем JSON конфигурацию на основе шаблона и сохраняем в папку скрипта 49 | cat << 'EOF' | envsubst > "$SCRIPT_DIR/config.json" 50 | { 51 | "log": { 52 | "dnsLog": false, 53 | "loglevel": "none" 54 | }, 55 | "dns": { 56 | "servers": [ 57 | "https+local://8.8.4.4/dns-query", 58 | "https+local://8.8.8.8/dns-query", 59 | "https+local://1.1.1.1/dns-query", 60 | "localhost" 61 | ], 62 | "queryStrategy": "UseIPv4" 63 | }, 64 | "inbounds": [ 65 | { 66 | "tag": "VTR$port1", 67 | "port": ${port1}, 68 | "listen": "0.0.0.0", 69 | "protocol": "vless", 70 | "settings": { 71 | "clients": [ 72 | { 73 | "flow": "xtls-rprx-vision", 74 | "id": "${xray_uuid_vrv}" 75 | } 76 | ], 77 | "decryption": "none" 78 | }, 79 | "sniffing": { 80 | "enabled": true, 81 | "destOverride": [ 82 | "http", 83 | "tls", 84 | "quic" 85 | ] 86 | }, 87 | "streamSettings": { 88 | "network": "raw", 89 | "security": "reality", 90 | "realitySettings": { 91 | "show": false, 92 | "xver": 0, 93 | "target": "${xray_dest_vrv}:443", 94 | "spiderX": "/", 95 | "shortIds": [ 96 | "${xray_shortIds_vrv}" 97 | ], 98 | "privateKey": "${xray_privateKey_vrv}", 99 | "serverNames": [ 100 | "${xray_dest_vrv}" 101 | ], 102 | "limitFallbackUpload": { 103 | "afterBytes": 0, 104 | "bytesPerSec": 65536, 105 | "burstBytesPerSec": 0 106 | }, 107 | "limitFallbackDownload": { 108 | "afterBytes": 5242880, 109 | "bytesPerSec": 262144, 110 | "burstBytesPerSec": 2097152 111 | } 112 | } 113 | } 114 | }, 115 | { 116 | "tag": "VTR$port2", 117 | "port": ${port2}, 118 | "listen": "0.0.0.0", 119 | "protocol": "vless", 120 | "settings": { 121 | "clients": [ 122 | { 123 | "flow": "xtls-rprx-vision", 124 | "id": "${xray_uuid_vrv}" 125 | } 126 | ], 127 | "decryption": "none" 128 | }, 129 | "sniffing": { 130 | "enabled": true, 131 | "destOverride": [ 132 | "http", 133 | "tls", 134 | "quic" 135 | ] 136 | }, 137 | "streamSettings": { 138 | "network": "raw", 139 | "security": "reality", 140 | "realitySettings": { 141 | "show": false, 142 | "xver": 0, 143 | "target": "${xray_dest_vrv222}:443", 144 | "spiderX": "/", 145 | "shortIds": [ 146 | "${xray_shortIds_vrv}" 147 | ], 148 | "privateKey": "${xray_privateKey_vrv}", 149 | "serverNames": [ 150 | "${xray_dest_vrv222}" 151 | ], 152 | "limitFallbackUpload": { 153 | "afterBytes": 0, 154 | "bytesPerSec": 65536, 155 | "burstBytesPerSec": 0 156 | }, 157 | "limitFallbackDownload": { 158 | "afterBytes": 5242880, 159 | "bytesPerSec": 262144, 160 | "burstBytesPerSec": 2097152 161 | } 162 | } 163 | } 164 | }, 165 | { 166 | "tag": "SS$port3", 167 | "port": ${port3}, 168 | "listen": "0.0.0.0", 169 | "protocol": "shadowsocks", 170 | "settings": { 171 | "clients": [ 172 | { 173 | "password": "${xray_sspasw_vrv}", 174 | "method": "chacha20-ietf-poly1305" 175 | } 176 | ] 177 | }, 178 | "sniffing": { 179 | "enabled": true, 180 | "destOverride": [ 181 | "http", 182 | "tls", 183 | "quic" 184 | ] 185 | }, 186 | "streamSettings": { 187 | "network": "raw" 188 | } 189 | } 190 | ], 191 | "outbounds": [ 192 | { 193 | "tag": "direct", 194 | "protocol": "freedom", 195 | "settings": { 196 | "domainStrategy": "ForceIPv4" 197 | } 198 | }, 199 | { 200 | "tag": "block", 201 | "protocol": "blackhole" 202 | } 203 | ], 204 | "routing": { 205 | "rules": [ 206 | { 207 | "domain": [ 208 | "geosite:category-ads", 209 | "geosite:win-spy", 210 | "geosite:private" 211 | ], 212 | "outboundTag": "block" 213 | }, 214 | { 215 | "ip": [ 216 | "geoip:private" 217 | ], 218 | "outboundTag": "block" 219 | } 220 | ] 221 | } 222 | } 223 | 224 | EOF 225 | 226 | # Перезапуск Xray 227 | echo "Перезапуск Xray..." 228 | systemctl restart xray 229 | echo -e "Готово!\n" 230 | 231 | # Формирование ссылок для вывода 232 | link1="vless://${xray_uuid_vrv}@${ipserv}:$port1?security=reality&sni=${xray_dest_vrv}&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&type=tcp&flow=xtls-rprx-vision&encryption=none&spx=%2F#VPN-vless-$port1-SNI" 233 | 234 | link2="vless://${xray_uuid_vrv}@${ipserv}:$port2?security=reality&sni=${xray_dest_vrv222}&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&type=tcp&flow=xtls-rprx-vision&encryption=none&spx=%2F#VPN-vless-$port2-SNI" 235 | 236 | ENCODED_STRING=$(echo -n "chacha20-ietf-poly1305:${xray_sspasw_vrv}" | base64) 237 | link3="ss://$ENCODED_STRING@${ipserv}:$port3#VPN-ShadowS-$port3" 238 | 239 | echo -e " 240 | 241 | Ваши VPN конфиги. Первый - самый надежный, остальные резервные! 242 | 243 | \033[32m$link1\033[0m 244 | 245 | \033[32m$link2\033[0m 246 | 247 | \033[32m$link3\033[0m 248 | 249 | Скопируйте конфиг в специализированное приложение: 250 | - iOS: Happ или v2RayTun или FoXray 251 | - Android: Happ или v2RayTun или v2rayNG 252 | - Windows: Happ & v2RayTun & winLoadXRAY & Throne 253 | 254 | Поддержать автора: https://github.com/xVRVx/autoXRAY 255 | 256 | " -------------------------------------------------------------------------------- /old/autoXRAY.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Обновление и установка необходимых пакетов..." 4 | apt update && apt install -y jq 5 | 6 | # Установка Xray 7 | bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install 8 | 9 | # Определяем директорию скрипта 10 | #SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) 11 | SCRIPT_DIR=/usr/local/etc/xray 12 | 13 | # Генерируем переменные 14 | xray_uuid_vrv=$(xray uuid) 15 | 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) 16 | xray_dest_vrv=${domains[$RANDOM % ${#domains[@]}]} 17 | xray_dest_vrv222=${domains[$RANDOM % ${#domains[@]}]} 18 | 19 | key_output=$(xray x25519) 20 | xray_privateKey_vrv=$(echo "$key_output" | awk -F': ' '/PrivateKey/ {print $2}') 21 | xray_publicKey_vrv=$(echo "$key_output" | awk -F': ' '/Password/ {print $2}') 22 | 23 | key_mldsa65=$(xray mldsa65) 24 | seed_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Seed/ {print $2}') 25 | verify_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Verify/ {print $2}') 26 | 27 | xray_shortIds_vrv=$(openssl rand -hex 8) 28 | 29 | xray_sspasw_vrv=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 30 | 31 | ipserv=$(hostname -I | awk '{print $1}') 32 | 33 | 34 | 35 | # Экспортируем переменные для envsubst 36 | export xray_uuid_vrv xray_dest_vrv xray_dest_vrv222 xray_privateKey_vrv xray_publicKey_vrv xray_shortIds_vrv xray_sspasw_vrv 37 | 38 | # Создаем JSON конфигурацию на основе шаблона 39 | #cat << 'EOF' | envsubst > output.json 40 | # Создаем JSON конфигурацию на основе шаблона и сохраняем в папку скрипта 41 | cat << 'EOF' | envsubst > "$SCRIPT_DIR/config.json" 42 | { 43 | "log": { 44 | "dnsLog": false, 45 | "loglevel": "none" 46 | }, 47 | "dns": { 48 | "servers": [ 49 | "https+local://8.8.4.4/dns-query", 50 | "https+local://8.8.8.8/dns-query", 51 | "https+local://1.1.1.1/dns-query", 52 | "localhost" 53 | ], 54 | "queryStrategy": "UseIPv4" 55 | }, 56 | "inbounds": [ 57 | { 58 | "tag": "VLESStcpREALITY", 59 | "port": 443, 60 | "listen": "0.0.0.0", 61 | "protocol": "vless", 62 | "settings": { 63 | "clients": [ 64 | { 65 | "flow": "xtls-rprx-vision", 66 | "id": "${xray_uuid_vrv}" 67 | } 68 | ], 69 | "decryption": "none" 70 | }, 71 | "sniffing": { 72 | "enabled": true, 73 | "destOverride": [ 74 | "http", 75 | "tls", 76 | "quic" 77 | ] 78 | }, 79 | "streamSettings": { 80 | "network": "raw", 81 | "security": "reality", 82 | "realitySettings": { 83 | "show": false, 84 | "xver": 0, 85 | "target": "${xray_dest_vrv}:443", 86 | "spiderX": "/", 87 | "shortIds": [ 88 | "${xray_shortIds_vrv}" 89 | ], 90 | "privateKey": "${xray_privateKey_vrv}", 91 | "serverNames": [ 92 | "${xray_dest_vrv}" 93 | ], 94 | "limitFallbackUpload": { 95 | "afterBytes": 0, 96 | "bytesPerSec": 65536, 97 | "burstBytesPerSec": 0 98 | }, 99 | "limitFallbackDownload": { 100 | "afterBytes": 5242880, 101 | "bytesPerSec": 262144, 102 | "burstBytesPerSec": 2097152 103 | } 104 | } 105 | } 106 | }, 107 | { 108 | "tag": "Vless8443", 109 | "port": 8443, 110 | "listen": "0.0.0.0", 111 | "protocol": "vless", 112 | "settings": { 113 | "clients": [ 114 | { 115 | "flow": "xtls-rprx-vision", 116 | "id": "${xray_uuid_vrv}" 117 | } 118 | ], 119 | "decryption": "none" 120 | }, 121 | "sniffing": { 122 | "enabled": true, 123 | "destOverride": [ 124 | "http", 125 | "tls", 126 | "quic" 127 | ] 128 | }, 129 | "streamSettings": { 130 | "network": "raw", 131 | "security": "reality", 132 | "realitySettings": { 133 | "show": false, 134 | "xver": 0, 135 | "target": "${xray_dest_vrv222}:443", 136 | "spiderX": "/", 137 | "shortIds": [ 138 | "${xray_shortIds_vrv}" 139 | ], 140 | "privateKey": "${xray_privateKey_vrv}", 141 | "serverNames": [ 142 | "${xray_dest_vrv222}" 143 | ], 144 | "limitFallbackUpload": { 145 | "afterBytes": 0, 146 | "bytesPerSec": 65536, 147 | "burstBytesPerSec": 0 148 | }, 149 | "limitFallbackDownload": { 150 | "afterBytes": 5242880, 151 | "bytesPerSec": 262144, 152 | "burstBytesPerSec": 2097152 153 | } 154 | } 155 | } 156 | }, 157 | { 158 | "tag": "ShadowsocksTCP", 159 | "port": 2040, 160 | "listen": "0.0.0.0", 161 | "protocol": "shadowsocks", 162 | "settings": { 163 | "clients": [ 164 | { 165 | "password": "${xray_sspasw_vrv}", 166 | "method": "chacha20-ietf-poly1305" 167 | } 168 | ] 169 | }, 170 | "sniffing": { 171 | "enabled": true, 172 | "destOverride": [ 173 | "http", 174 | "tls", 175 | "quic" 176 | ] 177 | }, 178 | "streamSettings": { 179 | "network": "raw" 180 | } 181 | } 182 | ], 183 | "outbounds": [ 184 | { 185 | "tag": "direct", 186 | "protocol": "freedom", 187 | "settings": { 188 | "domainStrategy": "ForceIPv4" 189 | } 190 | }, 191 | { 192 | "tag": "block", 193 | "protocol": "blackhole" 194 | } 195 | ], 196 | "routing": { 197 | "rules": [ 198 | { 199 | "domain": [ 200 | "geosite:category-ads", 201 | "geosite:win-spy", 202 | "geosite:private" 203 | ], 204 | "outboundTag": "block" 205 | }, 206 | { 207 | "ip": [ 208 | "geoip:private" 209 | ], 210 | "outboundTag": "block" 211 | } 212 | ] 213 | } 214 | } 215 | 216 | EOF 217 | 218 | # Перезапуск Xray 219 | echo "Перезапуск Xray..." 220 | systemctl restart xray 221 | echo -e "Готово!\n" 222 | 223 | # Формирование ссылок для ТГ 224 | link1="vless://${xray_uuid_vrv}@${ipserv}:443?security=reality%26sni=${xray_dest_vrv}%26fp=chrome%26pbk=${xray_publicKey_vrv}%26sid=${xray_shortIds_vrv}%26type=tcp%26flow=xtls-rprx-vision%26encryption=none#VPN-vless-443" 225 | 226 | link2="vless://${xray_uuid_vrv}@${ipserv}:8443?security=reality%26sni=${xray_dest_vrv222}%26fp=chrome%26pbk=${xray_publicKey_vrv}%26sid=${xray_shortIds_vrv}%26type=tcp%26flow=xtls-rprx-vision%26encryption=none#VPN-vless-8443" 227 | 228 | ENCODED_STRING=$(echo -n "chacha20-ietf-poly1305:${xray_sspasw_vrv}" | base64) 229 | link3="ss://$ENCODED_STRING@${ipserv}:2040#VPN-ShadowS-2040" 230 | 231 | 232 | userID=$1 233 | tgTOKEN=$2 234 | 235 | if [ -n "$userID" ]; then 236 | # Формируем сообщение (в Markdown для красивого вида) 237 | message="VPN конфиги: 238 | 239 | 1) $link1 240 | 241 | 2) $link2 242 | 243 | 3) $link3 244 | 245 | №1 - самый надежный, остальные резервные! 246 | 247 | Клиентские приложения для работы VPN (куда нужно вставить конфиг): 248 | 249 | - iOS: Happ или v2rayTun или FoXray 250 | 251 | - Android: Happ или v2rayTun или v2rayNG 252 | 253 | - Windows: Happ или winLoadXRAY или Hiddify или Nekoray 254 | 255 | Сайт с инструкциями: blog.skybridge.run. 256 | 257 | Поддержать автора. 258 | " 259 | 260 | # Отправка сообщения в Telegram 261 | curl -s -X POST "https://api.telegram.org/bot$tgTOKEN/sendMessage" \ 262 | -d chat_id="$userID" \ 263 | -d text="$message" \ 264 | -d parse_mode="HTML" \ 265 | -d disable_web_page_preview=true 266 | fi 267 | 268 | # Формирование ссылок для вывода 269 | link1="vless://${xray_uuid_vrv}@${ipserv}:443?security=reality&sni=${xray_dest_vrv}&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&type=tcp&flow=xtls-rprx-vision&encryption=none&spx=%2F#VPN-vless-443-SNI" 270 | 271 | link2="vless://${xray_uuid_vrv}@${ipserv}:8443?security=reality&sni=${xray_dest_vrv222}&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&type=tcp&flow=xtls-rprx-vision&encryption=none&spx=%2F#VPN-vless-8443-SNI" 272 | 273 | ENCODED_STRING=$(echo -n "chacha20-ietf-poly1305:${xray_sspasw_vrv}" | base64) 274 | link3="ss://$ENCODED_STRING@${ipserv}:2040#VPN-ShadowS-2040" 275 | 276 | echo -e " 277 | 278 | Ваши VPN конфиги. Первый - самый надежный, остальные резервные! 279 | 280 | \033[32m$link1\033[0m 281 | 282 | \033[32m$link2\033[0m 283 | 284 | \033[32m$link3\033[0m 285 | 286 | Скопируйте конфиг в специализированное приложение: 287 | - iOS: Happ или v2RayTun или FoXray 288 | - Android: Happ или v2RayTun или v2rayNG 289 | - Windows: Happ & v2RayTun & winLoadXRAY & Throne 290 | 291 | Поддержать автора: https://github.com/xVRVx/autoXRAY 292 | 293 | " -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # autoXRAY - личный ВПН сервер 2 | Bash-скрипт для автоматической настройки ядра [Xray](https://github.com/XTLS/Xray-core). Предназначен для удобного получения актуальных конфигураций VPN для семейного/личного использования, настраивает selfsteal VLESS [XHTTP](https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11468947) / [RAW](https://github.com/XTLS/REALITY/blob/main/README.en.md) REALITY. 3 | 4 | **UPD5: Обходим блокировку Gemini на серых IP через [WARP-cli](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-warp-cli-%D0%B4%D0%BB%D1%8F-%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B0-%D1%81%D0%B5%D1%80%D1%8B%D1%85-ip)** 5 | 6 | **UPD4: Добавлен новый экспериментальный скрипт с [GRPC XHTTP RAW WS XTLS/TLS](#%D1%8D%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82-%D1%81-grpc-xhttp-raw-ws-xtlstls)** 7 | 8 | **UPD3: Обход новых блокировок - скрипт переработан на vless xhttp reality** 9 | 10 | **UPD2: Описание неактуальных скриптов перемещено в [oldScriptReadme.md](https://github.com/xVRVx/autoXRAY/blob/main/old/oldScriptReadme.md).** 11 | 12 | **UPD1: Добавлен новый раздел — [построение моста RU -> EU](#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC-%D0%BC%D0%BE%D1%81%D1%82-ru---eu).** 13 | 14 | Рекомендуемая система: чистая Ubuntu 24/Debian 12 с root правами. 15 | 16 | 17 | =========================================================================== 18 | 19 | ## Конфигурация с клиентским конфигом для РФ (рекомендуется) 20 | Будем использовать маскировку под собственный сайт (selfsteal), который крутится на вашем же VPS. 21 | 22 | Для установки надо [арендовать VPS](#выбор-сервера-подбирал-промо-тарифы) и [получить домен](#получаем-домен). 23 | 24 | Автоматически перенаправляет весь ру трафик напрямую. 25 | ```bash 26 | 27 | bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/autoXRAYselfConfRUxhttp.sh)" -- вашДОМЕН.com 28 | ``` 29 | 30 | **Вы получите:** 31 | 1) vless RAW reality XTLS на 443 порту - хорошая маскировка, быстрый. 32 | 2) vless XHTTP reality EXTRA на 443 порту - продвинутые настройки, повышенная нагрузка на cpu. 33 | 3) vless RAW reality MUX на 443 порту - MUX работает только через конфиг клиента. 34 | 4) shadowsocks 2022-blake3-chacha20-poly1305 на 8443 порту - новый, простой и быстрый. 35 | 5) socks5 прокси на 10443 порту - используйте для сервисов (например: ТГ). 36 | 37 | 38 | =========================================================================== 39 | 40 | ## Выбор сервера (подбирал промо тарифы) 41 | 42 | - [senko.digital](https://senko.digital/?ref=47670) - от 2€, есть днс-хостинг и домены для selfsteel, есть оплата СБП. 43 | - [notbad](https://my.notbad.cloud/?from=188) - от 3$, есть оплата рублями, хороший курс и канал. 44 | - [WAICORE](https://waicore.com/?from=3063) - от 2€ промо, есть оплата рублями. 45 | - [XorekCloud](https://xorek.cloud/?from=28522) - тут есть новый промо тариф, за 150 руб./мес. 46 | - [hosting-russia](https://hosting-russia.ru/?p=57731) - ру сервера от 180 рублей, для моста ru-eu. 47 | - [cloudcore](https://cloudcore.ru/?affiliate_uuid=e9ad7432-7898-4de2-8606-38eb90e0c1a6) - ру сервера от 100 рублей, для моста ru-eu. 48 | 49 | 50 | Имейте в виду, что подсети некоторых популярных хостинг-провайдеров, таких как аеза, pq(ufo), ishosting и др., заблокированы многими провайдерами(РКН). К ним порой даже невозможно подключиться по SSH. Поэтому, пожалуйста, не используйте их или не жалуйтесь, что у вас не работает основной скрипт. 51 | 52 | 53 | ## Получаем домен 54 | 55 | **Получаем бесплатный поддомен**: регестрируемся в [cloudns](https://www.cloudns.net/aff/id/1919804/). Далее: Управление -> DNS Хостинг -> Создать зону -> Свободная зона -> вводим рандомное имя для поддомена. 56 | Теперь надо создать A-запись: Новая запись -> Тип А -> Хост (имя субдомена) -> Указывает на (IP адрес вашего VPS). 57 | 58 | Еще бесплатный поддомен можно получить тут -> https://freedns.afraid.org/ (он немного лагучий, но на первом иногда возникают лимиты на Let's Encrypt). 59 | 60 | **Платный домен и бесплатный днс-хостинг можно получить** в [senko.digital](https://senko.digital/?ref=47670). Здесь же можно арендовать промо VPS. 61 | Платные сервисы, как правило, работают стабильнее. 62 | 63 | Помните, что DNS-записи обновляются не сразу: иногда это занимает 15 минут, иногда — час и более. Проверить - [xseo.in/dns](https://xseo.in/dns). 64 | 65 | 66 | 67 | ## Настройка VPN 68 | **Скопируйте конфиг (страничка подписки) в специализированное приложение:** 69 | 70 | - iOS/macOS: [Happ](https://www.happ.su/main/ru) или [v2rayTun](https://v2raytun.com/) | (FoXray, Hiddify) 71 | - Android: [Happ](https://www.happ.su/main/ru) или [v2rayTun](https://v2raytun.com/) | (v2rayNG, SimpleXray) 72 | - Windows: [winLoadXray](https://github.com/xVRVx/winLoadXRAY/releases/latest/download/winLoadXRAY.exe), [v2rayN](https://github.com/2dust/v2rayN/releases/) | (Happ, v2rayTun, Throne, Hiddify) 73 | - Linux: [v2rayN](https://github.com/2dust/v2rayN/releases/) | (Happ, Throne, Hiddify) 74 | 75 | () - не поддерживают клиентский конфиг, только vless:// (конфиг для роутера). 76 | 77 | 78 | =========================================================================== 79 | 80 | ## Пояснение и рекомендации 81 | 82 | Сейчас в сети много инструкций по установке GUI-панелей, таких как PasarGuard, 3x-ui или новая RemnaWave. Однако все они избыточны для домашнего использования, так как предназначены для крупных проектов и отличаются высокой сложностью настройки (также используют ядро xray). 83 | 84 | Мануал, который необходимо пройти до получения первого рабочего конфига, занимает более 10 страниц. 85 | Кроме того, подходящий конфиг для Xray нужно ещё поискать и правильно настроить — с этим отлично справляется данный скрипт. 86 | 87 | Без GUI и базы данных Xray потребляет меньше ресурсов сервера и отлично подходит для запуска на слабых VPS-конфигурациях! 88 | 89 | При каждом запуске autoXRAY генерирует новые UUID, ключи и пароли для защиты пользователей. 90 | 91 | **Преимущества selfsteal** 92 | - Сайт всегда работает на вашем ВПС - устраняется точка отказа. 93 | - Ниже пинг - быстрее соединение. 94 | - Не используются CDN, которые есть на многих популярных сайтах. 95 | - Лучше маскировка - т.к. сайт находится в той же сети что и сервер. 96 | 97 | **Обновить ядро xray** 98 | ```bash 99 | bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install 100 | ``` 101 | 102 | **Перейти на алгоритм BBR** 103 | 104 | Если у вас много одновременных подключений, то можно включить алгоритм BBR (от гугла) - поможет повысить пропускную способность VPN. 105 | Проверка текущего алгоритма: sysctl net.ipv4.tcp_congestion_control 106 | 107 | 108 | ## Смена паролей и сайта маскировки 109 | 110 | Запустите скрипт заново - он сформирует новые конфигурации VPN для YouTube, chatGPT и других нужных сайтов. 111 | 112 | ## Повышенная маскировка 113 | 114 | Настоятельно рекомендуется: сменить порт ssh со стандартного 22 на другой и/или сделать вход на сервер по ключу. Настроить файрвол и оставить открытыми порты для работы скрипта: ваш ssh порт, 80 для certbot, 443, 8443, 10443 для xray. 115 | 116 | Если вы хотите погрузиться в дело конфигурации xray есть отличный [справочник](https://xtls.github.io/ru/config/outbounds/vless.html) и [руководство](https://github.com/XTLS/Xray-core/discussions/3518). 117 | 118 | Редактировать конфиг можно тут: **/usr/local/etc/xray/config.json** 119 | 120 | После изменений ядро надо перезапустить: **systemctl restart xray** 121 | 122 | 123 | =========================================================================== 124 | 125 | ## Настраиваем мост RU -> EU 126 | Многие столкнулись с блокировками хостинг-сетей по TLS (особенно при использовании мобильного интернета). Существует решение — построение моста между серверами в разных локациях. Для этого необходимо: 127 | 128 | 1) На заблокированный чистый VPS ставим стандартный рекомендованный скрипт и берем стандартый получившийся XHTTP конфиг №2: 129 | ```bash 130 | bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/autoXRAYselfConfRUxhttp.sh)" -- поддомен1.вашДОМЕН.com 131 | 132 | ``` 133 | 2) На ru VPS ставим новый скрипт (здесь нам понадобится vless XHTTP reality конфиг №2): 134 | ```bash 135 | bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/autoXRAYselflConfRUbrEUxhttp.sh)" -- поддомен2.вашДОМЕН.com "vless://вашКонфигXHTTP" 136 | ``` 137 | Установится прокси мост между серверами, итоговая цепочка: конфиг клиента -> ru VPS -> eu VPS -> зарубежный сайт 138 | 139 | Также можно взять vless RAW reality XTLS и использовать предыдущий скрипт моста: 140 | ```bash 141 | bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/old/autoXRAYselfstealConfRUbrEU.sh)" -- поддомен2.вашДОМЕН.com "vless://вашКонфигRAW" 142 | ``` 143 | 144 | 145 | === 146 | 147 | **Если вы хотите пускать YouTube через ruVPS (у вас он без ТСПУ или вы поставили и настроили [zapret4rocket](https://github.com/IndeecFOX/zapret4rocket))** 148 | 149 | Тогда в конфиге ruVPS, который лежит /usr/local/etc/xray/config.json надо добавить в строке 146: 150 | ```bash 151 | "geosite:youtube", 152 | "youtube.com", 153 | "googlevideo.com", 154 | "ytimg.com", 155 | "ggpht.com", 156 | ``` 157 | и перезапустить ядро: **systemctl restart xray** 158 | 159 | =========================================================================== 160 | 161 | ## Экспериментальный скрипт с GRPC XHTTP RAW WS XTLS/TLS 162 | 163 | ```bash 164 | bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/test/autoXRAYselfTLS2.sh)" -- вашДОМЕН.com 165 | ``` 166 | 167 | 168 | =========================================================================== 169 | 170 | ## Установка WARP-cli для обхода серых IP 171 | WARP-cli нужен когда VPS выдают серые IP и доступ к некоторым нужным сервисам закрыт. 172 | В этом примере мы обойдем геоблокировку гугл для Gemini. 173 | Установите ПО: 174 | ```bash 175 | cd && bash <(curl -fsSL https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh) w 176 | ``` 177 | Ответы на вопросы: 1, 1, 40000, 1 178 | 179 | В конфиге xray **/usr/local/etc/xray/config.json** 180 | поменяйте в конце 181 | ```json 182 | { 183 | "outboundTag": "direct", 184 | "domain": ["geosite:google-gemini","geosite:category-ru"] 185 | } 186 | ``` 187 | на 188 | ```json 189 | { 190 | "outboundTag": "warp", 191 | "domain": ["geosite:google-gemini","geosite:category-ru"] 192 | } 193 | ``` 194 | После изменений ядро надо перезапустить: **systemctl restart xray** 195 | 196 | =========================================================================== 197 | 198 | Скрипты будут дорабатываться до актуального состояния. 199 | 200 | **[Поддержать автора.](https://pay.cryptocloud.plus/pos/Weu1Y0fOhLho0nte)** 201 | -------------------------------------------------------------------------------- /old/autoXRAYselfsteal.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DOMAIN=$1 4 | 5 | if [ -z "$DOMAIN" ]; then 6 | echo "❌ Ошибка: домен не задан." 7 | exit 1 8 | fi 9 | 10 | echo "Обновление и установка необходимых пакетов..." 11 | apt update && apt install -y jq dnsutils 12 | 13 | 14 | LOCAL_IP=$(hostname -I | awk '{print $1}') 15 | DNS_IP=$(dig +short "$DOMAIN" | grep '^[0-9]') 16 | 17 | if [ "$LOCAL_IP" != "$DNS_IP" ]; then 18 | echo "❌ Внимание: IP-адрес ($LOCAL_IP) не совпадает с A-записью $DOMAIN ($DNS_IP)." 19 | echo "Правильно укажите одну A-запись для вашего домена в ДНС - $LOCAL_IP" 20 | 21 | read -p "Продолжить на ваш страх и риск? (y/N): " choice 22 | if [[ ! "$choice" =~ ^[Yy]$ ]]; then 23 | echo "Выполнение скрипта прервано." 24 | exit 1 25 | fi 26 | echo "Продолжение выполнения скрипта..." 27 | fi 28 | 29 | 30 | apt install nginx -y 31 | 32 | systemctl enable --now nginx 33 | 34 | apt install certbot -y 35 | 36 | certbot certonly --webroot -w /var/www/html -d $DOMAIN -m mail@$DOMAIN --agree-tos --non-interactive --deploy-hook "systemctl reload nginx" 37 | 38 | CONFIG_PATH="/etc/nginx/sites-available/default" 39 | 40 | echo "✅ Записываем конфигурацию в $CONFIG_PATH для домена $DOMAIN" 41 | 42 | bash -c "cat > $CONFIG_PATH" < "$WEB_PATH/index.html" < 117 | 118 | 119 | 120 | 121 | $TITLE 122 | 123 | 124 | 125 |
126 |

$HEADER

127 |
128 |
129 | 130 | 131 |
132 |
133 | 134 | 135 |
136 | 139 |
140 |
141 | 142 | 143 | EOF 144 | 145 | 146 | 147 | # Установка Xray 148 | bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install 149 | 150 | 151 | # Определяем директорию скрипта 152 | #SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) 153 | SCRIPT_DIR=/usr/local/etc/xray 154 | 155 | # Генерируем переменные 156 | xray_uuid_vrv=$(xray uuid) 157 | 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) 158 | xray_dest_vrv=${domains[$RANDOM % ${#domains[@]}]} 159 | xray_dest_vrv222=${domains[$RANDOM % ${#domains[@]}]} 160 | 161 | key_output=$(xray x25519) 162 | xray_privateKey_vrv=$(echo "$key_output" | awk -F': ' '/PrivateKey/ {print $2}') 163 | xray_publicKey_vrv=$(echo "$key_output" | awk -F': ' '/Password/ {print $2}') 164 | 165 | key_mldsa65=$(xray mldsa65) 166 | seed_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Seed/ {print $2}') 167 | verify_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Verify/ {print $2}') 168 | 169 | xray_shortIds_vrv=$(openssl rand -hex 8) 170 | 171 | xray_sspasw_vrv=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 172 | 173 | ipserv=$(hostname -I | awk '{print $1}') 174 | 175 | 176 | 177 | # Экспортируем переменные для envsubst 178 | export xray_uuid_vrv xray_dest_vrv xray_dest_vrv222 xray_privateKey_vrv xray_publicKey_vrv xray_shortIds_vrv xray_sspasw_vrv DOMAIN 179 | 180 | # Создаем JSON конфигурацию на основе шаблона 181 | #cat << 'EOF' | envsubst > output.json 182 | # Создаем JSON конфигурацию на основе шаблона и сохраняем в папку скрипта 183 | cat << 'EOF' | envsubst > "$SCRIPT_DIR/config.json" 184 | { 185 | "log": { 186 | "dnsLog": false, 187 | "loglevel": "none" 188 | }, 189 | "dns": { 190 | "servers": [ 191 | "https+local://8.8.4.4/dns-query", 192 | "https+local://8.8.8.8/dns-query", 193 | "https+local://1.1.1.1/dns-query", 194 | "localhost" 195 | ], 196 | "queryStrategy": "UseIPv4" 197 | }, 198 | "inbounds": [ 199 | { 200 | "tag": "VtcpRself", 201 | "port": 443, 202 | "listen": "0.0.0.0", 203 | "protocol": "vless", 204 | "settings": { 205 | "clients": [ 206 | { 207 | "flow": "xtls-rprx-vision", 208 | "id": "${xray_uuid_vrv}" 209 | } 210 | ], 211 | "decryption": "none" 212 | }, 213 | "sniffing": { 214 | "enabled": true, 215 | "destOverride": [ 216 | "http", 217 | "tls", 218 | "quic" 219 | ] 220 | }, 221 | "streamSettings": { 222 | "network": "raw", 223 | "security": "reality", 224 | "realitySettings": { 225 | "show": false, 226 | "xver": 1, 227 | "target": "/dev/shm/nginx.sock", 228 | "spiderX": "/", 229 | "shortIds": [ 230 | "${xray_shortIds_vrv}" 231 | ], 232 | "privateKey": "${xray_privateKey_vrv}", 233 | "serverNames": [ 234 | "$DOMAIN" 235 | ], 236 | "limitFallbackUpload": { 237 | "afterBytes": 0, 238 | "bytesPerSec": 65536, 239 | "burstBytesPerSec": 0 240 | }, 241 | "limitFallbackDownload": { 242 | "afterBytes": 5242880, 243 | "bytesPerSec": 262144, 244 | "burstBytesPerSec": 2097152 245 | } 246 | } 247 | } 248 | }, 249 | { 250 | "tag": "Vless8443self", 251 | "port": 8443, 252 | "listen": "0.0.0.0", 253 | "protocol": "vless", 254 | "settings": { 255 | "clients": [ 256 | { 257 | "flow": "xtls-rprx-vision", 258 | "id": "${xray_uuid_vrv}" 259 | } 260 | ], 261 | "decryption": "none" 262 | }, 263 | "sniffing": { 264 | "enabled": true, 265 | "destOverride": [ 266 | "http", 267 | "tls", 268 | "quic" 269 | ] 270 | }, 271 | "streamSettings": { 272 | "network": "raw", 273 | "security": "reality", 274 | "realitySettings": { 275 | "show": false, 276 | "xver": 1, 277 | "target": "/dev/shm/nginx.sock", 278 | "spiderX": "/", 279 | "shortIds": [ 280 | "${xray_shortIds_vrv}" 281 | ], 282 | "privateKey": "${xray_privateKey_vrv}", 283 | "serverNames": [ 284 | "$DOMAIN" 285 | ], 286 | "limitFallbackUpload": { 287 | "afterBytes": 0, 288 | "bytesPerSec": 65536, 289 | "burstBytesPerSec": 0 290 | }, 291 | "limitFallbackDownload": { 292 | "afterBytes": 5242880, 293 | "bytesPerSec": 262144, 294 | "burstBytesPerSec": 2097152 295 | } 296 | } 297 | } 298 | }, 299 | { 300 | "tag": "ShadowsocksTCP", 301 | "port": 2040, 302 | "listen": "0.0.0.0", 303 | "protocol": "shadowsocks", 304 | "settings": { 305 | "clients": [ 306 | { 307 | "password": "${xray_sspasw_vrv}", 308 | "method": "chacha20-ietf-poly1305" 309 | } 310 | ] 311 | }, 312 | "sniffing": { 313 | "enabled": true, 314 | "destOverride": [ 315 | "http", 316 | "tls", 317 | "quic" 318 | ] 319 | }, 320 | "streamSettings": { 321 | "network": "raw" 322 | } 323 | } 324 | ], 325 | "outbounds": [ 326 | { 327 | "tag": "direct", 328 | "protocol": "freedom", 329 | "settings": { 330 | "domainStrategy": "ForceIPv4" 331 | } 332 | }, 333 | { 334 | "tag": "block", 335 | "protocol": "blackhole" 336 | } 337 | ], 338 | "routing": { 339 | "rules": [ 340 | { 341 | "domain": [ 342 | "geosite:category-ads", 343 | "geosite:win-spy", 344 | "geosite:private" 345 | ], 346 | "outboundTag": "block" 347 | }, 348 | { 349 | "ip": [ 350 | "geoip:private" 351 | ], 352 | "outboundTag": "block" 353 | } 354 | ] 355 | } 356 | } 357 | 358 | EOF 359 | 360 | # Перезапуск Xray 361 | echo "Перезапуск Xray..." 362 | systemctl restart xray 363 | echo -e "Готово!\n" 364 | 365 | # Формирование ссылок 366 | link1="vless://${xray_uuid_vrv}@$DOMAIN:443?security=reality&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&type=tcp&flow=xtls-rprx-vision&encryption=none&spx=%2F#VPN-vless-443-self" 367 | 368 | link3="vless://${xray_uuid_vrv}@$DOMAIN:8443?security=reality&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&type=tcp&flow=xtls-rprx-vision&encryption=none&spx=%2F#VPN-vless-8443-self" 369 | 370 | ENCODED_STRING=$(echo -n "chacha20-ietf-poly1305:${xray_sspasw_vrv}" | base64) 371 | link4="ss://$ENCODED_STRING@${ipserv}:2040#VPN-ShadowS-2040" 372 | 373 | 374 | 375 | echo -e " 376 | 377 | Ваши VPN конфиги. Первый - самый надежный, остальные резервные! 378 | 379 | \033[32m$link1\033[0m 380 | 381 | \033[32m$link3\033[0m 382 | 383 | \033[32m$link4\033[0m 384 | 385 | Скопируйте конфиг в специализированное приложение: 386 | - iOS: Happ или v2RayTun или FoXray 387 | - Android: Happ или v2RayTun или v2rayNG 388 | - Windows: Happ & v2RayTun & winLoadXRAY & Throne 389 | 390 | Поддержать автора: https://github.com/xVRVx/autoXRAY 391 | 392 | " -------------------------------------------------------------------------------- /test/gen_page.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | TARGET_DIR=$1 4 | 5 | if [ -z "$TARGET_DIR" ]; then 6 | echo "Err: Target directory required." 7 | exit 1 8 | fi 9 | 10 | HEADERS=("Welcome to FileShare" "Login to Your CloudBox" "Enter Your Secure Vault" "Access Your DataVault" "Sign in to EasyFiles" "Connect to QuickAccess" "Welcome to VaultZone" "Login to SkyDrive" "Enter Your SafeData" "Sign in to FlexShare" "Access Your DropZone" "Welcome to SecureStorage" "Login to FastFiles" "Enter Your SharePoint" "Welcome to MegaVault" "Sign in to Boxify" "Access Your DataBank" "Welcome to DriveSecure" "Login to FileStream" "Connect to AccessHub") 11 | BUTTON_TEXTS=("Sign In" "Log In" "Login" "Access Account" "Enter Account" "Sign In to Continue" "Sign In to Dashboard" "Log In to Your Account" "Continue to Account" "Access Your Dashboard" "Let’s Go" "Welcome Back!" "Get Started" "Join Us Again" "Back Again? Sign In" "Secure Sign In" "Protected Login" "Sign In Securely" "Enter" "Go") 12 | 13 | ERROR_MESSAGES=( 14 | "Invalid username or password." 15 | "Connection timeout. Please try again." 16 | "Access denied by security policy." 17 | "Account is temporarily locked." 18 | "Network error: Handshake failed." 19 | "Invalid authentication token." 20 | "Session expired. Please refresh." 21 | "Error 502: Bad Gateway." 22 | "LDAP Server not responding." 23 | ) 24 | 25 | FAVICONS=( 26 | # 1. Cloud (Blue) - Классическое облако 27 | "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMjU2M0VCIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTE3LjUgMTlhMy41IDMuNSAwIDAgMCAwLTdoLTVhNC41IDQuNSAwIDAgMC04LjggMi4xQSA0IDQgMCAwIDAgNiAyMWgxMS41eiIvPjwvc3ZnPg==" 28 | 29 | # 2. Lock (Green) - Замок (безопасность) 30 | "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMyIgeT0iMTEiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMSIgcng9IjIiIHJ5PSIyIi8+PHBhdGggZD0iTTcgMTEVdi00YTUgNSAwIDAgMSAxMCAwdjQiLz48L3N2Zz4=" 31 | 32 | # 3. Shield (Red/Orange) - Щит (защищенная зона) 33 | "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjREM1RjAwIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEyIDIybDguMTMtOC44NWMuNDgtLjUyLjU2LTEuMzMuMi0xLjkxbC01LjI0LTguNDZhMiAyIDAgMCAwLTEuNzItLjkzSDguNjNhMiAyIDAgMCAwLTEuNzIuOTNMMS42NyAxMS4yNWMtLjM2LjU4LS4yOCAxLjM5LjIgMS45MUwxMiAyMnoiLz48L3N2Zz4=" 34 | 35 | # 4. Folder (Yellow/Amber) - Папка (файловый менеджер) 36 | "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjRjU5RTBCIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTIyIDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg1bDIgM2g5YTIgMiAwIDAgMSAyIDJ6Ii8+PC9zdmc+" 37 | 38 | # 5. Server (Slate) - Серверная стойка (IT инфраструктура) 39 | "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNDc1NTY5IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjIwIiBoZWlnaHQ9IjgiIHJ4PSIyIiByeT0iMiIvPjxyZWN0IHg9IjIiIHk9IjE0IiB3aWR0aD0iMjAiIGhlaWdodD0iOCIgcng9IjIiIHJ5PSIyIi8+PGxpbmUgeDE9IjYiIHkxPSI2IiB4Mj0iNi4wMSIgeTI9IjYiLz48bGluZSB4MT0iNiIgeTE9IjE4IiB4Mj0iNi4wMSIgeTI9IjE4Ii8+PC9zdmc+" 40 | 41 | # 6. Cube (Purple) - Куб (продукты, контейнеры, Box) 42 | "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjN0MZM0Y3IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2eiIvPjxwb2x5bGluZSBwb2ludHM9IjMuMjcgNi45NiAxMiAxMi4wMSAyMC43MyA2Ljk2Ii8+PGxpbmUgeDE9IjEyIiB5MT0iMjIuMDgiIHgyPSIxMiIgeTI9IjEyIi8+PC9zdmc+" 43 | 44 | # 7. User Circle (Indigo) - Аккаунт пользователя 45 | "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNDMzOENBIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTIwIDIxdi0yYTQgNCAwIDAgMC00LTRIODRhNCA0IDAgMCAwLTQgNHYyIi8+PGNpcmNsZSBjeD0iMTIiIGN5PSI3IiByPSI0Ii8+PC9zdmc+" 46 | 47 | # 8. Key (Teal) - Ключ доступа 48 | "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMEY3NjZFIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTIxIDJsLTIgMm0tNy42MSA3LjYxYTUuNSA1LjUgMCAxIDEtNy43NzggNy43NzggNS41IDUuNSAwIDAgMSA3Ljc3Ny03Ljc3N3ptMCAwTDE1LjUgNy41bTAgMGwzIDNMMjIgN2wtMy0zbS0zLjUgMy41TDE5IDQiLz48L3N2Zz4=" 49 | 50 | # 9. Globe (Cyan) - Сеть / Интернет 51 | "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDg5MUIyIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiLz48bGluZSB4MT0iMiIgeTE9IjEyIiB4Mj0iMjIiIHkyPSIxMiIvPjxwYXRoIGQ9Ik0xMiAybTUuNSA1LjVhMTUuMTUgMTUuMTUgMCAwIDEgMCA5bS0xMSAwYTE1LjE1IDE1LjE1IDAgMCAxIDAtOSIvPjwvc3ZnPg==" 52 | 53 | # 10. File Text (Gray) - Документ 54 | "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNEI1NTYzIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJ4MTJhMiAyIDAgMCAwIDItMlY4eiIvPjxwb2x5bGluZSBwb2ludHM9IjE0IDIgMTQgOCAyMCA4Ii8+PGxpbmUgeDE9IjE2IiB5MT0iMTMiIHgyPSI4IiB5Mj0iMTMiLz48bGluZSB4MT0iMTYiIHkxPSIxNyIgeDI9IjgiIHkyPSIxNyIvPjxsaW5lIHgxPSIxMCIgeTE9IjkiIHgyPSI4IiB5Mj0iOSIvPjwvc3ZnPg==" 55 | ) 56 | 57 | FONTS_DATA=( 58 | "Inter|Inter:wght@400;600;700" 59 | "Poppins|Poppins:wght@400;600;700" 60 | "Roboto|Roboto:wght@400;500;700" 61 | "Lato|Lato:wght@400;700" 62 | "Montserrat|Montserrat:wght@400;600;700" 63 | "Open Sans|Open+Sans:wght@400;600;700" 64 | "Raleway|Raleway:wght@400;600;700" 65 | ) 66 | 67 | ROUNDNESS_OPTS=("rounded-lg" "rounded-xl" "rounded-2xl") 68 | BUTTON_COLORS=("bg-blue-600 hover:bg-blue-700" "bg-green-600 hover:bg-green-700" "bg-red-600 hover:bg-red-700" "bg-purple-600 hover:bg-purple-700" "bg-indigo-600 hover:bg-indigo-700" "bg-teal-600 hover:bg-teal-700" "bg-orange-600 hover:bg-orange-700" "bg-pink-600 hover:bg-pink-700" "bg-cyan-600 hover:bg-cyan-700" "bg-emerald-600 hover:bg-emerald-700" "bg-rose-600 hover:bg-rose-700" "bg-slate-800 hover:bg-slate-900" "bg-violet-600 hover:bg-violet-700" "bg-gradient-to-r from-blue-500 to-cyan-500 hover:opacity-90" "bg-gradient-to-r from-purple-500 to-pink-500 hover:opacity-90" "bg-gradient-to-r from-orange-400 to-red-500 hover:opacity-90") 69 | 70 | BG_GRADIENTS=( 71 | "bg-gradient-to-br from-blue-50 via-white to-blue-50" 72 | "bg-gradient-to-tr from-gray-100 to-gray-200" 73 | "bg-gradient-to-br from-slate-900 via-gray-900 to-black" 74 | "bg-gradient-to-r from-blue-900 to-slate-900" 75 | "bg-gradient-to-br from-blue-100 via-blue-300 to-blue-500" 76 | "bg-gradient-to-tr from-purple-200 via-purple-400 to-purple-800" 77 | "bg-gradient-to-bl from-teal-200 to-lime-200" 78 | "bg-gradient-to-r from-rose-100 to-teal-100" 79 | "bg-gradient-to-tl from-gray-700 via-gray-900 to-black" 80 | "bg-gradient-to-br from-slate-900 via-purple-900 to-slate-900" 81 | "bg-gradient-to-tr from-indigo-500 via-purple-500 to-pink-500" 82 | "bg-gradient-to-b from-gray-900 to-gray-600 bg-gradient-to-r" 83 | "bg-gradient-to-bl from-indigo-900 via-slate-800 to-indigo-900" 84 | ) 85 | 86 | HEADER=${HEADERS[$RANDOM % ${#HEADERS[@]}]} 87 | BUTTON_TEXT=${BUTTON_TEXTS[$RANDOM % ${#BUTTON_TEXTS[@]}]} 88 | ERROR_TEXT=${ERROR_MESSAGES[$RANDOM % ${#ERROR_MESSAGES[@]}]} 89 | BUTTON_COLOR=${BUTTON_COLORS[$RANDOM % ${#BUTTON_COLORS[@]}]} 90 | BG_STYLE=${BG_GRADIENTS[$RANDOM % ${#BG_GRADIENTS[@]}]} 91 | ROUNDING=${ROUNDNESS_OPTS[$RANDOM % ${#ROUNDNESS_OPTS[@]}]} 92 | FAVICON=${FAVICONS[$RANDOM % ${#FAVICONS[@]}]} 93 | 94 | FONT_PAIR=${FONTS_DATA[$RANDOM % ${#FONTS_DATA[@]}]} 95 | FONT_NAME=$(echo $FONT_PAIR | cut -d'|' -f1) 96 | FONT_URL_PART=$(echo $FONT_PAIR | cut -d'|' -f2) 97 | 98 | RANDOM_TOKEN=$(openssl rand -hex 16) 99 | 100 | if [[ "$BG_STYLE" == *"slate-900"* || "$BG_STYLE" == *"black"* ]]; then 101 | THEME_MODE=1 102 | else 103 | THEME_MODE=0 104 | fi 105 | 106 | if [ $THEME_MODE -eq 1 ]; then 107 | TEXT_MAIN="text-white" 108 | TEXT_MUTED="text-gray-400" 109 | TEXT_INPUT="text-white" 110 | CARD_BG="bg-gray-900/50 backdrop-blur-xl border border-gray-700/50 shadow-2xl" 111 | INPUT_BG="bg-gray-800/50 border-gray-600 focus:border-blue-500 placeholder-gray-500" 112 | ERROR_BOX="bg-red-900/20 border-red-800 text-red-300" 113 | else 114 | TEXT_MAIN="text-gray-900" 115 | TEXT_MUTED="text-gray-500" 116 | TEXT_INPUT="text-gray-900" 117 | CARD_BG="bg-white/90 backdrop-blur-xl border border-gray-100 shadow-xl" 118 | INPUT_BG="bg-white border-gray-300 focus:border-blue-600 focus:ring-4 focus:ring-blue-600/10 placeholder-gray-400" 119 | ERROR_BOX="bg-red-50 border-red-100 text-red-600" 120 | fi 121 | 122 | cat > "$TARGET_DIR/index.html" < 124 | 125 | 126 | 127 | 128 | $HEADER 129 | 130 | 131 | 132 | 141 | 142 | 143 | 144 |
145 |
146 |
147 | 148 |
149 |

$HEADER

150 |
151 | 152 | 156 | 157 |
158 | 159 | 160 | 161 |
162 | 163 | 164 |
165 | 166 |
167 | 168 | 169 |
170 | 171 | 174 |
175 | 176 | 177 |
178 | 179 | 182 | 183 | 184 | EOF 185 | 186 | echo "Generated in $TARGET_DIR" -------------------------------------------------------------------------------- /old/autoXRAYselfstealConfChina.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DOMAIN=$1 4 | 5 | if [ -z "$DOMAIN" ]; then 6 | echo "❌ Ошибка: домен не задан." 7 | exit 1 8 | fi 9 | 10 | echo "Обновление и установка необходимых пакетов..." 11 | apt update && apt install -y jq dnsutils 12 | 13 | 14 | LOCAL_IP=$(hostname -I | awk '{print $1}') 15 | DNS_IP=$(dig +short "$DOMAIN" | grep '^[0-9]') 16 | 17 | if [ "$LOCAL_IP" != "$DNS_IP" ]; then 18 | echo "❌ Внимание: IP-адрес ($LOCAL_IP) не совпадает с A-записью $DOMAIN ($DNS_IP)." 19 | echo "Правильно укажите одну A-запись для вашего домена в ДНС - $LOCAL_IP" 20 | 21 | read -p "Продолжить на ваш страх и риск? (y/N): " choice 22 | if [[ ! "$choice" =~ ^[Yy]$ ]]; then 23 | echo "Выполнение скрипта прервано." 24 | exit 1 25 | fi 26 | echo "Продолжение выполнения скрипта..." 27 | fi 28 | 29 | 30 | apt install nginx -y 31 | 32 | systemctl enable --now nginx 33 | 34 | apt install certbot -y 35 | 36 | certbot certonly --webroot -w /var/www/html -d $DOMAIN -m mail@$DOMAIN --agree-tos --non-interactive --deploy-hook "systemctl reload nginx" 37 | 38 | CONFIG_PATH="/etc/nginx/sites-available/default" 39 | 40 | echo "✅ Записываем конфигурацию в $CONFIG_PATH для домена $DOMAIN" 41 | 42 | bash -c "cat > $CONFIG_PATH" < "$WEB_PATH/index.html" < 124 | 125 | 126 | 127 | 128 | $TITLE 129 | 130 | 131 | 132 | 133 | 134 |
135 |

$HEADER

136 |
137 |
138 | 139 | 140 |
141 |
142 | 143 | 144 |
145 | 148 |
149 |
150 | 151 | 152 | EOF 153 | 154 | 155 | 156 | # Установка Xray 157 | bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install 158 | 159 | 160 | # Определяем директорию скрипта 161 | #SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) 162 | SCRIPT_DIR=/usr/local/etc/xray 163 | 164 | # Генерируем переменные 165 | xray_uuid_vrv=$(xray uuid) 166 | 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) 167 | xray_dest_vrv=${domains[$RANDOM % ${#domains[@]}]} 168 | xray_dest_vrv222=${domains[$RANDOM % ${#domains[@]}]} 169 | 170 | key_output=$(xray x25519) 171 | xray_privateKey_vrv=$(echo "$key_output" | awk -F': ' '/PrivateKey/ {print $2}') 172 | xray_publicKey_vrv=$(echo "$key_output" | awk -F': ' '/Password/ {print $2}') 173 | 174 | key_mldsa65=$(xray mldsa65) 175 | seed_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Seed/ {print $2}') 176 | verify_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Verify/ {print $2}') 177 | 178 | xray_shortIds_vrv=$(openssl rand -hex 8) 179 | 180 | xray_sspasw_vrv=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 181 | 182 | path_subpage=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 183 | 184 | ipserv=$(hostname -I | awk '{print $1}') 185 | 186 | 187 | 188 | # Экспортируем переменные для envsubst 189 | 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 WEB_PATH 190 | 191 | # Создаем JSON конфигурацию сервера 192 | cat << 'EOF' | envsubst > "$SCRIPT_DIR/config.json" 193 | { 194 | "log": { 195 | "dnsLog": false, 196 | "loglevel": "none" 197 | }, 198 | "dns": { 199 | "servers": [ 200 | "https+local://8.8.4.4/dns-query", 201 | "https+local://8.8.8.8/dns-query", 202 | "https+local://1.1.1.1/dns-query", 203 | "localhost" 204 | ], 205 | "queryStrategy": "UseIPv4" 206 | }, 207 | "inbounds": [ 208 | { 209 | "tag": "VtcpRself", 210 | "port": 443, 211 | "listen": "0.0.0.0", 212 | "protocol": "vless", 213 | "settings": { 214 | "clients": [ 215 | { 216 | "flow": "xtls-rprx-vision", 217 | "id": "${xray_uuid_vrv}" 218 | } 219 | ], 220 | "decryption": "none" 221 | }, 222 | "sniffing": { 223 | "enabled": true, 224 | "destOverride": [ 225 | "http", 226 | "tls", 227 | "quic" 228 | ] 229 | }, 230 | "streamSettings": { 231 | "network": "raw", 232 | "security": "reality", 233 | "realitySettings": { 234 | "show": false, 235 | "xver": 1, 236 | "target": "/dev/shm/nginx.sock", 237 | "spiderX": "/", 238 | "shortIds": [ 239 | "${xray_shortIds_vrv}" 240 | ], 241 | "privateKey": "${xray_privateKey_vrv}", 242 | "serverNames": [ 243 | "$DOMAIN" 244 | ], 245 | "limitFallbackUpload": { 246 | "afterBytes": 0, 247 | "bytesPerSec": 65536, 248 | "burstBytesPerSec": 0 249 | }, 250 | "limitFallbackDownload": { 251 | "afterBytes": 5242880, 252 | "bytesPerSec": 262144, 253 | "burstBytesPerSec": 2097152 254 | } 255 | } 256 | } 257 | } 258 | ], 259 | "outbounds": [ 260 | { 261 | "tag": "direct", 262 | "protocol": "freedom", 263 | "settings": { 264 | "domainStrategy": "ForceIPv4" 265 | } 266 | }, 267 | { 268 | "tag": "block", 269 | "protocol": "blackhole" 270 | } 271 | ], 272 | "routing": { 273 | "rules": [ 274 | { 275 | "ip": [ 276 | "geoip:private", 277 | "geoip:cn" 278 | ], 279 | "outboundTag": "block" 280 | }, 281 | { 282 | "protocol": [ 283 | "bittorrent" 284 | ], 285 | "outboundTag": "block" 286 | }, 287 | { 288 | "domain": [ 289 | "geosite:category-ads", 290 | "geosite:win-spy", 291 | "geosite:private" 292 | ], 293 | "outboundTag": "block" 294 | } 295 | ], 296 | "domainStrategy": "IPIfNonMatch" 297 | } 298 | } 299 | 300 | EOF 301 | 302 | # Создаем JSON конфигурацию клиента 303 | cat << 'EOF' | envsubst > "$WEB_PATH/$path_subpage.html" 304 | { 305 | "log": { 306 | "loglevel": "warning" 307 | }, 308 | "dns": { 309 | "servers": [ 310 | { 311 | "address": "https://8.8.4.4/dns-query", 312 | "domains": [ 313 | "geosite:geolocation-!cn" 314 | ] 315 | }, 316 | { 317 | "address": "223.5.5.5", 318 | "domains": [ 319 | "geosite:cn" 320 | ], 321 | "expectIPs": [ 322 | "geoip:cn" 323 | ] 324 | }, 325 | { 326 | "address": "114.114.114.114", 327 | "domains": [ 328 | "geosite:cn" 329 | ] 330 | }, 331 | "localhost" 332 | ] 333 | }, 334 | "routing": { 335 | "domainStrategy": "IPIfNonMatch", 336 | "rules": [ 337 | { 338 | "domain": [ 339 | "geosite:category-ads", 340 | "geosite:win-spy" 341 | ], 342 | "outboundTag": "block" 343 | }, 344 | { 345 | "protocol": [ 346 | "bittorrent" 347 | ], 348 | "outboundTag": "direct" 349 | }, 350 | { 351 | "domain": [ 352 | "geosite:geolocation-!cn" 353 | ], 354 | "outboundTag": "proxy" 355 | }, 356 | { 357 | "ip": [ 358 | "223.5.5.5" 359 | ], 360 | "outboundTag": "direct" 361 | }, 362 | { 363 | "ip": [ 364 | "geoip:cn", 365 | "geoip:private" 366 | ], 367 | "outboundTag": "direct" 368 | } 369 | ] 370 | }, 371 | "inbounds": [ 372 | { 373 | "tag": "socks-in", 374 | "protocol": "socks", 375 | "listen": "127.0.0.1", 376 | "port": 10808, 377 | "settings": { 378 | "udp": true 379 | } 380 | }, 381 | { 382 | "tag": "socks-sb", 383 | "protocol": "socks", 384 | "listen": "127.0.0.1", 385 | "port": 2080, 386 | "settings": { 387 | "udp": true 388 | } 389 | }, 390 | { 391 | "tag": "socks-v2rayN", 392 | "protocol": "socks", 393 | "listen": "127.0.0.1", 394 | "port": 1080, 395 | "settings": { 396 | "udp": true 397 | } 398 | }, 399 | { 400 | "tag": "http-in", 401 | "protocol": "http", 402 | "listen": "127.0.0.1", 403 | "port": 10809 404 | } 405 | ], 406 | "outbounds": [ 407 | { 408 | "tag": "proxy", 409 | "protocol": "vless", 410 | "settings": { 411 | "vnext": [ 412 | { 413 | "address": "$DOMAIN", 414 | "port": 443, 415 | "users": [ 416 | { 417 | "id": "${xray_uuid_vrv}", 418 | "flow": "xtls-rprx-vision", 419 | "encryption": "none", 420 | "level": 0 421 | } 422 | ] 423 | } 424 | ] 425 | }, 426 | "streamSettings": { 427 | "network": "raw", 428 | "tcpSettings": { 429 | "acceptProxyProtocol": false 430 | }, 431 | "security": "reality", 432 | "realitySettings": { 433 | "show": false, 434 | "fingerprint": "chrome", 435 | "serverName": "$DOMAIN", 436 | "password": "${xray_publicKey_vrv}", 437 | "shortId": "${xray_shortIds_vrv}", 438 | "mldsa65Verify": "", 439 | "spiderX": "/" 440 | } 441 | } 442 | }, 443 | { 444 | "tag": "direct", 445 | "protocol": "freedom" 446 | }, 447 | { 448 | "tag": "block", 449 | "protocol": "blackhole" 450 | } 451 | ] 452 | } 453 | 454 | EOF 455 | 456 | # Перезапуск Xray 457 | echo "Перезапуск Xray..." 458 | systemctl restart xray 459 | echo -e "Готово!\n" 460 | 461 | # Формирование ссылок 462 | subPageLink="https://$DOMAIN/$path_subpage.html" 463 | 464 | # Формирование ссылок 465 | link1="vless://${xray_uuid_vrv}@$DOMAIN:443?security=reality&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&type=tcp&flow=xtls-rprx-vision&encryption=none&spx=%2F#vlessAX" 466 | 467 | echo -e " 468 | Скопируйте подписку в специализированное приложение: 469 | - iOS: Happ или v2RayTun или v2rayN 470 | - Android: Happ или v2RayTun или v2rayNG 471 | - Windows: конфиги winLoadXRAY или v2rayN или ядро Xray 472 | для vless Happ(alpha) или v2RayTun или Throne 473 | 474 | 475 | Ваша страничка подписки: 476 | \033[32m$subPageLink\033[0m 477 | 478 | Ваш конфиг для роутера: 479 | $link1 480 | 481 | Открыт локальный socks5 на порту 10808, 1080, 2080 и http на 10809. 482 | 483 | Поддержать автора: https://github.com/xVRVx/autoXRAY 484 | " 485 | -------------------------------------------------------------------------------- /old/autoXRAYselfstealConfRU.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DOMAIN=$1 4 | 5 | if [ -z "$DOMAIN" ]; then 6 | echo "❌ Ошибка: домен не задан." 7 | exit 1 8 | fi 9 | 10 | echo "Обновление и установка необходимых пакетов..." 11 | apt update && apt install -y jq dnsutils 12 | 13 | 14 | LOCAL_IP=$(hostname -I | awk '{print $1}') 15 | DNS_IP=$(dig +short "$DOMAIN" | grep '^[0-9]') 16 | 17 | if [ "$LOCAL_IP" != "$DNS_IP" ]; then 18 | echo "❌ Внимание: IP-адрес ($LOCAL_IP) не совпадает с A-записью $DOMAIN ($DNS_IP)." 19 | echo "Правильно укажите одну A-запись для вашего домена в ДНС - $LOCAL_IP" 20 | 21 | read -p "Продолжить на ваш страх и риск? (y/N): " choice 22 | if [[ ! "$choice" =~ ^[Yy]$ ]]; then 23 | echo "Выполнение скрипта прервано." 24 | exit 1 25 | fi 26 | echo "Продолжение выполнения скрипта..." 27 | fi 28 | 29 | 30 | apt install nginx -y 31 | 32 | systemctl enable --now nginx 33 | 34 | apt install certbot -y 35 | 36 | certbot certonly --webroot -w /var/www/html -d $DOMAIN -m mail@$DOMAIN --agree-tos --non-interactive --deploy-hook "systemctl reload nginx" 37 | 38 | CONFIG_PATH="/etc/nginx/sites-available/default" 39 | 40 | echo "✅ Записываем конфигурацию в $CONFIG_PATH для домена $DOMAIN" 41 | 42 | bash -c "cat > $CONFIG_PATH" < "$WEB_PATH/index.html" < 124 | 125 | 126 | 127 | 128 | $TITLE 129 | 130 | 131 | 132 | 133 | 134 |
135 |

$HEADER

136 |
137 |
138 | 139 | 140 |
141 |
142 | 143 | 144 |
145 | 148 |
149 |
150 | 151 | 152 | EOF 153 | 154 | 155 | 156 | # Установка Xray 157 | bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install 158 | 159 | 160 | # Определяем директорию скрипта 161 | #SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) 162 | SCRIPT_DIR=/usr/local/etc/xray 163 | 164 | # Генерируем переменные 165 | xray_uuid_vrv=$(xray uuid) 166 | 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) 167 | xray_dest_vrv=${domains[$RANDOM % ${#domains[@]}]} 168 | xray_dest_vrv222=${domains[$RANDOM % ${#domains[@]}]} 169 | 170 | key_output=$(xray x25519) 171 | xray_privateKey_vrv=$(echo "$key_output" | awk -F': ' '/PrivateKey/ {print $2}') 172 | xray_publicKey_vrv=$(echo "$key_output" | awk -F': ' '/Password/ {print $2}') 173 | 174 | key_mldsa65=$(xray mldsa65) 175 | seed_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Seed/ {print $2}') 176 | verify_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Verify/ {print $2}') 177 | 178 | xray_shortIds_vrv=$(openssl rand -hex 8) 179 | 180 | xray_sspasw_vrv=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 181 | 182 | path_subpage=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 183 | 184 | ipserv=$(hostname -I | awk '{print $1}') 185 | 186 | 187 | 188 | # Экспортируем переменные для envsubst 189 | 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 WEB_PATH 190 | 191 | # Создаем JSON конфигурацию сервера 192 | cat << 'EOF' | envsubst > "$SCRIPT_DIR/config.json" 193 | { 194 | "log": { 195 | "dnsLog": false, 196 | "loglevel": "none" 197 | }, 198 | "dns": { 199 | "servers": [ 200 | "https+local://8.8.4.4/dns-query", 201 | "https+local://8.8.8.8/dns-query", 202 | "https+local://1.1.1.1/dns-query", 203 | "localhost" 204 | ], 205 | "queryStrategy": "UseIPv4" 206 | }, 207 | "inbounds": [ 208 | { 209 | "tag": "VtcpRself", 210 | "port": 443, 211 | "listen": "0.0.0.0", 212 | "protocol": "vless", 213 | "settings": { 214 | "clients": [ 215 | { 216 | "flow": "xtls-rprx-vision", 217 | "id": "${xray_uuid_vrv}" 218 | } 219 | ], 220 | "decryption": "none" 221 | }, 222 | "sniffing": { 223 | "enabled": true, 224 | "destOverride": [ 225 | "http", 226 | "tls", 227 | "quic" 228 | ] 229 | }, 230 | "streamSettings": { 231 | "network": "raw", 232 | "security": "reality", 233 | "realitySettings": { 234 | "show": false, 235 | "xver": 1, 236 | "target": "/dev/shm/nginx.sock", 237 | "spiderX": "/", 238 | "shortIds": [ 239 | "${xray_shortIds_vrv}" 240 | ], 241 | "privateKey": "${xray_privateKey_vrv}", 242 | "serverNames": [ 243 | "$DOMAIN" 244 | ], 245 | "limitFallbackUpload": { 246 | "afterBytes": 0, 247 | "bytesPerSec": 65536, 248 | "burstBytesPerSec": 0 249 | }, 250 | "limitFallbackDownload": { 251 | "afterBytes": 5242880, 252 | "bytesPerSec": 262144, 253 | "burstBytesPerSec": 2097152 254 | } 255 | } 256 | } 257 | } 258 | ], 259 | "outbounds": [ 260 | { 261 | "tag": "direct", 262 | "protocol": "freedom", 263 | "settings": { 264 | "domainStrategy": "ForceIPv4" 265 | } 266 | }, 267 | { 268 | "tag": "block", 269 | "protocol": "blackhole" 270 | } 271 | ], 272 | "routing": { 273 | "rules": [ 274 | { 275 | "ip": [ 276 | "geoip:private" 277 | ], 278 | "outboundTag": "block" 279 | }, 280 | { 281 | "protocol": [ 282 | "bittorrent" 283 | ], 284 | "outboundTag": "block" 285 | }, 286 | { 287 | "domain": [ 288 | "geosite:category-ads", 289 | "geosite:win-spy", 290 | "geosite:private" 291 | ], 292 | "outboundTag": "block" 293 | } 294 | ], 295 | "domainStrategy": "IPIfNonMatch" 296 | } 297 | } 298 | 299 | EOF 300 | 301 | # Создаем JSON конфигурацию клиента 302 | cat << 'EOF' | envsubst > "$WEB_PATH/$path_subpage.html" 303 | { 304 | "log": { 305 | "loglevel": "warning" 306 | }, 307 | "dns": { 308 | "servers": [ 309 | "https://8.8.4.4/dns-query", 310 | "https://8.8.8.8/dns-query", 311 | "https://1.1.1.1/dns-query" 312 | ], 313 | "queryStrategy": "UseIPv4" 314 | }, 315 | "routing": { 316 | "domainStrategy": "IPIfNonMatch", 317 | "rules": [ 318 | { 319 | "domain": [ 320 | "geosite:category-ads", 321 | "geosite:win-spy" 322 | ], 323 | "outboundTag": "block" 324 | }, 325 | { 326 | "protocol": [ 327 | "bittorrent" 328 | ], 329 | "outboundTag": "direct" 330 | }, 331 | { 332 | "domain": [ 333 | "geosite:private", 334 | "geosite:apple", 335 | "geosite:apple-pki", 336 | "geosite:huawei", 337 | "geosite:xiaomi", 338 | "geosite:category-android-app-download", 339 | "geosite:f-droid", 340 | "geosite:yandex", 341 | "geosite:vk", 342 | "geosite:microsoft", 343 | "geosite:win-update", 344 | "geosite:win-extra", 345 | "geosite:google-play", 346 | "geosite:steam", 347 | "geosite:category-ru" 348 | ], 349 | "outboundTag": "direct" 350 | }, 351 | { 352 | "ip": [ 353 | "geoip:private" 354 | ], 355 | "outboundTag": "direct" 356 | }, 357 | { 358 | "type": "field", 359 | "ip": [ 360 | "geoip:!ru" 361 | ], 362 | "outboundTag": "proxy" 363 | }, 364 | { 365 | "domain": [ 366 | "geosite:discord", 367 | "geosite:youtube", 368 | "geosite:tiktok", 369 | "geosite:signal" 370 | ], 371 | "outboundTag": "proxy" 372 | } 373 | ] 374 | }, 375 | "inbounds": [ 376 | { 377 | "tag": "socks-in", 378 | "protocol": "socks", 379 | "listen": "127.0.0.1", 380 | "port": 10808, 381 | "settings": { 382 | "udp": true 383 | } 384 | }, 385 | { 386 | "tag": "socks-sb", 387 | "protocol": "socks", 388 | "listen": "127.0.0.1", 389 | "port": 2080, 390 | "settings": { 391 | "udp": true 392 | } 393 | }, 394 | { 395 | "tag": "socks-v2rayN", 396 | "protocol": "socks", 397 | "listen": "127.0.0.1", 398 | "port": 1080, 399 | "settings": { 400 | "udp": true 401 | } 402 | }, 403 | { 404 | "tag": "http-in", 405 | "protocol": "http", 406 | "listen": "127.0.0.1", 407 | "port": 10809 408 | } 409 | ], 410 | "outbounds": [ 411 | { 412 | "tag": "proxy", 413 | "protocol": "vless", 414 | "settings": { 415 | "vnext": [ 416 | { 417 | "address": "$DOMAIN", 418 | "port": 443, 419 | "users": [ 420 | { 421 | "id": "${xray_uuid_vrv}", 422 | "flow": "xtls-rprx-vision", 423 | "encryption": "none", 424 | "level": 0 425 | } 426 | ] 427 | } 428 | ] 429 | }, 430 | "streamSettings": { 431 | "network": "raw", 432 | "tcpSettings": { 433 | "acceptProxyProtocol": false 434 | }, 435 | "security": "reality", 436 | "realitySettings": { 437 | "show": false, 438 | "fingerprint": "chrome", 439 | "serverName": "$DOMAIN", 440 | "password": "${xray_publicKey_vrv}", 441 | "shortId": "${xray_shortIds_vrv}", 442 | "mldsa65Verify": "", 443 | "spiderX": "/" 444 | } 445 | } 446 | }, 447 | { 448 | "tag": "direct", 449 | "protocol": "freedom" 450 | }, 451 | { 452 | "tag": "block", 453 | "protocol": "blackhole" 454 | } 455 | ] 456 | } 457 | 458 | EOF 459 | 460 | # Перезапуск Xray 461 | echo "Перезапуск Xray..." 462 | systemctl restart xray 463 | echo -e "Готово!\n" 464 | 465 | # Формирование ссылок 466 | subPageLink="https://$DOMAIN/$path_subpage.html" 467 | 468 | # Формирование ссылок 469 | link1="vless://${xray_uuid_vrv}@$DOMAIN:443?security=reality&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&type=tcp&flow=xtls-rprx-vision&encryption=none&spx=%2F#vlessAX" 470 | 471 | echo -e " 472 | Скопируйте подписку в специализированное приложение: 473 | - iOS: Happ или v2RayTun или v2rayN 474 | - Android: Happ или v2RayTun или v2rayNG 475 | - Windows: конфиги winLoadXRAY или v2rayN или ядро Xray 476 | для vless Happ(alpha) или v2RayTun или Throne 477 | 478 | 479 | Ваша страничка подписки: 480 | \033[32m$subPageLink\033[0m 481 | 482 | Ваш конфиг для роутера: 483 | $link1 484 | 485 | Открыт локальный socks5 на порту 10808, 1080, 2080 и http на 10809. 486 | 487 | Поддержать автора: https://github.com/xVRVx/autoXRAY 488 | " 489 | -------------------------------------------------------------------------------- /old/autoXRAYselfstealConfRUbrEU.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DOMAIN=$1 4 | 5 | vless_url=$2 6 | 7 | if [ -z "$DOMAIN" ]; then 8 | echo "❌ Ошибка: домен не задан." 9 | exit 1 10 | fi 11 | 12 | if [ -z "$vless_url" ]; then 13 | echo "❌ Ошибка: конфиг vless не задан." 14 | exit 1 15 | fi 16 | 17 | if [[ "$vless_url" != vless://* ]]; then 18 | echo "❌ Ошибка: Неверный формат vless-ссылки." 19 | exit 1 20 | fi 21 | 22 | 23 | # Функция URL-декодинга 24 | urldecode() { 25 | printf '%b' "${1//%/\\x}" 26 | } 27 | url_body="${vless_url#vless://}" 28 | 29 | node_name_enc="${url_body##*#}" 30 | node_nameVL="$(urldecode "$node_name_enc")" 31 | 32 | url_body="${url_body%%#*}" 33 | 34 | uuidVL="${url_body%@*}" 35 | host_port_query="${url_body#*@}" 36 | 37 | addressVL="${host_port_query%%:*}" 38 | restVL="${host_port_query#*:}" 39 | portVL="${restVL%%\?*}" 40 | 41 | query_string="${restVL#*\?}" 42 | 43 | # Разбор параметров в ассоциативный массив 44 | declare -A params 45 | IFS='&' read -ra pairs <<< "$query_string" 46 | for pair in "${pairs[@]}"; do 47 | key="${pair%%=*}" 48 | value="${pair#*=}" 49 | params["$key"]="$(urldecode "$value")" 50 | done 51 | 52 | 53 | # Вывод: 54 | echo "== Основное ==" 55 | echo "UUID: $uuidVL" 56 | echo "Address: $addressVL" 57 | echo "Port: $portVL" 58 | echo "Node Name: $node_nameVL" 59 | 60 | echo "" 61 | echo "== Параметры ==" 62 | TYPE="${params[type]}"; echo "TYPE=$TYPE" 63 | FP="${params[fp]}"; echo "FP=$FP" 64 | SNI="${params[sni]}"; echo "SNI=$SNI" 65 | SPX="${params[spx]}"; echo "SPX=$SPX" 66 | PBK="${params[pbk]}"; echo "PBK=$PBK" 67 | SECURITY="${params[security]}"; echo "SECURITY=$SECURITY" 68 | FLOW="${params[flow]}"; echo "FLOW=$FLOW" 69 | SID="${params[sid]}"; echo "SID=$SID" 70 | 71 | 72 | 73 | 74 | echo "Обновление и установка необходимых пакетов..." 75 | apt update && apt install -y jq dnsutils 76 | 77 | 78 | LOCAL_IP=$(hostname -I | awk '{print $1}') 79 | DNS_IP=$(dig +short "$DOMAIN" | grep '^[0-9]') 80 | 81 | if [ "$LOCAL_IP" != "$DNS_IP" ]; then 82 | echo "❌ Внимание: IP-адрес ($LOCAL_IP) не совпадает с A-записью $DOMAIN ($DNS_IP)." 83 | echo "Правильно укажите одну A-запись для вашего домена в ДНС - $LOCAL_IP" 84 | 85 | read -p "Продолжить на ваш страх и риск? (y/N): " choice 86 | if [[ ! "$choice" =~ ^[Yy]$ ]]; then 87 | echo "Выполнение скрипта прервано." 88 | exit 1 89 | fi 90 | echo "Продолжение выполнения скрипта..." 91 | fi 92 | 93 | 94 | apt install nginx -y 95 | 96 | systemctl enable --now nginx 97 | 98 | apt install certbot -y 99 | 100 | certbot certonly --webroot -w /var/www/html -d $DOMAIN -m mail@$DOMAIN --agree-tos --non-interactive --deploy-hook "systemctl reload nginx" 101 | 102 | CONFIG_PATH="/etc/nginx/sites-available/default" 103 | 104 | echo "✅ Записываем конфигурацию в $CONFIG_PATH для домена $DOMAIN" 105 | 106 | bash -c "cat > $CONFIG_PATH" < "$WEB_PATH/index.html" < 188 | 189 | 190 | 191 | 192 | $TITLE 193 | 194 | 195 | 196 | 197 | 198 |
199 |

$HEADER

200 |
201 |
202 | 203 | 204 |
205 |
206 | 207 | 208 |
209 | 212 |
213 |
214 | 215 | 216 | EOF 217 | 218 | 219 | 220 | # Установка Xray 221 | bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install 222 | 223 | 224 | # Определяем директорию скрипта 225 | #SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) 226 | SCRIPT_DIR=/usr/local/etc/xray 227 | 228 | # Генерируем переменные 229 | xray_uuid_vrv=$(xray uuid) 230 | 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) 231 | xray_dest_vrv=${domains[$RANDOM % ${#domains[@]}]} 232 | xray_dest_vrv222=${domains[$RANDOM % ${#domains[@]}]} 233 | 234 | key_output=$(xray x25519) 235 | xray_privateKey_vrv=$(echo "$key_output" | awk -F': ' '/PrivateKey/ {print $2}') 236 | xray_publicKey_vrv=$(echo "$key_output" | awk -F': ' '/Password/ {print $2}') 237 | 238 | key_mldsa65=$(xray mldsa65) 239 | seed_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Seed/ {print $2}') 240 | verify_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Verify/ {print $2}') 241 | 242 | xray_shortIds_vrv=$(openssl rand -hex 8) 243 | 244 | xray_sspasw_vrv=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 245 | 246 | path_subpage=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 247 | 248 | ipserv=$(hostname -I | awk '{print $1}') 249 | 250 | 251 | 252 | # Экспортируем переменные для envsubst 253 | 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 WEB_PATH TYPE FP SNI SPX PBK SECURITY FLOW SID uuidVL addressVL portVL 254 | 255 | # Создаем JSON конфигурацию сервера 256 | cat << 'EOF' | envsubst > "$SCRIPT_DIR/config.json" 257 | { 258 | "log": { 259 | "dnsLog": false, 260 | "loglevel": "none" 261 | }, 262 | "dns": { 263 | "servers": [ 264 | "https+local://8.8.4.4/dns-query", 265 | "https+local://8.8.8.8/dns-query", 266 | "https+local://1.1.1.1/dns-query", 267 | "localhost" 268 | ], 269 | "queryStrategy": "UseIPv4" 270 | }, 271 | "inbounds": [ 272 | { 273 | "tag": "VtcpRself", 274 | "port": 443, 275 | "listen": "0.0.0.0", 276 | "protocol": "vless", 277 | "settings": { 278 | "clients": [ 279 | { 280 | "flow": "xtls-rprx-vision", 281 | "id": "${xray_uuid_vrv}" 282 | } 283 | ], 284 | "decryption": "none" 285 | }, 286 | "sniffing": { 287 | "enabled": true, 288 | "destOverride": [ 289 | "http", 290 | "tls", 291 | "quic" 292 | ] 293 | }, 294 | "streamSettings": { 295 | "network": "raw", 296 | "security": "reality", 297 | "realitySettings": { 298 | "show": false, 299 | "xver": 1, 300 | "target": "/dev/shm/nginx.sock", 301 | "spiderX": "/", 302 | "shortIds": [ 303 | "${xray_shortIds_vrv}" 304 | ], 305 | "privateKey": "${xray_privateKey_vrv}", 306 | "serverNames": [ 307 | "$DOMAIN" 308 | ], 309 | "limitFallbackUpload": { 310 | "afterBytes": 0, 311 | "bytesPerSec": 65536, 312 | "burstBytesPerSec": 0 313 | }, 314 | "limitFallbackDownload": { 315 | "afterBytes": 5242880, 316 | "bytesPerSec": 262144, 317 | "burstBytesPerSec": 2097152 318 | } 319 | } 320 | } 321 | } 322 | ], 323 | "outbounds": [ 324 | { 325 | "tag": "proxy", 326 | "protocol": "vless", 327 | "settings": { 328 | "vnext": [ 329 | { 330 | "port": ${portVL}, 331 | "users": [ 332 | { 333 | "id": "$uuidVL", 334 | "flow": "$FLOW", 335 | "level": 0, 336 | "encryption": "none" 337 | } 338 | ], 339 | "address": "$addressVL" 340 | } 341 | ] 342 | }, 343 | "streamSettings": { 344 | "network": "raw", 345 | "security": "$SECURITY", 346 | "realitySettings": { 347 | "show": false, 348 | "fingerprint": "$FP", 349 | "serverName": "$SNI", 350 | "password": "$PBK", 351 | "shortId": "$SID", 352 | "mldsa65Verify": "", 353 | "spiderX": "$SPX" 354 | } 355 | } 356 | }, 357 | { 358 | "tag": "direct", 359 | "protocol": "freedom", 360 | "settings": { 361 | "domainStrategy": "ForceIPv4" 362 | } 363 | }, 364 | { 365 | "tag": "block", 366 | "protocol": "blackhole" 367 | } 368 | ], 369 | "routing": { 370 | "rules": [ 371 | { 372 | "ip": [ 373 | "geoip:private" 374 | ], 375 | "outboundTag": "block" 376 | }, 377 | { 378 | "protocol": [ 379 | "bittorrent" 380 | ], 381 | "outboundTag": "block" 382 | }, 383 | { 384 | "domain": [ 385 | "geosite:category-ads", 386 | "geosite:win-spy", 387 | "geosite:private" 388 | ], 389 | "outboundTag": "block" 390 | }, 391 | { 392 | "domain": [ 393 | "testipv6.net", 394 | "geosite:apple", 395 | "geosite:apple-pki", 396 | "geosite:huawei", 397 | "geosite:xiaomi", 398 | "geosite:category-android-app-download", 399 | "geosite:f-droid", 400 | "geosite:yandex", 401 | "geosite:vk", 402 | "geosite:microsoft", 403 | "geosite:win-update", 404 | "geosite:win-extra", 405 | "geosite:google-play", 406 | "geosite:steam", 407 | "geosite:category-ru" 408 | ], 409 | "outboundTag": "direct" 410 | }, 411 | { 412 | "inboundTag": [ 413 | "VtcpRself" 414 | ], 415 | "outboundTag": "proxy" 416 | } 417 | ], 418 | "domainStrategy": "IPIfNonMatch" 419 | } 420 | } 421 | 422 | EOF 423 | 424 | # Создаем JSON конфигурацию клиента 425 | cat << 'EOF' | envsubst > "$WEB_PATH/$path_subpage.html" 426 | { 427 | "log": { 428 | "loglevel": "warning" 429 | }, 430 | "dns": { 431 | "servers": [ 432 | "https://8.8.4.4/dns-query", 433 | "https://8.8.8.8/dns-query", 434 | "https://1.1.1.1/dns-query" 435 | ], 436 | "queryStrategy": "UseIPv4" 437 | }, 438 | "routing": { 439 | "domainStrategy": "IPIfNonMatch", 440 | "rules": [ 441 | { 442 | "domain": [ 443 | "geosite:category-ads", 444 | "geosite:win-spy" 445 | ], 446 | "outboundTag": "block" 447 | }, 448 | { 449 | "protocol": [ 450 | "bittorrent" 451 | ], 452 | "outboundTag": "direct" 453 | }, 454 | { 455 | "domain": [ 456 | "geosite:private", 457 | "geosite:apple", 458 | "geosite:apple-pki", 459 | "geosite:huawei", 460 | "geosite:xiaomi", 461 | "geosite:category-android-app-download", 462 | "geosite:f-droid", 463 | "geosite:yandex", 464 | "geosite:vk", 465 | "geosite:microsoft", 466 | "geosite:win-update", 467 | "geosite:win-extra", 468 | "geosite:google-play", 469 | "geosite:steam", 470 | "geosite:category-ru" 471 | ], 472 | "outboundTag": "direct" 473 | }, 474 | { 475 | "ip": [ 476 | "geoip:private" 477 | ], 478 | "outboundTag": "direct" 479 | }, 480 | { 481 | "type": "field", 482 | "ip": [ 483 | "geoip:!ru" 484 | ], 485 | "outboundTag": "proxy" 486 | }, 487 | { 488 | "domain": [ 489 | "geosite:discord", 490 | "geosite:youtube", 491 | "geosite:tiktok", 492 | "geosite:signal" 493 | ], 494 | "outboundTag": "proxy" 495 | } 496 | ] 497 | }, 498 | "inbounds": [ 499 | { 500 | "tag": "socks-in", 501 | "protocol": "socks", 502 | "listen": "127.0.0.1", 503 | "port": 10808, 504 | "settings": { 505 | "udp": true 506 | } 507 | }, 508 | { 509 | "tag": "socks-sb", 510 | "protocol": "socks", 511 | "listen": "127.0.0.1", 512 | "port": 2080, 513 | "settings": { 514 | "udp": true 515 | } 516 | }, 517 | { 518 | "tag": "http-in", 519 | "protocol": "http", 520 | "listen": "127.0.0.1", 521 | "port": 10809 522 | } 523 | ], 524 | "outbounds": [ 525 | { 526 | "tag": "proxy", 527 | "protocol": "vless", 528 | "settings": { 529 | "vnext": [ 530 | { 531 | "address": "$DOMAIN", 532 | "port": 443, 533 | "users": [ 534 | { 535 | "id": "${xray_uuid_vrv}", 536 | "flow": "xtls-rprx-vision", 537 | "encryption": "none", 538 | "level": 0 539 | } 540 | ] 541 | } 542 | ] 543 | }, 544 | "streamSettings": { 545 | "network": "raw", 546 | "security": "reality", 547 | "realitySettings": { 548 | "show": false, 549 | "fingerprint": "chrome", 550 | "serverName": "$DOMAIN", 551 | "password": "${xray_publicKey_vrv}", 552 | "shortId": "${xray_shortIds_vrv}", 553 | "mldsa65Verify": "", 554 | "spiderX": "/" 555 | } 556 | } 557 | }, 558 | { 559 | "tag": "direct", 560 | "protocol": "freedom" 561 | }, 562 | { 563 | "tag": "block", 564 | "protocol": "blackhole" 565 | } 566 | ] 567 | } 568 | 569 | EOF 570 | 571 | # Перезапуск Xray 572 | echo "Перезапуск Xray..." 573 | systemctl restart xray 574 | echo -e "Готово!\n" 575 | 576 | # Формирование ссылок 577 | subPageLink="https://$DOMAIN/$path_subpage.html" 578 | 579 | # Формирование ссылок 580 | link1="vless://${xray_uuid_vrv}@$DOMAIN:443?security=reality&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&type=tcp&flow=xtls-rprx-vision&encryption=none&spx=%2F#vlessAXbrEU" 581 | 582 | echo -e " 583 | Скопируйте подписку в специализированное приложение: 584 | - iOS: Happ или v2RayTun или v2rayN 585 | - Android: Happ или v2RayTun или v2rayNG 586 | - Windows: конфиги Happ или winLoadXRAY или v2rayN 587 | для vless v2RayTun или Throne 588 | 589 | 590 | Ваша страничка подписки: 591 | \033[32m$subPageLink\033[0m 592 | 593 | Ваш конфиг для роутера: 594 | $link1 595 | 596 | Открыт локальный socks5 на порту 10808, 2080 и http на 10809. 597 | 598 | Поддержать автора: https://github.com/xVRVx/autoXRAY 599 | " 600 | -------------------------------------------------------------------------------- /autoXRAYselflConfRUbrEUxhttp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DOMAIN=$1 4 | 5 | vless_url=$2 6 | 7 | if [ -z "$DOMAIN" ]; then 8 | echo "❌ Ошибка: домен не задан." 9 | exit 1 10 | fi 11 | 12 | if [ -z "$vless_url" ]; then 13 | echo "❌ Ошибка: конфиг vless не задан." 14 | exit 1 15 | fi 16 | 17 | if [[ "$vless_url" != vless://* ]]; then 18 | echo "❌ Ошибка: Неверный формат vless-ссылки." 19 | exit 1 20 | fi 21 | 22 | 23 | # Функция URL-декодинга 24 | urldecode() { 25 | printf '%b' "${1//%/\\x}" 26 | } 27 | url_body="${vless_url#vless://}" 28 | 29 | node_name_enc="${url_body##*#}" 30 | node_nameVL="$(urldecode "$node_name_enc")" 31 | 32 | url_body="${url_body%%#*}" 33 | 34 | uuidVL="${url_body%@*}" 35 | host_port_query="${url_body#*@}" 36 | 37 | addressVL="${host_port_query%%:*}" 38 | restVL="${host_port_query#*:}" 39 | portVL="${restVL%%\?*}" 40 | 41 | query_string="${restVL#*\?}" 42 | 43 | # Разбор параметров в ассоциативный массив 44 | declare -A params 45 | IFS='&' read -ra pairs <<< "$query_string" 46 | for pair in "${pairs[@]}"; do 47 | key="${pair%%=*}" 48 | value="${pair#*=}" 49 | params["$key"]="$(urldecode "$value")" 50 | done 51 | 52 | 53 | # Вывод: 54 | echo "== Основное ==" 55 | echo "UUID: $uuidVL" 56 | echo "Address: $addressVL" 57 | echo "Port: $portVL" 58 | echo "Node Name: $node_nameVL" 59 | 60 | echo "" 61 | echo "== Параметры ==" 62 | SECURITY="${params[security]}"; echo "SECURITY=$SECURITY" 63 | TYPE="${params[type]}"; echo "TYPE=$TYPE" 64 | headerType="${params[headerType]}"; echo "headerType=$headerType" 65 | path_url="${params[path]}"; echo "path=$path" 66 | host="${params[host]}"; echo "host=$host" 67 | mode="${params[mode]}"; echo "mode=$mode" 68 | extra="${params[extra]}"; echo "extra=$extra" 69 | 70 | SNI="${params[sni]}"; echo "SNI=$SNI" 71 | FP="${params[fp]}"; echo "FP=$FP" 72 | PBK="${params[pbk]}"; echo "PBK=$PBK" 73 | SID="${params[sid]}"; echo "SID=$SID" 74 | SPX="${params[spx]}"; echo "SPX=$SPX" 75 | 76 | 77 | # FLOW="${params[flow]}"; echo "FLOW=$FLOW" 78 | 79 | 80 | 81 | 82 | 83 | echo "Обновление и установка необходимых пакетов..." 84 | apt update && apt install -y jq dnsutils 85 | 86 | 87 | LOCAL_IP=$(hostname -I | awk '{print $1}') 88 | DNS_IP=$(dig +short "$DOMAIN" | grep '^[0-9]') 89 | 90 | if [ "$LOCAL_IP" != "$DNS_IP" ]; then 91 | echo "❌ Внимание: IP-адрес ($LOCAL_IP) не совпадает с A-записью $DOMAIN ($DNS_IP)." 92 | echo "Правильно укажите одну A-запись для вашего домена в ДНС - $LOCAL_IP" 93 | 94 | read -p "Продолжить на ваш страх и риск? (y/N): " choice 95 | if [[ ! "$choice" =~ ^[Yy]$ ]]; then 96 | echo "Выполнение скрипта прервано." 97 | exit 1 98 | fi 99 | echo "Продолжение выполнения скрипта..." 100 | fi 101 | 102 | 103 | apt install nginx -y 104 | 105 | systemctl enable --now nginx 106 | 107 | apt install certbot -y 108 | 109 | certbot certonly --webroot -w /var/www/html -d $DOMAIN -m mail@$DOMAIN --agree-tos --non-interactive --deploy-hook "systemctl reload nginx" 110 | 111 | CONFIG_PATH="/etc/nginx/sites-available/default" 112 | 113 | echo "✅ Записываем конфигурацию в $CONFIG_PATH для домена $DOMAIN" 114 | 115 | bash -c "cat > $CONFIG_PATH" < "$WEB_PATH/index.html" < 202 | 203 | 204 | 205 | 206 | $TITLE 207 | 208 | 209 | 210 | 211 | 212 |
213 |

$HEADER

214 |
215 |
216 | 217 | 218 |
219 |
220 | 221 | 222 |
223 | 226 |
227 |
228 | 229 | 230 | EOF 231 | 232 | 233 | 234 | # Установка Xray 235 | bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install 236 | 237 | 238 | # Определяем директорию скрипта 239 | #SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) 240 | SCRIPT_DIR=/usr/local/etc/xray 241 | 242 | # Генерируем переменные 243 | xray_uuid_vrv=$(xray uuid) 244 | 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) 245 | xray_dest_vrv=${domains[$RANDOM % ${#domains[@]}]} 246 | xray_dest_vrv222=${domains[$RANDOM % ${#domains[@]}]} 247 | 248 | key_output=$(xray x25519) 249 | xray_privateKey_vrv=$(echo "$key_output" | awk -F': ' '/PrivateKey/ {print $2}') 250 | xray_publicKey_vrv=$(echo "$key_output" | awk -F': ' '/Password/ {print $2}') 251 | 252 | key_mldsa65=$(xray mldsa65) 253 | seed_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Seed/ {print $2}') 254 | verify_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Verify/ {print $2}') 255 | 256 | xray_shortIds_vrv=$(openssl rand -hex 8) 257 | 258 | xray_sspasw_vrv=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 259 | 260 | path_subpage=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 261 | 262 | path_xhttp=$(openssl rand -base64 15 | tr -dc 'a-z0-9' | head -c 6) 263 | 264 | ipserv=$(hostname -I | awk '{print $1}') 265 | 266 | 267 | 268 | # Экспортируем переменные для envsubst 269 | 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 WEB_PATH TYPE FP SNI SPX PBK SECURITY FLOW SID mode uuidVL addressVL portVL path_xhttp path_url 270 | 271 | # Создаем JSON конфигурацию сервера 272 | cat << 'EOF' | envsubst > "$SCRIPT_DIR/config.json" 273 | { 274 | "log": { 275 | "dnsLog": false, 276 | "loglevel": "none" 277 | }, 278 | "dns": { 279 | "servers": [ 280 | "https+local://8.8.4.4/dns-query", 281 | "https+local://8.8.8.8/dns-query", 282 | "https+local://1.1.1.1/dns-query", 283 | "localhost" 284 | ], 285 | "queryStrategy": "UseIPv4" 286 | }, 287 | "inbounds": [ 288 | { 289 | "tag": "RUbrEU", 290 | "port": ${portVL}, 291 | "listen": "0.0.0.0", 292 | "protocol": "vless", 293 | "settings": { 294 | "clients": [ 295 | { 296 | "id": "${xray_uuid_vrv}" 297 | } 298 | ], 299 | "decryption": "none" 300 | }, 301 | "sniffing": { 302 | "enabled": true, 303 | "destOverride": [ 304 | "http", 305 | "tls", 306 | "quic" 307 | ] 308 | }, 309 | "streamSettings": { 310 | "network": "xhttp", 311 | "xhttpSettings": { 312 | "mode": "${mode}", 313 | "path": "/${path_xhttp}" 314 | }, 315 | "security": "reality", 316 | "realitySettings": { 317 | "show": false, 318 | "xver": 1, 319 | "target": "/dev/shm/nginx.sock", 320 | "spiderX": "/", 321 | "shortIds": [ 322 | "${xray_shortIds_vrv}" 323 | ], 324 | "privateKey": "${xray_privateKey_vrv}", 325 | "serverNames": [ 326 | "$DOMAIN" 327 | ], 328 | "limitFallbackUpload": { 329 | "afterBytes": 0, 330 | "bytesPerSec": 65536, 331 | "burstBytesPerSec": 0 332 | }, 333 | "limitFallbackDownload": { 334 | "afterBytes": 5242880, 335 | "bytesPerSec": 262144, 336 | "burstBytesPerSec": 2097152 337 | } 338 | } 339 | } 340 | } 341 | ], 342 | "outbounds": [ 343 | { 344 | "mux": { 345 | "concurrency": -1, 346 | "enabled": false 347 | }, 348 | "tag": "proxy", 349 | "protocol": "vless", 350 | "settings": { 351 | "vnext": [ 352 | { 353 | "port": ${portVL}, 354 | "users": [ 355 | { 356 | "id": "$uuidVL", 357 | "encryption": "none" 358 | } 359 | ], 360 | "address": "$addressVL" 361 | } 362 | ] 363 | }, 364 | "streamSettings": { 365 | "network": "$TYPE", 366 | "xhttpSettings": { 367 | "extra": { 368 | "headers": { 369 | }, 370 | "noGRPCHeader": false, 371 | "scMaxEachPostBytes": 1500000, 372 | "scMinPostsIntervalMs": 20, 373 | "scStreamUpServerSecs": "60-240", 374 | "xPaddingBytes": "400-800", 375 | "xmux": { 376 | "cMaxReuseTimes": "1000-3000", 377 | "hKeepAlivePeriod": 0, 378 | "hMaxRequestTimes": "400-700", 379 | "hMaxReusableSecs": "1200-1800", 380 | "maxConcurrency": "3-5", 381 | "maxConnections": 0 382 | } 383 | }, 384 | "mode": "${mode}", 385 | "path": "${path_url}" 386 | }, 387 | "security": "$SECURITY", 388 | "realitySettings": { 389 | "show": false, 390 | "fingerprint": "$FP", 391 | "serverName": "$SNI", 392 | "password": "$PBK", 393 | "shortId": "$SID", 394 | "mldsa65Verify": "", 395 | "spiderX": "$SPX" 396 | } 397 | } 398 | }, 399 | { 400 | "tag": "direct", 401 | "protocol": "freedom", 402 | "settings": { 403 | "domainStrategy": "ForceIPv4" 404 | } 405 | }, 406 | { 407 | "tag": "block", 408 | "protocol": "blackhole" 409 | } 410 | ], 411 | "routing": { 412 | "rules": [ 413 | { 414 | "ip": [ 415 | "geoip:private" 416 | ], 417 | "outboundTag": "block" 418 | }, 419 | { 420 | "protocol": [ 421 | "bittorrent" 422 | ], 423 | "outboundTag": "block" 424 | }, 425 | { 426 | "domain": [ 427 | "geosite:category-ads", 428 | "geosite:win-spy", 429 | "geosite:private" 430 | ], 431 | "outboundTag": "block" 432 | }, 433 | { 434 | "domain": [ 435 | "testipv6.net", 436 | "geosite:apple", 437 | "geosite:apple-pki", 438 | "geosite:huawei", 439 | "geosite:xiaomi", 440 | "geosite:category-android-app-download", 441 | "geosite:f-droid", 442 | "geosite:yandex", 443 | "geosite:vk", 444 | "geosite:microsoft", 445 | "geosite:win-update", 446 | "geosite:win-extra", 447 | "geosite:google-play", 448 | "geosite:steam", 449 | "geosite:category-ru" 450 | ], 451 | "outboundTag": "direct" 452 | }, 453 | { 454 | "inboundTag": [ 455 | "RUbrEU" 456 | ], 457 | "outboundTag": "proxy" 458 | } 459 | ], 460 | "domainStrategy": "IPIfNonMatch" 461 | } 462 | } 463 | 464 | EOF 465 | 466 | # Создаем JSON конфигурацию клиента 467 | cat << 'EOF' | envsubst > "$WEB_PATH/$path_subpage.json" 468 | [ 469 | { 470 | "log": { 471 | "loglevel": "warning" 472 | }, 473 | "dns": { 474 | "servers": [ 475 | "https://8.8.4.4/dns-query", 476 | "https://8.8.8.8/dns-query", 477 | "https://1.1.1.1/dns-query" 478 | ], 479 | "queryStrategy": "UseIPv4" 480 | }, 481 | "routing": { 482 | "domainStrategy": "IPIfNonMatch", 483 | "rules": [ 484 | { 485 | "domain": [ 486 | "geosite:category-ads", 487 | "geosite:win-spy" 488 | ], 489 | "outboundTag": "block" 490 | }, 491 | { 492 | "protocol": [ 493 | "bittorrent" 494 | ], 495 | "outboundTag": "direct" 496 | }, 497 | { 498 | "domain": [ 499 | "geosite:private", 500 | "geosite:apple", 501 | "geosite:apple-pki", 502 | "geosite:huawei", 503 | "geosite:xiaomi", 504 | "geosite:category-android-app-download", 505 | "geosite:f-droid", 506 | "geosite:yandex", 507 | "geosite:vk", 508 | "geosite:microsoft", 509 | "geosite:win-update", 510 | "geosite:win-extra", 511 | "geosite:google-play", 512 | "geosite:steam", 513 | "geosite:category-ru" 514 | ], 515 | "outboundTag": "direct" 516 | }, 517 | { 518 | "ip": [ 519 | "geoip:private" 520 | ], 521 | "outboundTag": "direct" 522 | }, 523 | { 524 | "type": "field", 525 | "ip": [ 526 | "geoip:!ru" 527 | ], 528 | "outboundTag": "proxy" 529 | }, 530 | { 531 | "domain": [ 532 | "geosite:discord", 533 | "geosite:youtube", 534 | "geosite:tiktok", 535 | "geosite:signal" 536 | ], 537 | "outboundTag": "proxy" 538 | } 539 | ] 540 | }, 541 | "inbounds": [ 542 | { 543 | "tag": "socks-in", 544 | "protocol": "socks", 545 | "listen": "127.0.0.1", 546 | "port": 10808, 547 | "settings": { 548 | "udp": true 549 | } 550 | }, 551 | { 552 | "tag": "socks-sb", 553 | "protocol": "socks", 554 | "listen": "127.0.0.1", 555 | "port": 2080, 556 | "settings": { 557 | "udp": true 558 | } 559 | }, 560 | { 561 | "tag": "http-in", 562 | "protocol": "http", 563 | "listen": "127.0.0.1", 564 | "port": 10809 565 | } 566 | ], 567 | "outbounds": [ 568 | { 569 | "mux": { 570 | "concurrency": -1, 571 | "enabled": false 572 | }, 573 | "tag": "proxy", 574 | "protocol": "vless", 575 | "settings": { 576 | "vnext": [ 577 | { 578 | "address": "$DOMAIN", 579 | "port": ${portVL}, 580 | "users": [ 581 | { 582 | "id": "${xray_uuid_vrv}", 583 | "encryption": "none" 584 | } 585 | ] 586 | } 587 | ] 588 | }, 589 | "streamSettings": { 590 | "network": "$TYPE", 591 | "xhttpSettings": { 592 | "extra": { 593 | "headers": { 594 | }, 595 | "noGRPCHeader": false, 596 | "scMaxEachPostBytes": 1500000, 597 | "scMinPostsIntervalMs": 20, 598 | "scStreamUpServerSecs": "60-240", 599 | "xPaddingBytes": "400-800", 600 | "xmux": { 601 | "cMaxReuseTimes": "1000-3000", 602 | "hKeepAlivePeriod": 0, 603 | "hMaxRequestTimes": "400-700", 604 | "hMaxReusableSecs": "1200-1800", 605 | "maxConcurrency": "3-5", 606 | "maxConnections": 0 607 | } 608 | }, 609 | "mode": "${mode}", 610 | "path": "/${path_xhttp}" 611 | }, 612 | "security": "reality", 613 | "realitySettings": { 614 | "show": false, 615 | "fingerprint": "chrome", 616 | "serverName": "$DOMAIN", 617 | "password": "${xray_publicKey_vrv}", 618 | "shortId": "${xray_shortIds_vrv}", 619 | "mldsa65Verify": "", 620 | "spiderX": "/" 621 | } 622 | } 623 | }, 624 | { 625 | "tag": "direct", 626 | "protocol": "freedom" 627 | }, 628 | { 629 | "tag": "block", 630 | "protocol": "blackhole" 631 | } 632 | ], 633 | "remarks": "🇪🇺 Konfig RUbrEU" 634 | } 635 | ] 636 | EOF 637 | 638 | # Перезапуск Xray 639 | echo "Перезапуск Xray..." 640 | systemctl restart xray 641 | echo -e "Готово!\n" 642 | 643 | # Формирование ссылок 644 | subPageLink="https://$DOMAIN/$path_subpage.json" 645 | 646 | # Формирование ссылок 647 | link1="vless://${xray_uuid_vrv}@$DOMAIN:${portVL}?security=reality&type=xhttp&headerType=&path=%2F$path_xhttp&host=&mode=${mode}&extra=%7B%22xmux%22%3A%7B%22cMaxReuseTimes%22%3A%221000-3000%22%2C%22maxConcurrency%22%3A%223-5%22%2C%22maxConnections%22%3A0%2C%22hKeepAlivePeriod%22%3A0%2C%22hMaxRequestTimes%22%3A%22400-700%22%2C%22hMaxReusableSecs%22%3A%221200-1800%22%7D%2C%22headers%22%3A%7B%7D%2C%22noGRPCHeader%22%3Afalse%2C%22xPaddingBytes%22%3A%22400-800%22%2C%22scMaxEachPostBytes%22%3A1500000%2C%22scMinPostsIntervalMs%22%3A20%2C%22scStreamUpServerSecs%22%3A%2260-240%22%7D&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#VlXhttpRtyRUbrEU" 648 | 649 | 650 | configListLink="https://$DOMAIN/$path_subpage.html" 651 | 652 | # Создаем html файл с конфигами 653 | cat > "$WEB_PATH/$path_subpage.html" <AutoXRAY RUbrEU configs 655 |
$link1


656 |
$subPageLink


657 | 658 | EOF 659 | 660 | 661 | echo -e " 662 | Скопируйте подписку в специализированное приложение: 663 | - iOS: Happ или v2RayTun или v2rayN 664 | - Android: Happ или v2RayTun или v2rayNG 665 | - Windows: конфиги Happ или winLoadXRAY или v2rayN 666 | для vless v2RayTun или Throne 667 | 668 | 669 | Ваша страничка подписки: 670 | \033[32m$subPageLink\033[0m 671 | 672 | Ссылка на конфиг: 673 | \033[32m$configListLink\033[0m 674 | 675 | Ваш конфиг для роутера: 676 | $link1 677 | 678 | Открыт локальный socks5 на порту 10808, 2080 и http на 10809. 679 | 680 | Поддержать автора: https://github.com/xVRVx/autoXRAY 681 | " 682 | -------------------------------------------------------------------------------- /autoXRAYselfConfRUxhttp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DOMAIN=$1 4 | 5 | if [ -z "$DOMAIN" ]; then 6 | echo "❌ Ошибка: домен не задан." 7 | exit 1 8 | fi 9 | 10 | echo "Обновление и установка необходимых пакетов..." 11 | apt update && apt install -y jq dnsutils 12 | 13 | 14 | LOCAL_IP=$(hostname -I | awk '{print $1}') 15 | DNS_IP=$(dig +short "$DOMAIN" | grep '^[0-9]') 16 | 17 | if [ "$LOCAL_IP" != "$DNS_IP" ]; then 18 | echo "❌ Внимание: IP-адрес ($LOCAL_IP) не совпадает с A-записью $DOMAIN ($DNS_IP)." 19 | echo "Правильно укажите одну A-запись для вашего домена в ДНС - $LOCAL_IP" 20 | 21 | read -p "Продолжить на ваш страх и риск? (y/N): " choice 22 | if [[ ! "$choice" =~ ^[Yy]$ ]]; then 23 | echo "Выполнение скрипта прервано." 24 | exit 1 25 | fi 26 | echo "Продолжение выполнения скрипта..." 27 | fi 28 | 29 | 30 | apt install nginx -y 31 | 32 | systemctl enable --now nginx 33 | 34 | apt install certbot -y 35 | 36 | certbot certonly --webroot -w /var/www/html -d $DOMAIN -m mail@$DOMAIN --agree-tos --non-interactive --deploy-hook "systemctl reload nginx" 37 | 38 | CONFIG_PATH="/etc/nginx/sites-available/default" 39 | 40 | echo "✅ Записываем конфигурацию в $CONFIG_PATH для домена $DOMAIN" 41 | 42 | bash -c "cat > $CONFIG_PATH" < "$SCRIPT_DIR/config.json" 135 | { 136 | "log": { 137 | "dnsLog": false, 138 | "access": "/var/log/xray/access.log", 139 | "error": "/var/log/xray/error.log", 140 | "loglevel": "none" 141 | }, 142 | "dns": { 143 | "servers": [ 144 | "https+local://8.8.4.4/dns-query", 145 | "https+local://8.8.8.8/dns-query", 146 | "https+local://1.1.1.1/dns-query", 147 | "localhost" 148 | ], 149 | "queryStrategy": "UseIPv4" 150 | }, 151 | "inbounds": [ 152 | { 153 | "tag": "vsRAWrtyXTLS", 154 | "port": 443, 155 | "listen": "0.0.0.0", 156 | "protocol": "vless", 157 | "settings": { 158 | "clients": [ 159 | { 160 | "flow": "xtls-rprx-vision", 161 | "id": "${xray_uuid_vrv}" 162 | } 163 | ], 164 | "decryption": "none", 165 | "fallbacks": [ 166 | { 167 | "path": "/${path_xhttp}44", 168 | "dest": "4444", 169 | "xver": 2 170 | }, 171 | { 172 | "dest": "3333", 173 | "xver": 2 174 | } 175 | ] 176 | }, 177 | "sniffing": { 178 | "enabled": true, 179 | "destOverride": [ 180 | "http", 181 | "tls", 182 | "quic" 183 | ] 184 | }, 185 | "streamSettings": { 186 | "network": "raw", 187 | "security": "reality", 188 | "realitySettings": { 189 | "show": false, 190 | "xver": 2, 191 | "target": "/dev/shm/nginx.sock", 192 | "spiderX": "/", 193 | "shortIds": [ 194 | "${xray_shortIds_vrv}" 195 | ], 196 | "privateKey": "${xray_privateKey_vrv}", 197 | "serverNames": [ 198 | "$DOMAIN" 199 | ], 200 | "limitFallbackUpload": { 201 | "afterBytes": 0, 202 | "bytesPerSec": 65536, 203 | "burstBytesPerSec": 0 204 | }, 205 | "limitFallbackDownload": { 206 | "afterBytes": 5242880, 207 | "bytesPerSec": 262144, 208 | "burstBytesPerSec": 2097152 209 | } 210 | } 211 | } 212 | }, 213 | { 214 | "tag": "vsXHTTPrty", 215 | "port": 3333, 216 | "listen": "127.0.0.1", 217 | "protocol": "vless", 218 | "settings": { 219 | "clients": [ 220 | { 221 | "id": "${xray_uuid_vrv}" 222 | } 223 | ], 224 | "decryption": "none" 225 | }, 226 | "sniffing": { 227 | "enabled": true, 228 | "destOverride": [ 229 | "http", 230 | "tls", 231 | "quic" 232 | ] 233 | }, 234 | "streamSettings": { 235 | "network": "xhttp", 236 | "xhttpSettings": { 237 | "mode": "auto", 238 | "path": "/${path_xhttp}" 239 | }, 240 | "security": "none", 241 | "sockopt": { 242 | "acceptProxyProtocol": true 243 | } 244 | } 245 | }, 246 | { 247 | "tag": "vsRAWrty", 248 | "port": 4444, 249 | "listen": "127.0.0.1", 250 | "protocol": "vless", 251 | "settings": { 252 | "clients": [ 253 | { 254 | "id": "${xray_uuid_vrv}" 255 | } 256 | ], 257 | "decryption": "none" 258 | }, 259 | "sniffing": { 260 | "enabled": true, 261 | "destOverride": [ 262 | "http", 263 | "tls", 264 | "quic" 265 | ] 266 | }, 267 | "streamSettings": { 268 | "network": "raw", 269 | "rawSettings": { 270 | "acceptProxyProtocol": true, 271 | "header": { 272 | "type": "http", 273 | "request": { 274 | "path": [ 275 | "/${path_xhttp}44" 276 | ] 277 | } 278 | } 279 | }, 280 | "security": "none" 281 | } 282 | }, 283 | { 284 | "tag": "ShadowSocks2022", 285 | "port": 8443, 286 | "listen": "0.0.0.0", 287 | "protocol": "shadowsocks", 288 | "settings": { 289 | "method": "2022-blake3-chacha20-poly1305", 290 | "password": "${xray_sspasw_vrv}", 291 | "network": "tcp,udp" 292 | }, 293 | "sniffing": { 294 | "enabled": true, 295 | "destOverride": [ 296 | "http", 297 | "tls", 298 | "quic" 299 | ] 300 | } 301 | }, 302 | { 303 | "tag": "socks5", 304 | "port": 10443, 305 | "listen": "0.0.0.0", 306 | "protocol": "mixed", 307 | "settings": { 308 | "ip": "0.0.0.0", 309 | "udp": true, 310 | "auth": "password", 311 | "accounts": [ 312 | { 313 | "user": "${socksUser}", 314 | "pass": "${socksPasw}" 315 | 316 | } 317 | ] 318 | } 319 | } 320 | ], 321 | "outbounds": [ 322 | { 323 | "tag": "direct", 324 | "protocol": "freedom", 325 | "settings": { 326 | "domainStrategy": "ForceIPv4" 327 | } 328 | }, 329 | { 330 | "tag": "block", 331 | "protocol": "blackhole" 332 | }, 333 | { 334 | "tag": "warp", 335 | "protocol": "socks", 336 | "settings": { 337 | "servers": [ 338 | { 339 | "address": "127.0.0.1", 340 | "port": 40000 341 | } 342 | ] 343 | } 344 | } 345 | ], 346 | "routing": { 347 | "rules": [ 348 | { 349 | "ip": [ 350 | "geoip:private" 351 | ], 352 | "outboundTag": "block" 353 | }, 354 | { 355 | "protocol": [ 356 | "bittorrent" 357 | ], 358 | "outboundTag": "block" 359 | }, 360 | { 361 | "domain": [ 362 | "geosite:category-ads", 363 | "geosite:win-spy", 364 | "geosite:private" 365 | ], 366 | "outboundTag": "block" 367 | }, 368 | { 369 | "outboundTag": "direct", 370 | "domain": ["geosite:google-gemini","geosite:category-ru"] 371 | } 372 | ], 373 | "domainStrategy": "IPIfNonMatch" 374 | } 375 | } 376 | 377 | EOF 378 | 379 | # Создаем JSON конфигурацию клиента 380 | #!/bin/bash 381 | 382 | # 1. Функция-шаблон (содержит повторяющуюся часть: Log, DNS, Routing, Inbounds) 383 | print_config() { 384 | local PROXY_OUTBOUND="$1" 385 | local REMARK="$2" 386 | 387 | cat << TPL 388 | { 389 | "log": { 390 | "loglevel": "warning" 391 | }, 392 | "dns": { 393 | "servers": [ 394 | "https://8.8.4.4/dns-query", 395 | "https://8.8.8.8/dns-query", 396 | "https://1.1.1.1/dns-query" 397 | ], 398 | "queryStrategy": "UseIPv4" 399 | }, 400 | "routing": { 401 | "domainStrategy": "IPIfNonMatch", 402 | "rules": [ 403 | { 404 | "domain": [ 405 | "geosite:category-ads", 406 | "geosite:win-spy" 407 | ], 408 | "outboundTag": "block" 409 | }, 410 | { 411 | "protocol": [ 412 | "bittorrent" 413 | ], 414 | "outboundTag": "direct" 415 | }, 416 | { 417 | "domain": [ 418 | "geosite:private", 419 | "geosite:apple", 420 | "geosite:apple-pki", 421 | "geosite:huawei", 422 | "geosite:xiaomi", 423 | "geosite:category-android-app-download", 424 | "geosite:f-droid", 425 | "geosite:yandex", 426 | "geosite:vk", 427 | "geosite:microsoft", 428 | "geosite:win-update", 429 | "geosite:win-extra", 430 | "geosite:google-play", 431 | "geosite:steam", 432 | "geosite:category-ru" 433 | ], 434 | "outboundTag": "direct" 435 | }, 436 | { 437 | "ip": [ 438 | "geoip:private" 439 | ], 440 | "outboundTag": "direct" 441 | }, 442 | { 443 | "ip": [ 444 | "geoip:!ru" 445 | ], 446 | "outboundTag": "proxy" 447 | }, 448 | { 449 | "domain": [ 450 | "geosite:discord", 451 | "geosite:youtube", 452 | "geosite:tiktok", 453 | "geosite:signal" 454 | ], 455 | "outboundTag": "proxy" 456 | } 457 | ] 458 | }, 459 | "inbounds": [ 460 | { 461 | "tag": "socks-in", 462 | "protocol": "socks", 463 | "listen": "127.0.0.1", 464 | "port": 10808, 465 | "settings": { 466 | "udp": true 467 | } 468 | }, 469 | { 470 | "tag": "socks-sb", 471 | "protocol": "socks", 472 | "listen": "127.0.0.1", 473 | "port": 2080, 474 | "settings": { 475 | "udp": true 476 | } 477 | }, 478 | { 479 | "tag": "http-in", 480 | "protocol": "http", 481 | "listen": "127.0.0.1", 482 | "port": 10809 483 | } 484 | ], 485 | "outbounds": [ 486 | $PROXY_OUTBOUND, 487 | { 488 | "tag": "direct", 489 | "protocol": "freedom" 490 | }, 491 | { 492 | "tag": "block", 493 | "protocol": "blackhole" 494 | } 495 | ], 496 | "remarks": "$REMARK" 497 | } 498 | TPL 499 | } 500 | 501 | # 2. Определяем уникальные настройки (Outbounds) 502 | 503 | # --- Config 1: VLESS Reality + Vision --- 504 | OUT_REALITY_VISION='{ 505 | "mux": { "concurrency": -1, "enabled": false }, 506 | "tag": "proxy", 507 | "protocol": "vless", 508 | "settings": { 509 | "vnext": [{ 510 | "address": "$DOMAIN", 511 | "port": 443, 512 | "users": [{ "id": "${xray_uuid_vrv}", "flow": "xtls-rprx-vision", "encryption": "none" }] 513 | }] 514 | }, 515 | "streamSettings": { 516 | "network": "raw", 517 | "security": "reality", 518 | "realitySettings": { 519 | "show": false, "fingerprint": "chrome", "serverName": "$DOMAIN", 520 | "password": "${xray_publicKey_vrv}", "shortId": "${xray_shortIds_vrv}", "spiderX": "/" 521 | } 522 | } 523 | }' 524 | 525 | # --- Config 2: VLESS Reality + XHTTP (с Extra настройками) --- 526 | OUT_REALITY_XHTTP='{ 527 | "mux": { "concurrency": -1, "enabled": false }, 528 | "tag": "proxy", 529 | "protocol": "vless", 530 | "settings": { 531 | "vnext": [{ 532 | "address": "$DOMAIN", 533 | "port": 443, 534 | "users": [{ "id": "${xray_uuid_vrv}", "encryption": "none" }] 535 | }] 536 | }, 537 | "streamSettings": { 538 | "network": "xhttp", 539 | "security": "reality", 540 | "xhttpSettings": { 541 | "mode": "auto", 542 | "path": "/${path_xhttp}", 543 | "extra": { 544 | "noGRPCHeader": false, 545 | "scMaxEachPostBytes": 1500000, 546 | "scMinPostsIntervalMs": 20, 547 | "scStreamUpServerSecs": "60-240", 548 | "xPaddingBytes": "400-800", 549 | "xmux": { 550 | "cMaxReuseTimes": "1000-3000", 551 | "hKeepAlivePeriod": 0, 552 | "hMaxRequestTimes": "400-700", 553 | "hMaxReusableSecs": "1200-1800", 554 | "maxConcurrency": "3-5", 555 | "maxConnections": 0 556 | } 557 | } 558 | }, 559 | "realitySettings": { 560 | "show": false, "fingerprint": "chrome", "serverName": "$DOMAIN", 561 | "password": "${xray_publicKey_vrv}", "shortId": "${xray_shortIds_vrv}", "spiderX": "/" 562 | } 563 | } 564 | }' 565 | 566 | # --- Config 3: VLESS Reality usual MUX--- 567 | OUT_REALITY_usual='{ 568 | "mux": { "concurrency": 8, "enabled": true, 569 | "xudpConcurrency": 16, 570 | "xudpProxyUDP443": "reject" }, 571 | "tag": "proxy", 572 | "protocol": "vless", 573 | "settings": { 574 | "vnext": [{ 575 | "address": "$DOMAIN", 576 | "port": 443, 577 | "users": [{ "id": "${xray_uuid_vrv}", "flow": "", "encryption": "none" }] 578 | }] 579 | }, 580 | "streamSettings": { 581 | "network": "raw", 582 | "security": "reality", 583 | "realitySettings": { 584 | "show": false, "fingerprint": "chrome", "serverName": "$DOMAIN", 585 | "password": "${xray_publicKey_vrv}", "shortId": "${xray_shortIds_vrv}", "spiderX": "/" 586 | }, 587 | "rawSettings": { 588 | "header": { 589 | "request": { 590 | "path": [ 591 | "/${path_xhttp}44" 592 | ] 593 | }, 594 | "type": "http" 595 | } 596 | } 597 | } 598 | }' 599 | 600 | # --- Config 4: Shadowsocks 2022 (Port 8443, Chacha20) --- 601 | OUT_SS='{ 602 | "mux": { "concurrency": -1, "enabled": false }, 603 | "tag": "proxy", 604 | "protocol": "shadowsocks", 605 | "settings": { 606 | "servers": [{ 607 | "port": 8443, 608 | "method": "2022-blake3-chacha20-poly1305", 609 | "address": "$DOMAIN", 610 | "password": "${xray_sspasw_vrv}" 611 | }] 612 | } 613 | }' 614 | 615 | # 3. Сборка JSON массива и сохранение в файл 616 | ( 617 | echo "[" 618 | print_config "$OUT_REALITY_VISION" "🇪🇺 VlessRAWrealityXTLS" 619 | echo "," 620 | print_config "$OUT_REALITY_XHTTP" "🇪🇺 vlessXHTTPrealityEXTRA" 621 | echo "," 622 | print_config "$OUT_REALITY_usual" "🇪🇺 vlessRAWrealityMUX" 623 | echo "," 624 | print_config "$OUT_SS" "🇪🇺 ShadowS2022blake3" 625 | echo "]" 626 | ) | envsubst > "$WEB_PATH/$path_subpage.json" 627 | 628 | # Перезапуск Xray 629 | echo "Перезапуск Xray..." 630 | systemctl restart xray 631 | echo -e "Готово!\n" 632 | 633 | # Формирование ссылок 634 | subPageLink="https://$DOMAIN/$path_subpage.json" 635 | 636 | # Формирование ссылок 637 | link1="vless://${xray_uuid_vrv}@$DOMAIN:443?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#vlessRAWrealityXTLS-autoXRAY" 638 | 639 | link2="vless://${xray_uuid_vrv}@$DOMAIN:443?security=reality&type=xhttp&headerType=&path=%2F$path_xhttp&host=&mode=auto&extra=%7B%22xmux%22%3A%7B%22cMaxReuseTimes%22%3A%221000-3000%22%2C%22maxConcurrency%22%3A%223-5%22%2C%22maxConnections%22%3A0%2C%22hKeepAlivePeriod%22%3A0%2C%22hMaxRequestTimes%22%3A%22400-700%22%2C%22hMaxReusableSecs%22%3A%221200-1800%22%7D%2C%22headers%22%3A%7B%7D%2C%22noGRPCHeader%22%3Afalse%2C%22xPaddingBytes%22%3A%22400-800%22%2C%22scMaxEachPostBytes%22%3A1500000%2C%22scMinPostsIntervalMs%22%3A20%2C%22scStreamUpServerSecs%22%3A%2260-240%22%7D&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#vlessXHTTPrealityEXTRA-autoXRAY" 640 | 641 | link3="vless://${xray_uuid_vrv}@$DOMAIN:443?security=reality&type=tcp&headerType=http&path=%2F${path_xhttp}44&host=&flow=&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#vlessRAWrealityNOmux-autoXRAY" 642 | 643 | ENCODED_STRING=$(echo -n "2022-blake3-chacha20-poly1305:${xray_sspasw_vrv}" | base64 -w 0) 644 | linkSS="ss://$ENCODED_STRING@${DOMAIN}:8443#Shadowsocks2022-autoXRAY" 645 | 646 | 647 | configListLink="https://$DOMAIN/$path_subpage.html" 648 | 649 | CONFIGS_ARRAY=( 650 | "VLESS RAW Reality XTLS|$link1" 651 | "VLESS XHTTP Reality (для моста)|$link2" 652 | "VLESS RAW Reality NoMux|$link3" 653 | "Shadowsocks 2022|$linkSS" 654 | ) 655 | ALL_LINKS_TEXT="" 656 | 657 | # --- ЗАПИСЬ HEAD (СТАТИКА, МИНИФИЦИРОВАННЫЕ СТИЛИ И JS) --- 658 | cat > "$WEB_PATH/$path_subpage.html" <<'EOF' 659 | AutoXRAY configs 660 | 663 | 666 | 667 | EOF 668 | 669 | # --- ЗАПИСЬ BODY (ДИНАМИЧЕСКИЕ ДАННЫЕ) --- 670 | cat >> "$WEB_PATH/$path_subpage.html" <📂 Ссылка на подписку (готовый конфиг клиента с роутингом) 673 |
674 |
Subscription
675 | 676 | 677 | 678 |
679 | 680 | 681 |

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

682 | 683 | 687 |

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

688 | 689 | 690 |

➡️ Конфиги

691 | EOF 692 | 693 | # Цикл генерации строк конфигов 694 | idx=1 695 | for item in "${CONFIGS_ARRAY[@]}"; do 696 | title="${item%%|*}" 697 | link="${item#*|}" 698 | 699 | if [ -z "$ALL_LINKS_TEXT" ]; then ALL_LINKS_TEXT="$link"; else ALL_LINKS_TEXT="$ALL_LINKS_TEXT
$link"; fi 700 | 701 | cat >> "$WEB_PATH/$path_subpage.html" < 703 |
$title
704 |
$link
705 | 706 | 707 | 708 | EOF 709 | ((idx++)) 710 | done 711 | 712 | # Дописываем Socks5, All links и подвал 713 | cat >> "$WEB_PATH/$path_subpage.html" < 715 |
Socks5 (TG)
716 |
server=$DOMAIN port=10443 user=${socksUser} pass=${socksPasw}
717 | 718 | ✈️ Add to TG 719 | 720 | 721 |

💠 Все конфиги вместе

722 |
723 |
$ALL_LINKS_TEXT
724 | 725 | 726 |
727 | 728 | 729 | 730 | EOF 731 | 732 | echo -e " 733 | 734 | Ваш конфиг vless RAW reality XTLS: 735 | $link1 736 | 737 | Ваш конфиг vless XHTTP reality EXTRA: 738 | $link2 739 | 740 | Ваш конфиг vless RAW reality noMUX: 741 | $link3 742 | 743 | Ваш конфиг Shadowsocks 2022-blake3-chacha20-poly1305: 744 | $linkSS 745 | 746 | Ваша страничка подписки: 747 | \033[32m$subPageLink\033[0m 748 | 749 | Ссылка на сохраненные конфиги: 750 | \033[32m$configListLink\033[0m 751 | 752 | Скопируйте подписку в специализированное приложение: 753 | - iOS: Happ или v2RayTun или v2rayN 754 | - Android: Happ или v2RayTun или v2rayNG 755 | - Windows: конфиги Happ или winLoadXRAY или v2rayN 756 | для vless v2RayTun или Throne 757 | 758 | Открыт локальный socks5 на порту 10808, 2080 и http на 10809. 759 | 760 | Поддержать автора: https://github.com/xVRVx/autoXRAY 761 | " 762 | -------------------------------------------------------------------------------- /test/autoXRAYselfConfRUxhttpTEST.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DOMAIN=$1 4 | 5 | if [ -z "$DOMAIN" ]; then 6 | echo "❌ Ошибка: домен не задан." 7 | exit 1 8 | fi 9 | 10 | echo "Обновление и установка необходимых пакетов..." 11 | apt update && apt install -y jq dnsutils 12 | 13 | 14 | LOCAL_IP=$(hostname -I | awk '{print $1}') 15 | DNS_IP=$(dig +short "$DOMAIN" | grep '^[0-9]') 16 | 17 | if [ "$LOCAL_IP" != "$DNS_IP" ]; then 18 | echo "❌ Внимание: IP-адрес ($LOCAL_IP) не совпадает с A-записью $DOMAIN ($DNS_IP)." 19 | echo "Правильно укажите одну A-запись для вашего домена в ДНС - $LOCAL_IP" 20 | 21 | read -p "Продолжить на ваш страх и риск? (y/N): " choice 22 | if [[ ! "$choice" =~ ^[Yy]$ ]]; then 23 | echo "Выполнение скрипта прервано." 24 | exit 1 25 | fi 26 | echo "Продолжение выполнения скрипта..." 27 | fi 28 | 29 | 30 | apt install nginx -y 31 | 32 | systemctl enable --now nginx 33 | 34 | apt install certbot -y 35 | 36 | certbot certonly --webroot -w /var/www/html -d $DOMAIN -m mail@$DOMAIN --agree-tos --non-interactive --deploy-hook "systemctl reload nginx" 37 | 38 | CONFIG_PATH="/etc/nginx/sites-available/default" 39 | 40 | echo "✅ Записываем конфигурацию в $CONFIG_PATH для домена $DOMAIN" 41 | 42 | bash -c "cat > $CONFIG_PATH" < "$SCRIPT_DIR/config.json" 135 | { 136 | "log": { 137 | "dnsLog": false, 138 | "access": "/var/log/xray/access.log", 139 | "error": "/var/log/xray/error.log", 140 | "loglevel": "none" 141 | }, 142 | "dns": { 143 | "servers": [ 144 | "https+local://8.8.4.4/dns-query", 145 | "https+local://8.8.8.8/dns-query", 146 | "https+local://1.1.1.1/dns-query", 147 | "localhost" 148 | ], 149 | "queryStrategy": "UseIPv4" 150 | }, 151 | "inbounds": [ 152 | { 153 | "tag": "vsRAWrtyXTLS", 154 | "port": 443, 155 | "listen": "0.0.0.0", 156 | "protocol": "vless", 157 | "settings": { 158 | "clients": [ 159 | { 160 | "flow": "xtls-rprx-vision", 161 | "id": "${xray_uuid_vrv}" 162 | } 163 | ], 164 | "decryption": "none", 165 | "fallbacks": [ 166 | { 167 | "path": "/${path_xhttp}44", 168 | "dest": "4444", 169 | "xver": 2 170 | }, 171 | { 172 | "dest": "3333", 173 | "xver": 2 174 | } 175 | ] 176 | }, 177 | "sniffing": { 178 | "enabled": true, 179 | "destOverride": [ 180 | "http", 181 | "tls", 182 | "quic" 183 | ] 184 | }, 185 | "streamSettings": { 186 | "network": "raw", 187 | "security": "reality", 188 | "realitySettings": { 189 | "show": false, 190 | "xver": 2, 191 | "target": "/dev/shm/nginx.sock", 192 | "spiderX": "/", 193 | "shortIds": [ 194 | "${xray_shortIds_vrv}" 195 | ], 196 | "privateKey": "${xray_privateKey_vrv}", 197 | "serverNames": [ 198 | "$DOMAIN" 199 | ], 200 | "limitFallbackUpload": { 201 | "afterBytes": 0, 202 | "bytesPerSec": 65536, 203 | "burstBytesPerSec": 0 204 | }, 205 | "limitFallbackDownload": { 206 | "afterBytes": 5242880, 207 | "bytesPerSec": 262144, 208 | "burstBytesPerSec": 2097152 209 | } 210 | } 211 | } 212 | }, 213 | { 214 | "tag": "vsXHTTPrty", 215 | "port": 3333, 216 | "listen": "127.0.0.1", 217 | "protocol": "vless", 218 | "settings": { 219 | "clients": [ 220 | { 221 | "id": "${xray_uuid_vrv}" 222 | } 223 | ], 224 | "decryption": "none" 225 | }, 226 | "sniffing": { 227 | "enabled": true, 228 | "destOverride": [ 229 | "http", 230 | "tls", 231 | "quic" 232 | ] 233 | }, 234 | "streamSettings": { 235 | "network": "xhttp", 236 | "xhttpSettings": { 237 | "mode": "auto", 238 | "path": "/${path_xhttp}" 239 | }, 240 | "security": "none", 241 | "sockopt": { 242 | "acceptProxyProtocol": true 243 | } 244 | } 245 | }, 246 | { 247 | "tag": "vsRAWrty", 248 | "port": 4444, 249 | "listen": "127.0.0.1", 250 | "protocol": "vless", 251 | "settings": { 252 | "clients": [ 253 | { 254 | "id": "${xray_uuid_vrv}" 255 | } 256 | ], 257 | "decryption": "none" 258 | }, 259 | "sniffing": { 260 | "enabled": true, 261 | "destOverride": [ 262 | "http", 263 | "tls", 264 | "quic" 265 | ] 266 | }, 267 | "streamSettings": { 268 | "network": "raw", 269 | "rawSettings": { 270 | "acceptProxyProtocol": true, 271 | "header": { 272 | "type": "http", 273 | "request": { 274 | "path": [ 275 | "/${path_xhttp}44" 276 | ] 277 | } 278 | } 279 | }, 280 | "security": "none" 281 | } 282 | }, 283 | { 284 | "tag": "ShadowSocks2022", 285 | "port": 8443, 286 | "listen": "0.0.0.0", 287 | "protocol": "shadowsocks", 288 | "settings": { 289 | "method": "2022-blake3-chacha20-poly1305", 290 | "password": "${xray_sspasw_vrv}", 291 | "network": "tcp,udp" 292 | }, 293 | "sniffing": { 294 | "enabled": true, 295 | "destOverride": [ 296 | "http", 297 | "tls", 298 | "quic" 299 | ] 300 | } 301 | }, 302 | { 303 | "tag": "socks5", 304 | "port": 10443, 305 | "listen": "0.0.0.0", 306 | "protocol": "mixed", 307 | "settings": { 308 | "ip": "0.0.0.0", 309 | "udp": true, 310 | "auth": "password", 311 | "accounts": [ 312 | { 313 | "user": "${socksUser}", 314 | "pass": "${socksPasw}" 315 | 316 | } 317 | ] 318 | } 319 | } 320 | ], 321 | "outbounds": [ 322 | { 323 | "tag": "direct", 324 | "protocol": "freedom", 325 | "settings": { 326 | "domainStrategy": "ForceIPv4" 327 | } 328 | }, 329 | { 330 | "tag": "block", 331 | "protocol": "blackhole" 332 | }, 333 | { 334 | "tag": "warp", 335 | "protocol": "socks", 336 | "settings": { 337 | "servers": [ 338 | { 339 | "address": "127.0.0.1", 340 | "port": 40000 341 | } 342 | ] 343 | } 344 | } 345 | ], 346 | "routing": { 347 | "rules": [ 348 | { 349 | "ip": [ 350 | "geoip:private" 351 | ], 352 | "outboundTag": "block" 353 | }, 354 | { 355 | "protocol": [ 356 | "bittorrent" 357 | ], 358 | "outboundTag": "block" 359 | }, 360 | { 361 | "domain": [ 362 | "geosite:category-ads", 363 | "geosite:win-spy", 364 | "geosite:private" 365 | ], 366 | "outboundTag": "block" 367 | }, 368 | { 369 | "outboundTag": "direct", 370 | "domain": ["geosite:google-gemini","geosite:category-ru"] 371 | } 372 | ], 373 | "domainStrategy": "IPIfNonMatch" 374 | } 375 | } 376 | 377 | EOF 378 | 379 | # Создаем JSON конфигурацию клиента 380 | #!/bin/bash 381 | 382 | # 1. Функция-шаблон (содержит повторяющуюся часть: Log, DNS, Routing, Inbounds) 383 | print_config() { 384 | local PROXY_OUTBOUND="$1" 385 | local REMARK="$2" 386 | 387 | cat << TPL 388 | { 389 | "log": { 390 | "loglevel": "warning" 391 | }, 392 | "dns": { 393 | "servers": [ 394 | "https://8.8.4.4/dns-query", 395 | "https://8.8.8.8/dns-query", 396 | "https://1.1.1.1/dns-query" 397 | ], 398 | "queryStrategy": "UseIPv4" 399 | }, 400 | "routing": { 401 | "domainStrategy": "IPIfNonMatch", 402 | "rules": [ 403 | { 404 | "domain": [ 405 | "geosite:category-ads", 406 | "geosite:win-spy" 407 | ], 408 | "outboundTag": "block" 409 | }, 410 | { 411 | "protocol": [ 412 | "bittorrent" 413 | ], 414 | "outboundTag": "direct" 415 | }, 416 | { 417 | "domain": [ 418 | "geosite:private", 419 | "geosite:apple", 420 | "geosite:apple-pki", 421 | "geosite:huawei", 422 | "geosite:xiaomi", 423 | "geosite:category-android-app-download", 424 | "geosite:f-droid", 425 | "geosite:yandex", 426 | "geosite:vk", 427 | "geosite:microsoft", 428 | "geosite:win-update", 429 | "geosite:win-extra", 430 | "geosite:google-play", 431 | "geosite:steam", 432 | "geosite:category-ru" 433 | ], 434 | "outboundTag": "direct" 435 | }, 436 | { 437 | "ip": [ 438 | "geoip:private" 439 | ], 440 | "outboundTag": "direct" 441 | }, 442 | { 443 | "ip": [ 444 | "geoip:!ru" 445 | ], 446 | "outboundTag": "proxy" 447 | }, 448 | { 449 | "domain": [ 450 | "geosite:discord", 451 | "geosite:youtube", 452 | "geosite:tiktok", 453 | "geosite:signal" 454 | ], 455 | "outboundTag": "proxy" 456 | } 457 | ] 458 | }, 459 | "inbounds": [ 460 | { 461 | "tag": "socks-in", 462 | "protocol": "socks", 463 | "listen": "127.0.0.1", 464 | "port": 10808, 465 | "settings": { 466 | "udp": true 467 | } 468 | }, 469 | { 470 | "tag": "socks-sb", 471 | "protocol": "socks", 472 | "listen": "127.0.0.1", 473 | "port": 2080, 474 | "settings": { 475 | "udp": true 476 | } 477 | }, 478 | { 479 | "tag": "http-in", 480 | "protocol": "http", 481 | "listen": "127.0.0.1", 482 | "port": 10809 483 | } 484 | ], 485 | "outbounds": [ 486 | $PROXY_OUTBOUND, 487 | { 488 | "tag": "direct", 489 | "protocol": "freedom" 490 | }, 491 | { 492 | "tag": "block", 493 | "protocol": "blackhole" 494 | } 495 | ], 496 | "remarks": "$REMARK" 497 | } 498 | TPL 499 | } 500 | 501 | # 2. Определяем уникальные настройки (Outbounds) 502 | 503 | # --- Config 1: VLESS Reality + Vision --- 504 | OUT_REALITY_VISION='{ 505 | "mux": { "concurrency": -1, "enabled": false }, 506 | "tag": "proxy", 507 | "protocol": "vless", 508 | "settings": { 509 | "vnext": [{ 510 | "address": "$DOMAIN", 511 | "port": 443, 512 | "users": [{ "id": "${xray_uuid_vrv}", "flow": "xtls-rprx-vision", "encryption": "none" }] 513 | }] 514 | }, 515 | "streamSettings": { 516 | "network": "raw", 517 | "security": "reality", 518 | "realitySettings": { 519 | "show": false, "fingerprint": "chrome", "serverName": "$DOMAIN", 520 | "password": "${xray_publicKey_vrv}", "shortId": "${xray_shortIds_vrv}", "spiderX": "/" 521 | } 522 | } 523 | }' 524 | 525 | # --- Config 2: VLESS Reality + XHTTP (с Extra настройками) --- 526 | OUT_REALITY_XHTTP='{ 527 | "mux": { "concurrency": -1, "enabled": false }, 528 | "tag": "proxy", 529 | "protocol": "vless", 530 | "settings": { 531 | "vnext": [{ 532 | "address": "$DOMAIN", 533 | "port": 443, 534 | "users": [{ "id": "${xray_uuid_vrv}", "encryption": "none" }] 535 | }] 536 | }, 537 | "streamSettings": { 538 | "network": "xhttp", 539 | "security": "reality", 540 | "xhttpSettings": { 541 | "mode": "auto", 542 | "path": "/${path_xhttp}", 543 | "extra": { 544 | "noGRPCHeader": false, 545 | "scMaxEachPostBytes": 1500000, 546 | "scMinPostsIntervalMs": 20, 547 | "scStreamUpServerSecs": "60-240", 548 | "xPaddingBytes": "400-800", 549 | "xmux": { 550 | "cMaxReuseTimes": "1000-3000", 551 | "hKeepAlivePeriod": 0, 552 | "hMaxRequestTimes": "400-700", 553 | "hMaxReusableSecs": "1200-1800", 554 | "maxConcurrency": "3-5", 555 | "maxConnections": 0 556 | } 557 | } 558 | }, 559 | "realitySettings": { 560 | "show": false, "fingerprint": "chrome", "serverName": "$DOMAIN", 561 | "password": "${xray_publicKey_vrv}", "shortId": "${xray_shortIds_vrv}", "spiderX": "/" 562 | } 563 | } 564 | }' 565 | 566 | # --- Config 3: VLESS Reality usual MUX--- 567 | OUT_REALITY_usual='{ 568 | "mux": { "concurrency": 8, "enabled": true, 569 | "xudpConcurrency": 16, 570 | "xudpProxyUDP443": "reject" }, 571 | "tag": "proxy", 572 | "protocol": "vless", 573 | "settings": { 574 | "vnext": [{ 575 | "address": "$DOMAIN", 576 | "port": 443, 577 | "users": [{ "id": "${xray_uuid_vrv}", "flow": "", "encryption": "none" }] 578 | }] 579 | }, 580 | "streamSettings": { 581 | "network": "raw", 582 | "security": "reality", 583 | "realitySettings": { 584 | "show": false, "fingerprint": "chrome", "serverName": "$DOMAIN", 585 | "password": "${xray_publicKey_vrv}", "shortId": "${xray_shortIds_vrv}", "spiderX": "/" 586 | }, 587 | "rawSettings": { 588 | "header": { 589 | "request": { 590 | "path": [ 591 | "/${path_xhttp}44" 592 | ] 593 | }, 594 | "type": "http" 595 | } 596 | } 597 | } 598 | }' 599 | 600 | # --- Config 4: Shadowsocks 2022 (Port 8443, Chacha20) --- 601 | OUT_SS='{ 602 | "mux": { "concurrency": -1, "enabled": false }, 603 | "tag": "proxy", 604 | "protocol": "shadowsocks", 605 | "settings": { 606 | "servers": [{ 607 | "port": 8443, 608 | "method": "2022-blake3-chacha20-poly1305", 609 | "address": "$DOMAIN", 610 | "password": "${xray_sspasw_vrv}" 611 | }] 612 | } 613 | }' 614 | 615 | # 3. Сборка JSON массива и сохранение в файл 616 | ( 617 | echo "[" 618 | print_config "$OUT_REALITY_VISION" "🇪🇺 VlessRAWrealityXTLS" 619 | echo "," 620 | print_config "$OUT_REALITY_XHTTP" "🇪🇺 vlessXHTTPrealityEXTRA" 621 | echo "," 622 | print_config "$OUT_REALITY_usual" "🇪🇺 vlessRAWrealityMUX" 623 | echo "," 624 | print_config "$OUT_SS" "🇪🇺 ShadowS2022blake3" 625 | echo "]" 626 | ) | envsubst > "$WEB_PATH/$path_subpage.json" 627 | 628 | # Перезапуск Xray 629 | echo "Перезапуск Xray..." 630 | systemctl restart xray 631 | echo -e "Готово!\n" 632 | 633 | # Формирование ссылок 634 | subPageLink="https://$DOMAIN/$path_subpage.json" 635 | 636 | # Формирование ссылок 637 | link1="vless://${xray_uuid_vrv}@$DOMAIN:443?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#vlessRAWrealityXTLS-autoXRAY" 638 | 639 | link2="vless://${xray_uuid_vrv}@$DOMAIN:443?security=reality&type=xhttp&headerType=&path=%2F$path_xhttp&host=&mode=auto&extra=%7B%22xmux%22%3A%7B%22cMaxReuseTimes%22%3A%221000-3000%22%2C%22maxConcurrency%22%3A%223-5%22%2C%22maxConnections%22%3A0%2C%22hKeepAlivePeriod%22%3A0%2C%22hMaxRequestTimes%22%3A%22400-700%22%2C%22hMaxReusableSecs%22%3A%221200-1800%22%7D%2C%22headers%22%3A%7B%7D%2C%22noGRPCHeader%22%3Afalse%2C%22xPaddingBytes%22%3A%22400-800%22%2C%22scMaxEachPostBytes%22%3A1500000%2C%22scMinPostsIntervalMs%22%3A20%2C%22scStreamUpServerSecs%22%3A%2260-240%22%7D&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#vlessXHTTPrealityEXTRA-autoXRAY" 640 | 641 | link3="vless://${xray_uuid_vrv}@$DOMAIN:443?security=reality&type=tcp&headerType=http&path=%2F${path_xhttp}44&host=&flow=&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#vlessRAWrealityNOmux-autoXRAY" 642 | 643 | ENCODED_STRING=$(echo -n "2022-blake3-chacha20-poly1305:${xray_sspasw_vrv}" | base64 -w 0) 644 | linkSS="ss://$ENCODED_STRING@${DOMAIN}:8443#Shadowsocks2022-autoXRAY" 645 | 646 | 647 | configListLink="https://$DOMAIN/$path_subpage.html" 648 | 649 | CONFIGS_ARRAY=( 650 | "VLESS XTLS Vision|$link1" 651 | "VLESS XHTTP (Router)|$link2" 652 | "VLESS Reality NoMux|$link3" 653 | "Shadowsocks 2022|$linkSS" 654 | ) 655 | ALL_LINKS_TEXT="" 656 | 657 | # --- ЗАПИСЬ HEAD (СТАТИКА, МИНИФИЦИРОВАННЫЕ СТИЛИ И JS) --- 658 | cat > "$WEB_PATH/$path_subpage.html" <<'EOF' 659 | AutoXRAY configs 660 | 663 | 666 | 667 | EOF 668 | 669 | # --- ЗАПИСЬ BODY (ДИНАМИЧЕСКИЕ ДАННЫЕ) --- 670 | cat >> "$WEB_PATH/$path_subpage.html" <📂 Ссылка на подписку (готовый конфиг клиента с роутингом) 673 |
674 |
Subscription
675 | 676 | 677 | 678 |
679 | 680 |
681 |

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

682 | 683 | 687 |

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

688 |
689 | 690 |

➡️ Конфиги

691 | EOF 692 | 693 | # Цикл генерации строк конфигов 694 | idx=1 695 | for item in "${CONFIGS_ARRAY[@]}"; do 696 | title="${item%%|*}" 697 | link="${item#*|}" 698 | 699 | if [ -z "$ALL_LINKS_TEXT" ]; then ALL_LINKS_TEXT="$link"; else ALL_LINKS_TEXT="$ALL_LINKS_TEXT
$link"; fi 700 | 701 | cat >> "$WEB_PATH/$path_subpage.html" < 703 |
$title
704 |
$link
705 | 706 | 707 | 708 | EOF 709 | ((idx++)) 710 | done 711 | 712 | # Дописываем Socks5, All links и подвал 713 | cat >> "$WEB_PATH/$path_subpage.html" < 715 |
Socks5 (TG)
716 |
server=$DOMAIN port=10443 user=${socksUser} pass=${socksPasw}
717 | 718 | ✈️ Add to TG 719 | 720 | 721 |

💠 Все конфиги вместе

722 |
723 |
$ALL_LINKS_TEXT
724 | 725 | 726 |
727 | 728 | 729 | 730 | EOF 731 | 732 | echo -e " 733 | 734 | Ваш конфиг vless RAW reality XTLS: 735 | $link1 736 | 737 | Ваш конфиг vless XHTTP reality EXTRA: 738 | $link2 739 | 740 | Ваш конфиг vless RAW reality noMUX: 741 | $link3 742 | 743 | Ваш конфиг Shadowsocks 2022-blake3-chacha20-poly1305: 744 | $linkSS 745 | 746 | Ваша страничка подписки: 747 | \033[32m$subPageLink\033[0m 748 | 749 | Ссылка на сохраненные конфиги: 750 | \033[32m$configListLink\033[0m 751 | 752 | Скопируйте подписку в специализированное приложение: 753 | - iOS: Happ или v2RayTun или v2rayN 754 | - Android: Happ или v2RayTun или v2rayNG 755 | - Windows: конфиги Happ или winLoadXRAY или v2rayN 756 | для vless v2RayTun или Throne 757 | 758 | Открыт локальный socks5 на порту 10808, 2080 и http на 10809. 759 | 760 | Поддержать автора: https://github.com/xVRVx/autoXRAY 761 | " 762 | -------------------------------------------------------------------------------- /test/autoXRAYselfTLS2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DOMAIN=$1 4 | 5 | if [ -z "$DOMAIN" ]; then 6 | echo "❌ Ошибка: домен не задан." 7 | exit 1 8 | fi 9 | 10 | echo "Обновление и установка необходимых пакетов..." 11 | apt update && apt install -y jq dnsutils 12 | 13 | 14 | LOCAL_IP=$(hostname -I | awk '{print $1}') 15 | DNS_IP=$(dig +short "$DOMAIN" | grep '^[0-9]') 16 | 17 | if [ "$LOCAL_IP" != "$DNS_IP" ]; then 18 | echo "❌ Внимание: IP-адрес ($LOCAL_IP) не совпадает с A-записью $DOMAIN ($DNS_IP)." 19 | echo "Правильно укажите одну A-запись для вашего домена в ДНС - $LOCAL_IP" 20 | 21 | read -p "Продолжить на ваш страх и риск? (y/N): " choice 22 | if [[ ! "$choice" =~ ^[Yy]$ ]]; then 23 | echo "Выполнение скрипта прервано." 24 | exit 1 25 | fi 26 | echo "Продолжение выполнения скрипта..." 27 | fi 28 | 29 | 30 | apt install nginx -y 31 | 32 | systemctl enable --now nginx 33 | 34 | apt install certbot -y 35 | 36 | mkdir -p /var/lib/xray/cert/ 37 | 38 | ### Проверить 39 | cp /etc/letsencrypt/live/$DOMAIN/fullchain.pem /var/lib/xray/cert/fullchain.pem 40 | cp /etc/letsencrypt/live/$DOMAIN/privkey.pem /var/lib/xray/cert/privkey.pem 41 | chmod 744 /var/lib/xray/cert/privkey.pem 42 | chmod 744 /var/lib/xray/cert/fullchain.pem 43 | 44 | certbot certonly --webroot -w /var/www/html -d $DOMAIN -m mail@$DOMAIN --agree-tos --non-interactive --deploy-hook "systemctl reload nginx; cp /etc/letsencrypt/live/$DOMAIN/fullchain.pem /var/lib/xray/cert/fullchain.pem; cp /etc/letsencrypt/live/$DOMAIN/privkey.pem /var/lib/xray/cert/privkey.pem; chmod 744 /var/lib/xray/cert/privkey.pem; chmod 744 /var/lib/xray/cert/fullchain.pem; systemctl restart xray" 45 | 46 | CONFIG_PATH="/etc/nginx/sites-available/default" 47 | 48 | path_xhttp=$(openssl rand -base64 15 | tr -dc 'a-z0-9' | head -c 6) 49 | 50 | echo "✅ Записываем конфигурацию в $CONFIG_PATH для домена $DOMAIN" 51 | 52 | bash -c "cat > $CONFIG_PATH" < "$WEB_PATH/index.html" < 151 | 152 | 153 | 154 | 155 | $TITLE 156 | 157 | 158 | 159 | 160 | 161 |
162 |

$HEADER

163 |
164 |
165 | 166 | 167 |
168 |
169 | 170 | 171 |
172 | 175 |
176 |
177 | 178 | 179 | EOF 180 | 181 | 182 | 183 | # Установка Xray 184 | bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install 185 | 186 | 187 | # Определяем директорию скрипта 188 | #SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) 189 | SCRIPT_DIR=/usr/local/etc/xray 190 | 191 | # Генерируем переменные 192 | xray_uuid_vrv=$(xray uuid) 193 | 194 | key_output=$(xray x25519) 195 | xray_privateKey_vrv=$(echo "$key_output" | awk -F': ' '/PrivateKey/ {print $2}') 196 | xray_publicKey_vrv=$(echo "$key_output" | awk -F': ' '/Password/ {print $2}') 197 | 198 | key_mldsa65=$(xray mldsa65) 199 | seed_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Seed/ {print $2}') 200 | verify_mldsa65=$(echo "$key_mldsa65" | awk -F': ' '/Verify/ {print $2}') 201 | 202 | xray_shortIds_vrv=$(openssl rand -hex 8) 203 | 204 | # xray_sspasw_vrv=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 205 | xray_sspasw_vrv=$(openssl rand -base64 32) 206 | 207 | path_subpage=$(openssl rand -base64 15 | tr -dc 'A-Za-z0-9' | head -c 20) 208 | 209 | socksUser=$(openssl rand -base64 20 | tr -dc 'A-Za-z0-9' | head -c 5) 210 | socksPasw=$(openssl rand -base64 20 | tr -dc 'A-Za-z0-9' | head -c 10) 211 | 212 | # ipserv=$(hostname -I | awk '{print $1}') 213 | 214 | 215 | 216 | # Экспортируем переменные для envsubst 217 | export xray_uuid_vrv xray_privateKey_vrv xray_publicKey_vrv xray_shortIds_vrv xray_sspasw_vrv DOMAIN path_subpage path_xhttp WEB_PATH socksUser socksPasw 218 | 219 | # Создаем JSON конфигурацию сервера 220 | cat << 'EOF' | envsubst > "$SCRIPT_DIR/config.json" 221 | { 222 | "log": { 223 | "dnsLog": false, 224 | "access": "/var/log/xray/access.log", 225 | "error": "/var/log/xray/error.log", 226 | "loglevel": "none" 227 | }, 228 | "dns": { 229 | "servers": [ 230 | "https+local://8.8.4.4/dns-query", 231 | "https+local://8.8.8.8/dns-query", 232 | "https+local://1.1.1.1/dns-query", 233 | "localhost" 234 | ], 235 | "queryStrategy": "UseIPv4" 236 | }, 237 | "inbounds": [ 238 | { 239 | "tag": "vsTCPxtls", 240 | "port": 443, 241 | "listen": "0.0.0.0", 242 | "protocol": "vless", 243 | "settings": { 244 | "clients": [ 245 | { 246 | "flow": "xtls-rprx-vision", 247 | "id": "${xray_uuid_vrv}" 248 | } 249 | ], 250 | "decryption": "none", 251 | "fallbacks": [ 252 | { 253 | "path": "/${path_xhttp}22", 254 | "dest": "@vless-ws", 255 | "xver": 2 256 | }, 257 | { 258 | "path": "/${path_xhttp}33", 259 | "dest": "@vless-tcp", 260 | "xver": 2 261 | }, 262 | { 263 | "alpn": "h2", 264 | "dest": "/dev/shm/nginx_h2.sock", 265 | "xver": 2 266 | }, 267 | { 268 | "dest": "/dev/shm/nginx.sock", 269 | "xver": 2 270 | } 271 | ] 272 | }, 273 | "streamSettings": { 274 | "network": "raw", 275 | "security": "tls", 276 | "tlsSettings": { 277 | "certificates": [ 278 | { 279 | "certificateFile": "/var/lib/xray/cert/fullchain.pem", 280 | "keyFile": "/var/lib/xray/cert/privkey.pem" 281 | } 282 | ], 283 | "minVersion": "1.2", 284 | "cipherSuites": "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", 285 | "alpn": [ 286 | "h2", "http/1.1" 287 | ] 288 | } 289 | }, 290 | "sniffing": { 291 | "enabled": true, 292 | "destOverride": [ 293 | "http", 294 | "tls", 295 | "quic" 296 | ] 297 | } 298 | }, 299 | { 300 | "tag": "vsXHTTPtls", 301 | "port": 8400, 302 | "listen": "127.0.0.1", 303 | "protocol": "vless", 304 | "settings": { 305 | "clients": [ 306 | { 307 | "id": "${xray_uuid_vrv}" 308 | } 309 | ], 310 | "decryption": "none" 311 | }, 312 | "streamSettings": { 313 | "network": "xhttp", 314 | "xhttpSettings": { 315 | "mode": "auto", 316 | "path": "/${path_xhttp}" 317 | }, 318 | "security": "none", 319 | "sockopt": { 320 | "acceptProxyProtocol": false 321 | } 322 | }, 323 | "sniffing": { 324 | "enabled": true, 325 | "destOverride": [ 326 | "http", 327 | "tls", 328 | "quic" 329 | ] 330 | } 331 | }, 332 | { 333 | "tag": "vsGRPCtls", 334 | "port": 8411, 335 | "listen": "127.0.0.1", 336 | "protocol": "vless", 337 | "settings": { 338 | "clients": [ 339 | { 340 | "id": "${xray_uuid_vrv}" 341 | } 342 | ], 343 | "decryption": "none" 344 | }, 345 | "streamSettings": { 346 | "network": "grpc", 347 | "grpcSettings": { 348 | "serviceName": "${path_xhttp}11" 349 | }, 350 | "security": "none" 351 | }, 352 | "sniffing": { 353 | "enabled": true, 354 | "destOverride": [ 355 | "http", 356 | "tls", 357 | "quic" 358 | ] 359 | } 360 | }, 361 | { 362 | "listen": "@vless-ws", 363 | "protocol": "vless", 364 | "settings": { 365 | "clients": [ 366 | { 367 | "id": "${xray_uuid_vrv}" 368 | } 369 | ], 370 | "decryption": "none" 371 | }, 372 | "streamSettings": { 373 | "network": "ws", 374 | "wsSettings": { 375 | "acceptProxyProtocol": true, 376 | "path": "/${path_xhttp}22" 377 | }, 378 | "security": "none" 379 | }, 380 | "sniffing": { 381 | "enabled": true, 382 | "destOverride": [ 383 | "http", 384 | "tls", 385 | "quic" 386 | ] 387 | } 388 | }, 389 | { 390 | "listen": "@vless-tcp", 391 | "protocol": "vless", 392 | "settings": { 393 | "clients": [ 394 | { 395 | "id": "${xray_uuid_vrv}" 396 | } 397 | ], 398 | "decryption": "none" 399 | }, 400 | "streamSettings": { 401 | "network": "raw", 402 | "security": "none", 403 | "rawSettings": { 404 | "acceptProxyProtocol": true, 405 | "header": { 406 | "type": "http", 407 | "request": { 408 | "path": [ 409 | "/${path_xhttp}33" 410 | ] 411 | } 412 | } 413 | } 414 | }, 415 | "sniffing": { 416 | "enabled": true, 417 | "destOverride": [ 418 | "http", 419 | "tls", 420 | "quic" 421 | ] 422 | } 423 | }, 424 | { 425 | "tag": "ShadowSocks2022", 426 | "port": 8443, 427 | "listen": "0.0.0.0", 428 | "protocol": "shadowsocks", 429 | "settings": { 430 | "method": "2022-blake3-aes-256-gcm", 431 | "password": "${xray_sspasw_vrv}", 432 | "network": "tcp,udp" 433 | }, 434 | "sniffing": { 435 | "enabled": true, 436 | "destOverride": [ 437 | "http", 438 | "tls", 439 | "quic" 440 | ] 441 | } 442 | }, 443 | { 444 | "tag": "socks5", 445 | "port": 10443, 446 | "listen": "0.0.0.0", 447 | "protocol": "mixed", 448 | "settings": { 449 | "ip": "0.0.0.0", 450 | "udp": true, 451 | "auth": "password", 452 | "accounts": [ 453 | { 454 | "user": "${socksUser}", 455 | "pass": "${socksPasw}" 456 | } 457 | ] 458 | } 459 | } 460 | ], 461 | "outbounds": [ 462 | { 463 | "tag": "direct", 464 | "protocol": "freedom", 465 | "settings": { 466 | "domainStrategy": "ForceIPv4" 467 | } 468 | }, 469 | { 470 | "tag": "block", 471 | "protocol": "blackhole" 472 | }, 473 | { 474 | "tag": "warp", 475 | "protocol": "socks", 476 | "settings": { 477 | "servers": [ 478 | { 479 | "address": "127.0.0.1", 480 | "port": 40000 481 | } 482 | ] 483 | } 484 | } 485 | ], 486 | "routing": { 487 | "rules": [ 488 | { 489 | "ip": [ 490 | "geoip:private" 491 | ], 492 | "outboundTag": "block" 493 | }, 494 | { 495 | "protocol": [ 496 | "bittorrent" 497 | ], 498 | "outboundTag": "block" 499 | }, 500 | { 501 | "domain": [ 502 | "geosite:category-ads", 503 | "geosite:win-spy", 504 | "geosite:private" 505 | ], 506 | "outboundTag": "block" 507 | }, 508 | { 509 | "outboundTag": "direct", 510 | "domain": ["geosite:google-gemini","geosite:category-ru"] 511 | } 512 | ], 513 | "domainStrategy": "IPIfNonMatch" 514 | } 515 | } 516 | 517 | EOF 518 | 519 | # Создаем JSON конфигурацию клиента 520 | print_config() { 521 | local PROXY_OUTBOUND="$1" 522 | local REMARK="$2" 523 | 524 | cat << TPL 525 | { 526 | "log": { 527 | "loglevel": "warning" 528 | }, 529 | "dns": { 530 | "servers": [ 531 | "https://8.8.4.4/dns-query", 532 | "https://8.8.8.8/dns-query", 533 | "https://1.1.1.1/dns-query" 534 | ], 535 | "queryStrategy": "UseIPv4" 536 | }, 537 | "routing": { 538 | "domainStrategy": "IPIfNonMatch", 539 | "rules": [ 540 | { 541 | "domain": [ 542 | "geosite:category-ads", 543 | "geosite:win-spy" 544 | ], 545 | "outboundTag": "block" 546 | }, 547 | { 548 | "protocol": [ 549 | "bittorrent" 550 | ], 551 | "outboundTag": "direct" 552 | }, 553 | { 554 | "domain": [ 555 | "geosite:private", 556 | "geosite:apple", 557 | "geosite:google-play", 558 | "geosite:yandex", 559 | "geosite:vk", 560 | "geosite:category-ru" 561 | ], 562 | "outboundTag": "direct" 563 | }, 564 | { 565 | "ip": [ 566 | "geoip:private" 567 | ], 568 | "outboundTag": "direct" 569 | }, 570 | { 571 | "ip": [ 572 | "geoip:!ru" 573 | ], 574 | "outboundTag": "proxy" 575 | }, 576 | { 577 | "domain": [ 578 | "geosite:discord", 579 | "geosite:youtube", 580 | "geosite:tiktok", 581 | "geosite:signal" 582 | ], 583 | "outboundTag": "proxy" 584 | } 585 | ] 586 | }, 587 | "inbounds": [ 588 | { 589 | "tag": "socks-in", 590 | "protocol": "socks", 591 | "listen": "127.0.0.1", 592 | "port": 10808, 593 | "settings": { 594 | "udp": true 595 | } 596 | }, 597 | { 598 | "tag": "socks-sb", 599 | "protocol": "socks", 600 | "listen": "127.0.0.1", 601 | "port": 2080, 602 | "settings": { 603 | "udp": true 604 | } 605 | }, 606 | { 607 | "tag": "http-in", 608 | "protocol": "http", 609 | "listen": "127.0.0.1", 610 | "port": 10809 611 | } 612 | ], 613 | "outbounds": [ 614 | $PROXY_OUTBOUND, 615 | { 616 | "tag": "direct", 617 | "protocol": "freedom" 618 | }, 619 | { 620 | "tag": "block", 621 | "protocol": "blackhole" 622 | } 623 | ], 624 | "remarks": "$REMARK" 625 | } 626 | TPL 627 | } 628 | 629 | # --- 1. VLESS TCP XTLS-Vision (Основной, самый быстрый) --- 630 | OUT_VISION='{ 631 | "tag": "proxy", 632 | "protocol": "vless", 633 | "settings": { 634 | "vnext": [{ 635 | "address": "$DOMAIN", 636 | "port": 443, 637 | "users": [{ "id": "${xray_uuid_vrv}", "flow": "xtls-rprx-vision", "encryption": "none" }] 638 | }] 639 | }, 640 | "streamSettings": { 641 | "network": "raw", 642 | "security": "tls", 643 | "tlsSettings": { 644 | "serverName": "$DOMAIN", 645 | "fingerprint": "chrome" 646 | } 647 | } 648 | }' 649 | 650 | # --- 2. VLESS XHTTP (Через Fallback Nginx) --- 651 | OUT_XHTTP='{ 652 | "tag": "proxy", 653 | "protocol": "vless", 654 | "settings": { 655 | "vnext": [{ 656 | "address": "$DOMAIN", 657 | "port": 443, 658 | "users": [{ "id": "${xray_uuid_vrv}", "encryption": "none" }] 659 | }] 660 | }, 661 | "streamSettings": { 662 | "network": "xhttp", 663 | "xhttpSettings": { 664 | "extra": { 665 | "headers": { 666 | }, 667 | "noGRPCHeader": false, 668 | "scMaxEachPostBytes": 1500000, 669 | "scMinPostsIntervalMs": 20, 670 | "scStreamUpServerSecs": "60-240", 671 | "xPaddingBytes": "400-800", 672 | "xmux": { 673 | "cMaxReuseTimes": "1000-3000", 674 | "hKeepAlivePeriod": 0, 675 | "hMaxRequestTimes": "400-700", 676 | "hMaxReusableSecs": "1200-1800", 677 | "maxConcurrency": "3-5", 678 | "maxConnections": 0 679 | } 680 | }, 681 | "mode": "auto", "path": "/${path_xhttp}" }, 682 | "security": "tls", 683 | "tlsSettings": { "serverName": "$DOMAIN", "fingerprint": "chrome" } 684 | } 685 | }' 686 | 687 | # --- 3. VLESS gRPC (Через Fallback Nginx) --- 688 | # Важно: alpn h2 обязателен для корректной работы через Nginx 689 | OUT_GRPC='{ 690 | "tag": "proxy", 691 | "protocol": "vless", 692 | "settings": { 693 | "vnext": [{ 694 | "address": "$DOMAIN", 695 | "port": 443, 696 | "users": [{ "id": "${xray_uuid_vrv}", "encryption": "none" }] 697 | }] 698 | }, 699 | "streamSettings": { 700 | "network": "grpc", 701 | "grpcSettings": { "serviceName": "${path_xhttp}11", "multiMode": false }, 702 | "security": "tls", 703 | "tlsSettings": { "serverName": "$DOMAIN", "alpn": ["h2"], "fingerprint": "chrome" } 704 | } 705 | }' 706 | 707 | # --- 4. VLESS WebSocket (Внутренний Fallback Xray path...22) --- 708 | OUT_WS='{ 709 | "tag": "proxy", 710 | "protocol": "vless", 711 | "settings": { 712 | "vnext": [{ 713 | "address": "$DOMAIN", 714 | "port": 443, 715 | "users": [{ "id": "${xray_uuid_vrv}", "encryption": "none" }] 716 | }] 717 | }, 718 | "streamSettings": { 719 | "network": "ws", 720 | "wsSettings": { "path": "/${path_xhttp}22" }, 721 | "security": "tls", 722 | "tlsSettings": { "serverName": "$DOMAIN", "fingerprint": "chrome" } 723 | } 724 | }' 725 | 726 | # --- 5. VLESS TCP Header (Внутренний Fallback Xray path...33) --- 727 | OUT_TCP_HTTP='{ 728 | "mux": { 729 | "concurrency": 5, 730 | "enabled": true, 731 | "xudpConcurrency": 8, 732 | "xudpProxyUDP443": "allow" 733 | }, 734 | "tag": "proxy", 735 | "protocol": "vless", 736 | "settings": { 737 | "vnext": [{ 738 | "address": "$DOMAIN", 739 | "port": 443, 740 | "users": [{ "id": "${xray_uuid_vrv}", "encryption": "none" }] 741 | }] 742 | }, 743 | "streamSettings": { 744 | "network": "raw", 745 | "rawSettings": { 746 | "header": { "type": "http", "request": { "path": ["/${path_xhttp}33"] } } 747 | }, 748 | "security": "tls", 749 | "tlsSettings": { "serverName": "$DOMAIN", "fingerprint": "chrome" } 750 | } 751 | }' 752 | 753 | # --- 6. ShadowSocks 2022 (Порт 8443) --- 754 | OUT_SS='{ 755 | "tag": "proxy", 756 | "protocol": "shadowsocks", 757 | "settings": { 758 | "servers": [{ 759 | "address": "$DOMAIN", 760 | "port": 8443, 761 | "method": "2022-blake3-aes-256-gcm", 762 | "password": "${xray_sspasw_vrv}" 763 | }] 764 | } 765 | }' 766 | 767 | # 3. Сборка и генерация файла 768 | # Используем subshell ( ) чтобы объединить выводы и передать в envsubst один раз 769 | ( 770 | echo "[" 771 | print_config "$OUT_VISION" "🇪🇺 VLESS RAW XTLS-Vision" 772 | echo "," 773 | print_config "$OUT_XHTTP" "🇪🇺 VLESS XHTTP TLS EXTRA" 774 | echo "," 775 | print_config "$OUT_GRPC" "🇪🇺 VLESS gRPC TLS" 776 | echo "," 777 | print_config "$OUT_WS" "🇪🇺 VLESS WebSocket TLS" 778 | echo "," 779 | print_config "$OUT_TCP_HTTP" "🇪🇺 VLESS RAW TLS MUX" 780 | echo "," 781 | print_config "$OUT_SS" "🇪🇺 ShadowSocks2022" 782 | echo "]" 783 | ) | envsubst > "$WEB_PATH/$path_subpage.json" 784 | 785 | 786 | # Перезапуск Xray 787 | echo "Перезапуск Xray..." 788 | systemctl restart xray 789 | echo -e "Готово!\n" 790 | 791 | # Формирование ссылок 792 | subPageLink="https://$DOMAIN/$path_subpage.json" 793 | 794 | # Формирование ссылок 795 | link01="vless://${xray_uuid_vrv}@$DOMAIN:443?security=tls&type=tcp&headerType=&path=&host=&flow=xtls-rprx-vision&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#vlessTCPxtlsVision-autoXRAY" 796 | 797 | link012="vless://${xray_uuid_vrv}@$DOMAIN:443?security=tls&type=tcp&headerType=http&path=%2F${path_xhttp}33&host=&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#vlessTCPtls-autoXRAY" 798 | 799 | link02="vless://${xray_uuid_vrv}@$DOMAIN:443?security=tls&type=xhttp&headerType=&path=%2F${path_xhttp}&host=&mode=auto&extra=%7B%22xmux%22%3A%7B%22cMaxReuseTimes%22%3A%221000-3000%22%2C%22maxConcurrency%22%3A%223-5%22%2C%22maxConnections%22%3A0%2C%22hKeepAlivePeriod%22%3A0%2C%22hMaxRequestTimes%22%3A%22400-700%22%2C%22hMaxReusableSecs%22%3A%221200-1800%22%7D%2C%22headers%22%3A%7B%7D%2C%22noGRPCHeader%22%3Afalse%2C%22xPaddingBytes%22%3A%22400-800%22%2C%22scMaxEachPostBytes%22%3A1500000%2C%22scMinPostsIntervalMs%22%3A20%2C%22scStreamUpServerSecs%22%3A%2260-240%22%7D&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#vlessXHTTPtls-autoXRAY" 800 | 801 | link03="vless://${xray_uuid_vrv}@$DOMAIN:443?security=tls&type=ws&headerType=&path=%2F${path_xhttp}22&host=&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#vlessWStls-autoXRAY" 802 | 803 | link04="vless://${xray_uuid_vrv}@$DOMAIN:443?security=tls&type=grpc&headerType=&serviceName=${path_xhttp}11&host=&sni=$DOMAIN&fp=chrome&pbk=${xray_publicKey_vrv}&sid=${xray_shortIds_vrv}&spx=%2F#vlessGRPCtls-autoXRAY" 804 | 805 | 806 | ENCODED_STRING=$(echo -n "2022-blake3-aes-256-gcm:${xray_sspasw_vrv}" | base64 -w 0) 807 | linkSS="ss://${ENCODED_STRING}@${DOMAIN}:8443#Shadowsocks2022-autoXRAY" 808 | 809 | configListLink="https://$DOMAIN/$path_subpage.html" 810 | 811 | 812 | # Создаем html файл с конфигами 813 | cat > "$WEB_PATH/$path_subpage.html" < 815 | 816 | 817 | 818 | 819 | 820 | AutoXRAY configs 821 | 892 | 910 | 911 | 912 | 913 |

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

914 |
915 | 916 | 917 |
918 | 919 |

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

920 |

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

921 | 925 | 926 |

➡️ vless TCP xtls-Vision

927 |
928 |
$link01
929 | 930 |
931 | 932 |

➡️ vless TCP tls

933 |
934 |
$link012
935 | 936 |
937 | 938 |

➡️ vless XHTTP tls

939 |
940 |
$link02
941 | 942 |
943 | 944 |

➡️ vless WS tls

945 |
946 |
$link03
947 | 948 |
949 | 950 |

➡️ vless GRPC tls

951 |
952 |
$link04
953 | 954 |
955 | 956 |

➡️ Shadowsocks2022blake3 - новый и быстрый

957 |
958 |
$linkSS
959 | 960 |
961 | 962 |

💠 Все конфиги вместе

963 |
964 | 965 |
$link01
$link012
$link02
$link03
$link04
$linkSS
966 | 967 |
968 | 969 | 970 | 971 | EOF 972 | 973 | 974 | 975 | echo -e " 976 | Ваша json страничка подписки: 977 | \033[32m$subPageLink\033[0m 978 | 979 | Ссылка на сохраненные конфиги: 980 | \033[32m$configListLink\033[0m 981 | 982 | Скопируйте подписку в специализированное приложение: 983 | - iOS: Happ или v2RayTun или v2rayN 984 | - Android: Happ или v2RayTun или v2rayNG 985 | - Windows: конфиги Happ или winLoadXRAY или v2rayN 986 | для vless v2RayTun или Throne 987 | 988 | Открыт локальный socks5 на порту 10808, 2080 и http на 10809. 989 | 990 | Поддержать автора: https://github.com/xVRVx/autoXRAY 991 | 992 | v444 993 | " 994 | --------------------------------------------------------------------------------