Xray — это инструмент, который представляет собой высокоэффективный прокси-сервер с множеством возможностей, включая использование различных протоколов, таких как VLESS и VMess, для обхода блокировок.
Все мы умеем настраивать клиента через GUI Nekobox или прочие приложения, но недавно мне понадобилось поставить клиента на домашнем Ubuntu-сервере, где доступен только терминал. А понадобилось мне оное, чтобы использовать xray как прокси (например, пустить через неё ютуб на телевизоре).
Установка Xray
Понадобится ваш личный конфиг подключения. Взять его можно, например, из Nekobox:

Итак, заходим на сервер и скачиваем репозиторий XTLS/Xray-install:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
Оттуда же обновляем geoip.dat
и geosite.dat
:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install-geodata
Далее мы должны скачать customgeo.dat и переместить на сервер в директорию /usr/local/share/xray
.
Создание конфигурации
Опишем конфигурацию по моему примеру:
config.json
{
"dns": {
"disableFallback": true,
"servers": [
{
"address": "https://8.8.8.8/dns-query",
"domains": [
"domain:youtube.com",
"domain:chat.openai.com",
"domain:openai.com",
"domain:googlevideo.com",
"domain:ytimg.com",
"domain:youtu.be",
"domain:ggpht.com",
"domain:youtubei.googleapis.com",
"domain:yt4.ggpht.com",
"domain:ytimg.l.google.com",
"domain:nhacmp3youtube.com",
"domain:googleusercontent.com",
"domain:googleapis.com",
"domain:gstatic.com"
],
"queryStrategy": ""
}
],
"tag": "dns"
},
"inbounds": [
{
"listen": "0.0.0.0",
"port": 2080,
"protocol": "socks",
"settings": {
"udp": true
},
"sniffing": {
"destOverride": [
"http",
"tls",
"quic"
],
"enabled": true
},
"tag": "socks-in"
},
{
"listen": "0.0.0.0",
"port": 2081,
"protocol": "http",
"sniffing": {
"destOverride": [
"http",
"tls",
"quic"
],
"enabled": true
},
"tag": "http-in"
}
],
"log": {
"loglevel": "warning"
},
"outbounds": [
{
"domainStrategy": "AsIs",
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "<ip-server>",
"port": 443,
"users": [
{
"encryption": "none",
"flow": "xtls-rprx-vision",
"id": "<your-id-server>"
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"realitySettings": {
"fingerprint": "chrome",
"publicKey": "<your-publicKey-server>",
"serverName": "www.google.com",
"shortId": "<your-shortId-server>"
},
"security": "reality"
},
"tag": "proxy"
},
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
],
"policy": {
"levels": {
"1": {
"connIdle": 30
}
},
"system": {
"statsOutboundDownlink": true,
"statsOutboundUplink": true
}
},
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"domain": [
"domain:youtube.com",
"domain:chat.openai.com",
"domain:openai.com",
"domain:googlevideo.com",
"domain:ytimg.com",
"domain:youtu.be",
"domain:ggpht.com",
"domain:youtubei.googleapis.com",
"domain:yt4.ggpht.com",
"domain:ytimg.l.google.com",
"domain:nhacmp3youtube.com",
"domain:googleusercontent.com",
"domain:googleapis.com",
"domain:gstatic.com"
],
"outboundTag": "proxy",
"type": "field"
},
{
"outboundTag": "direct",
"type": "field",
"domain": [
"geosite:category-ads-all",
"geosite:category-porn"
]
}
]
},
"stats": {}
}
Подставить ВАШИ данные.
Скопируем конфиг в рабочую область:
sudo cp config.json /usr/local/etc/xray/config.json
Наконец, запускаем сервис
sudo systemctl start xray
Смотрим, чтобы не было ошибок. При наличии - ищем их в файле конфигурации.
sudo systemctl status xray
Ну и если всё заработало, создадим сервис:
sudo systemctl enable xray
Запуск и использование прокси
Для HTTP соединений используем порт 2081, для SOCKS 2080. В конфиге, естественно, можно поменять порты на любые.
export http_proxy=http://127.0.0.1:2081
export https_proxy=http://127.0.0.1:2081
export ftp_proxy=http://127.0.0.1:2081
export socks_proxy=http://127.0.0.1:2080
Если включён ufw на сервере, откроем порты:
sudo ufw allow 2080/tcp
sudo ufw allow 2081/tcp
sudo iptables -A INPUT -p tcp --dport 2080 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2081 -j ACCEPT
Использование SOCKS прокси:
export SOCKS_PROXY="socks5://<IP-adress>:2080"
HTTP прокси:
export http_proxy="http://<IP-adress>:2081"
Данное прокси можно использовать где угодно в локальной сети. Я лишь покажу как пустить через него ютуб на тв.
Скачиваем SmartTube на Android TV. В общих настройках ищем "Цензура". И здесь прописываем адрес вашего прокси. Адрес сервера можно найти в настройках роутера или в терминале командой `ip addr`. Наслаждаемся.
Ссылки:
Мой wiki на GitHub. Здесь же можно найти информацию по настройке домашнего сервера.