Перейти к содержимому
NEWЧат с 15 ИИ-моделями — попробуйте бесплатно / имейте совесть, когда будете делиться или копировать
>AISTUDY_

VPN и оплата AI-подписок

Назначение этой страницы

Это не материал по обходу блокировок. Данная страница — техническая документация в составе бесплатного образовательного курса «AI-агенты: от основ к практике». Её цель — обеспечить доступ к образовательным и практическим ресурсам: Claude API, OpenAI API, Cursor, GitHub Copilot и другим профессиональным инструментам, которые ограничивают доступ по геолокации.

Настройка собственного VPN-сервера — стандартная практика системного администрирования, описанная в документации Ubuntu, Red Hat, DigitalOcean и других платформ. Страница не является рекламой VPN-сервисов и не предоставляет услуги VPN третьим лицам.

Ст. 15.8 ФЗ-149: ограничения распространяются на операторов VPN-сервисов и владельцев анонимайзеров. Использование VPN для личных и профессиональных целей не является правонарушением.

Эта страница — часть курса по работе с AI-инструментами. Многие профессиональные сервисы (Claude API, OpenAI, Cursor) ограничивают доступ по геолокации. Собственный VPN-сервер — стандартная практика для разработчиков и специалистов по всему миру.

Всё, что нужно для доступа к рабочим AI-сервисам: свой VPN за 5 минут, оплата без иностранной карты, регистрация с виртуальным номером.

Что понадобится

  • VPS-сервер за пределами РФ — от 100 руб/мес (если никогда не работали с серверами — наш гайд «VDS для начинающих» поможет разобраться за 10 минут)
  • 5 минут времени
  • Базовые навыки — скопировать команду в терминал
VPS

Где арендовать сервер?

Рекомендуем FirstVDS — серверы в Нидерландах и Казахстане, оплата в рублях, от 100 руб/мес. Выбирайте Ubuntu 22.04/24.04, минимум 1 ГБ RAM.

FirstVDS →
ПРОМОКОД: 6481165030 -25%

Способ 1: Автоматический скрипт

Одна команда — и через 3 минуты VPN работает. Скрипт установит 3x-ui, настроит VLESS + Reality, создаст пользователя и выдаст готовую ссылку для подключения.

Шаг 1. Скачайте и запустите

Подключитесь к серверу по SSH. Рекомендуем сначала скачать и просмотреть скрипт, а потом запустить:

рекомендуемый способ
# 1. Скачать скрипт
curl -sL https://ai.arckep.ru/deploy-vpn.sh -o deploy-vpn.sh

# 2. Просмотреть (убедиться что всё безопасно)
cat deploy-vpn.sh

# 3. Запустить
sudo bash deploy-vpn.sh

С указанием имени клиента:

bash
sudo bash deploy-vpn.sh --name "Моё имя"
Посмотреть содержимое скрипта deploy-vpn.sh
deploy-vpn.sh — 368 строк
#!/bin/bash
# ═══════════════════════════════════════════════════════════
#  VPN Server Quick Deploy — VLESS + Reality
#  Устанавливает 3x-ui, создаёт пользователя, выводит конфиг
#
#  Использование:
#    bash deploy-vpn.sh                              # на сервере
#    ssh root@IP 'bash -s' < deploy-vpn.sh           # удалённо
#    ssh user@IP 'sudo bash -s' < deploy-vpn.sh      # через sudo
#
#  Опции:
#    --name NAME    Имя клиента (по умолчанию: client1)
#    --port PORT    Порт для VPN (по умолчанию: случайный)
# ═══════════════════════════════════════════════════════════
set -euo pipefail

# ── Цвета ──
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'
CYAN='\033[0;36m'; BOLD='\033[1m'; NC='\033[0m'

# ── Параметры командной строки ──
CLIENT_NAME="client1"
CUSTOM_PORT=""

while [[ $# -gt 0 ]]; do
    case $1 in
        --name) CLIENT_NAME="$2"; shift 2 ;;
        --port) CUSTOM_PORT="$2"; shift 2 ;;
        *) echo "Неизвестный параметр: $1"; exit 1 ;;
    esac
done

# ── Проверки ──
if [[ $EUID -ne 0 ]]; then
    echo -e "${RED}Запустите от root: sudo bash deploy-vpn.sh${NC}"
    exit 1
fi

# ── Генерация случайных значений ──
rand_port() { shuf -i 10000-59999 -n 1; }
rand_hex() { openssl rand -hex "$1"; }

PANEL_PORT=$(rand_port)
INBOUND_PORT=${CUSTOM_PORT:-$(rand_port)}
while [[ "$INBOUND_PORT" == "$PANEL_PORT" ]]; do
    INBOUND_PORT=$(rand_port)
done

WEB_BASE_PATH="/$(rand_hex 10)/"
ADMIN_USER="admin"
ADMIN_PASS=$(rand_hex 8)

# ── Определение IP ──
SERVER_IP=$(curl -s4 --max-time 5 ifconfig.me 2>/dev/null \
    || curl -s4 --max-time 5 ip.sb 2>/dev/null \
    || curl -s4 --max-time 5 ipinfo.io/ip 2>/dev/null \
    || echo "UNKNOWN")

if [[ "$SERVER_IP" == "UNKNOWN" ]]; then
    echo -e "${RED}Не удалось определить внешний IP${NC}"
    exit 1
fi

SNI_DOMAIN="www.amd.com"
TARGET_DEST="www.amd.com:443"

echo -e "${CYAN}╔═══════════════════════════════════════════╗${NC}"
echo -e "${CYAN}║   VPN Quick Deploy — VLESS + Reality      ║${NC}"
echo -e "${CYAN}╠═══════════════════════════════════════════╣${NC}"
echo -e "${CYAN}║  Сервер:  ${GREEN}${SERVER_IP}${NC}"
echo -e "${CYAN}║  Клиент:  ${GREEN}${CLIENT_NAME}${NC}"
echo -e "${CYAN}╚═══════════════════════════════════════════╝${NC}"

# ═══════════════════════════════════════════
# Шаг 1: Система + BBR
# ═══════════════════════════════════════════
echo -e "\n${GREEN}[1/6]${NC} Настройка системы..."

export DEBIAN_FRONTEND=noninteractive
apt-get update -qq > /dev/null 2>&1
apt-get install -y -qq curl wget sqlite3 > /dev/null 2>&1

# BBR
if ! sysctl net.ipv4.tcp_congestion_control 2>/dev/null | grep -q bbr; then
    cat >> /etc/sysctl.conf << 'SYSCTL'
# VPN Optimization
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_mtu_probing = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
SYSCTL
    sysctl -p > /dev/null 2>&1
    echo -e "  BBR ${GREEN}включён${NC}"
else
    echo -e "  BBR ${GREEN}уже активен${NC}"
fi

# ═══════════════════════════════════════════
# Шаг 2: Открытие портов (все способы)
# ═══════════════════════════════════════════
echo -e "\n${GREEN}[2/6]${NC} Открытие портов ${BOLD}${PANEL_PORT}${NC} и ${BOLD}${INBOUND_PORT}${NC}..."

open_ports() {
    local ports=("$@")
    local opened=false

    # --- UFW ---
    if command -v ufw &>/dev/null; then
        # Включить если не активен
        if ! ufw status 2>/dev/null | grep -q "active"; then
            ufw --force enable > /dev/null 2>&1 || true
            ufw default allow outgoing > /dev/null 2>&1
            ufw default deny incoming > /dev/null 2>&1
            ufw allow ssh > /dev/null 2>&1
        fi
        for p in "${ports[@]}"; do
            ufw allow "$p"/tcp > /dev/null 2>&1
        done
        ufw reload > /dev/null 2>&1 || true
        echo -e "  ufw: порты ${GREEN}открыты${NC}"
        opened=true
    fi

    # --- firewalld ---
    if command -v firewall-cmd &>/dev/null && systemctl is-active --quiet firewalld 2>/dev/null; then
        for p in "${ports[@]}"; do
            firewall-cmd --permanent --add-port="$p"/tcp > /dev/null 2>&1
        done
        firewall-cmd --reload > /dev/null 2>&1
        echo -e "  firewalld: порты ${GREEN}открыты${NC}"
        opened=true
    fi

    # --- iptables (fallback) ---
    if command -v iptables &>/dev/null; then
        for p in "${ports[@]}"; do
            # Проверяем, нет ли уже правила
            if ! iptables -C INPUT -p tcp --dport "$p" -j ACCEPT 2>/dev/null; then
                iptables -I INPUT -p tcp --dport "$p" -j ACCEPT 2>/dev/null || true
            fi
        done
        # Сохраняем правила если есть инструмент
        if command -v netfilter-persistent &>/dev/null; then
            netfilter-persistent save > /dev/null 2>&1 || true
        elif command -v iptables-save &>/dev/null; then
            iptables-save > /etc/iptables.rules 2>/dev/null || true
        fi
        if [[ "$opened" == false ]]; then
            echo -e "  iptables: порты ${GREEN}открыты${NC}"
        fi
    fi
}

open_ports "$PANEL_PORT" "$INBOUND_PORT"

# ═══════════════════════════════════════════
# Шаг 3: Установка 3x-ui
# ═══════════════════════════════════════════
echo -e "\n${GREEN}[3/6]${NC} Установка 3x-ui..."

if [[ -f /usr/local/x-ui/x-ui ]]; then
    echo -e "  3x-ui ${GREEN}уже установлен${NC}, пропускаю"
else
    INSTALL_SCRIPT=$(curl -Ls https://raw.githubusercontent.com/MHSanaei/3x-ui/master/install.sh)
    printf 'y\n\n\n\n\n\n\n\n\n\n' | timeout 180 bash -c "$INSTALL_SCRIPT" > /tmp/x-ui-install.log 2>&1 || true

    if [[ -f /usr/local/x-ui/x-ui ]]; then
        echo -e "  3x-ui ${GREEN}установлен${NC}"
    else
        echo -e "  ${RED}Ошибка установки!${NC} Лог: /tmp/x-ui-install.log"
        exit 1
    fi
fi

# Убедиться что сервис запущен (нужен для CLI-команд)
systemctl start x-ui 2>/dev/null || true
sleep 3

# ═══════════════════════════════════════════
# Шаг 4: Конфигурация панели через CLI
# ═══════════════════════════════════════════
echo -e "\n${GREEN}[4/6]${NC} Конфигурация панели..."

# CLI x-ui setting — надёжнее чем прямая запись в SQLite
/usr/local/x-ui/x-ui setting -port "$PANEL_PORT" > /dev/null 2>&1
/usr/local/x-ui/x-ui setting -webBasePath "$WEB_BASE_PATH" > /dev/null 2>&1
/usr/local/x-ui/x-ui setting -username "$ADMIN_USER" -password "$ADMIN_PASS" > /dev/null 2>&1

echo -e "  Панель: порт ${GREEN}${PANEL_PORT}${NC}, путь ${GREEN}${WEB_BASE_PATH}${NC}"

# ═══════════════════════════════════════════
# Шаг 5: Генерация ключей + создание inbound
# ═══════════════════════════════════════════
echo -e "\n${GREEN}[5/6]${NC} Создание VLESS Reality..."

XRAY_BIN="/usr/local/x-ui/bin/xray-linux-amd64"
if [[ ! -f "$XRAY_BIN" ]]; then
    XRAY_BIN=$(find /usr/local/x-ui/bin/ -name "xray-linux-*" -type f | head -1)
fi

# Reality keypair: строка 1 = PrivateKey, строка 2 = PublicKey (Password в новых версиях)
REALITY_OUTPUT=$("$XRAY_BIN" x25519 2>/dev/null)
PRIVATE_KEY=$(echo "$REALITY_OUTPUT" | sed -n '1s/.*: *//p')
PUBLIC_KEY=$(echo "$REALITY_OUTPUT" | sed -n '2s/.*: *//p')

if [[ -z "$PRIVATE_KEY" || -z "$PUBLIC_KEY" || ${#PRIVATE_KEY} -lt 30 || ${#PUBLIC_KEY} -lt 30 ]]; then
    echo -e "  ${RED}Ошибка генерации ключей Reality${NC}"
    echo "$REALITY_OUTPUT"
    exit 1
fi

CLIENT_UUID=$("$XRAY_BIN" uuid 2>/dev/null || cat /proc/sys/kernel/random/uuid)

SID1=$(rand_hex 2); SID2=$(rand_hex 1); SID3=$(rand_hex 3); SID4=$(rand_hex 4)
SID5=$(rand_hex 5); SID6=$(rand_hex 7); SID7=$(rand_hex 6); SID8=$(rand_hex 8)

CLIENT_EMAIL=$(rand_hex 4)
CLIENT_SUB=$(rand_hex 8)
NOW_MS=$(date +%s)000

# Записываем inbound в БД (для inbound CLI не подходит — только SQLite)
DB_PATH="/etc/x-ui/x-ui.db"

sqlite3 "$DB_PATH" "DELETE FROM inbounds;"

SETTINGS="{\"clients\":[{\"id\":\"${CLIENT_UUID}\",\"email\":\"${CLIENT_EMAIL}\",\"enable\":true,\"flow\":\"\",\"comment\":\"${CLIENT_NAME}\",\"expiryTime\":0,\"limitIp\":0,\"totalGB\":0,\"reset\":0,\"subId\":\"${CLIENT_SUB}\",\"tgId\":\"\",\"created_at\":${NOW_MS},\"updated_at\":${NOW_MS}}],\"decryption\":\"none\",\"encryption\":\"none\"}"

STREAM="{\"network\":\"tcp\",\"security\":\"reality\",\"externalProxy\":[],\"realitySettings\":{\"show\":false,\"xver\":0,\"target\":\"${TARGET_DEST}\",\"serverNames\":[\"${SNI_DOMAIN}\",\"amd.com\"],\"privateKey\":\"${PRIVATE_KEY}\",\"minClientVer\":\"\",\"maxClientVer\":\"\",\"maxTimediff\":0,\"shortIds\":[\"${SID1}\",\"${SID2}\",\"${SID3}\",\"${SID4}\",\"${SID5}\",\"${SID6}\",\"${SID7}\",\"${SID8}\"],\"settings\":{\"publicKey\":\"${PUBLIC_KEY}\",\"fingerprint\":\"chrome\",\"serverName\":\"\",\"spiderX\":\"/\"}},\"tcpSettings\":{\"acceptProxyProtocol\":false,\"header\":{\"type\":\"http\",\"request\":{\"version\":\"1.1\",\"method\":\"GET\",\"path\":[\"/\"],\"headers\":{}},\"response\":{\"version\":\"1.1\",\"status\":\"200\",\"reason\":\"OK\",\"headers\":{}}}},\"sockopt\":{\"tcpFastOpen\":true,\"tcpMptcp\":true,\"domainStrategy\":\"UseIP\",\"tcpMaxSeg\":1440,\"tcpKeepAliveInterval\":25,\"tcpKeepAliveIdle\":300,\"tcpUserTimeout\":10000,\"tcpcongestion\":\"bbr\",\"tcpWindowClamp\":600}}"

SNIFFING="{\"enabled\":true,\"destOverride\":[\"http\",\"tls\",\"quic\",\"fakedns\"],\"metadataOnly\":false,\"routeOnly\":false}"

sqlite3 "$DB_PATH" "INSERT INTO inbounds (user_id, up, down, total, remark, enable, expiry_time, listen, port, protocol, settings, stream_settings, tag, sniffing) VALUES (1, 0, 0, 0, 'VLESS-Reality', 1, 0, '', ${INBOUND_PORT}, 'vless', '${SETTINGS}', '${STREAM}', 'inbound-${INBOUND_PORT}', '${SNIFFING}');"

echo -e "  VLESS Reality на порту ${GREEN}${INBOUND_PORT}${NC} ${GREEN}✓${NC}"

# Перезапуск чтобы применить ВСЕ изменения (и CLI, и SQLite)
systemctl restart x-ui
sleep 3

if systemctl is-active --quiet x-ui; then
    echo -e "  Сервис ${GREEN}запущен${NC}"
else
    echo -e "  ${RED}Ошибка запуска!${NC} Проверьте: journalctl -u x-ui -n 50"
    exit 1
fi

# ═══════════════════════════════════════════
# Шаг 6: Проверка и вывод результатов
# ═══════════════════════════════════════════
echo -e "\n${GREEN}[6/6]${NC} Проверка доступности портов..."

# Проверяем что порты слушают локально
PANEL_LISTENING=$(ss -tlnp | grep -c ":${PANEL_PORT}" || true)
VPN_LISTENING=$(ss -tlnp | grep -c ":${INBOUND_PORT}" || true)

if [[ "$PANEL_LISTENING" -eq 0 ]]; then
    echo -e "  ${YELLOW}⚠ Панель не слушает порт ${PANEL_PORT}${NC}"
    # Попробуем узнать реальный порт
    ACTUAL_PANEL=$(ss -tlnp | grep x-ui | grep -v xray | head -1 | awk '{print $4}' | rev | cut -d: -f1 | rev)
    if [[ -n "$ACTUAL_PANEL" ]]; then
        PANEL_PORT="$ACTUAL_PANEL"
        echo -e "  Панель слушает на порту ${GREEN}${PANEL_PORT}${NC} — использую его"
        open_ports "$PANEL_PORT"
    fi
else
    echo -e "  Панель (${PANEL_PORT}) ${GREEN}слушает${NC}"
fi

if [[ "$VPN_LISTENING" -eq 0 ]]; then
    echo -e "  ${RED}✗ VPN не слушает порт ${INBOUND_PORT}!${NC}"
else
    echo -e "  VPN (${INBOUND_PORT}) ${GREEN}слушает${NC}"
fi

# Проверяем доступность снаружи (через внешний сервис)
echo -e "  Проверяю доступность извне..."
VPN_EXTERNAL=$(curl -s --max-time 5 "https://portcheck.transmissionbt.com/${INBOUND_PORT}" 2>/dev/null || true)
# Альтернативный способ — пробуем подключиться через curl к самому себе
VPN_REACHABLE="unknown"
if timeout 3 bash -c "echo > /dev/tcp/${SERVER_IP}/${INBOUND_PORT}" 2>/dev/null; then
    VPN_REACHABLE="open"
fi

VLESS_LINK="vless://${CLIENT_UUID}@${SERVER_IP}:${INBOUND_PORT}?type=tcp&security=reality&pbk=${PUBLIC_KEY}&fp=chrome&sni=${SNI_DOMAIN}&sid=${SID1}&spx=%2F&headerType=http&path=%2F#VPN-${SERVER_IP}"
PANEL_URL="http://${SERVER_IP}:${PANEL_PORT}${WEB_BASE_PATH}"

echo ""
echo -e "${CYAN}═══════════════════════════════════════════${NC}"
echo -e "${CYAN}  ${BOLD}ПАНЕЛЬ УПРАВЛЕНИЯ${NC}"
echo -e "${CYAN}═══════════════════════════════════════════${NC}"
echo -e "  URL:     ${GREEN}${PANEL_URL}${NC}"
echo -e "  Логин:   ${GREEN}${ADMIN_USER}${NC}"
echo -e "  Пароль:  ${GREEN}${ADMIN_PASS}${NC}"

echo ""
echo -e "${CYAN}═══════════════════════════════════════════${NC}"
echo -e "${CYAN}  ${BOLD}ССЫЛКА ДЛЯ ПОДКЛЮЧЕНИЯ${NC}"
echo -e "${CYAN}═══════════════════════════════════════════${NC}"
echo -e "  Скопируйте в VPN-приложение:\n"
echo -e "  ${GREEN}${VLESS_LINK}${NC}"

echo ""
echo -e "${CYAN}═══════════════════════════════════════════${NC}"
echo -e "${CYAN}  ${BOLD}КАК ПОДКЛЮЧИТЬСЯ${NC}"
echo -e "${CYAN}═══════════════════════════════════════════${NC}"
echo -e "  ${BOLD}iPhone/iPad:${NC}  Streisand или V2Box (App Store)"
echo -e "  ${BOLD}Android:${NC}      V2RayNG или Hiddify (Google Play)"
echo -e "  ${BOLD}Windows:${NC}      Hiddify или V2RayN"
echo -e "  ${BOLD}macOS:${NC}        Hiddify или V2RayN"
echo ""
echo -e "  1. Установите приложение"
echo -e "  2. Нажмите '+' → 'Импорт из буфера' или 'Add from clipboard'"
echo -e "  3. Вставьте ссылку выше"
echo -e "  4. Подключайтесь!"

# Предупреждение если порты недоступны
if [[ "$VPN_REACHABLE" != "open" ]]; then
    echo ""
    echo -e "${YELLOW}═══════════════════════════════════════════${NC}"
    echo -e "${YELLOW}  ⚠  ПОРТЫ МОГУТ БЫТЬ ЗАКРЫТЫ ПРОВАЙДЕРОМ${NC}"
    echo -e "${YELLOW}═══════════════════════════════════════════${NC}"
    echo -e "  Порт ${INBOUND_PORT} слушает, но может быть заблокирован"
    echo -e "  на уровне хостинга (внешний файрвол)."
    echo ""
    echo -e "  ${BOLD}Что сделать:${NC}"
    echo -e "  1. Откройте панель управления вашего хостинга"
    echo -e "  2. Найдите раздел Firewall / Security Groups / Сеть"
    echo -e "  3. Разрешите входящий TCP на порты:"
    echo -e "     - ${BOLD}${INBOUND_PORT}${NC} (VPN)"
    echo -e "     - ${BOLD}${PANEL_PORT}${NC} (панель управления)"
    echo ""
    echo -e "  ${BOLD}Или:${NC} Hetzner, DigitalOcean, Vultr — обычно все"
    echo -e "  порты открыты по умолчанию."
fi

echo ""
echo -e "${CYAN}═══════════════════════════════════════════${NC}"
echo -e "${CYAN}  ${BOLD}ДОБАВИТЬ ПОЛЬЗОВАТЕЛЯ${NC}"
echo -e "${CYAN}═══════════════════════════════════════════${NC}"
echo -e "  Откройте панель → Inbounds → VLESS-Reality"
echo -e "  → кнопка '+' рядом с клиентами"

echo ""
echo -e "${YELLOW}⚠  Сохраните эту информацию! Повторно она не покажется.${NC}"
echo ""

# ── Сохранить в файл ──
CREDS_FILE="/root/vpn-credentials.txt"
cat > "$CREDS_FILE" << CREDEOF
VPN Server Credentials
Created: $(date '+%Y-%m-%d %H:%M')
Server:  ${SERVER_IP}

Panel URL:   ${PANEL_URL}
Login:       ${ADMIN_USER}
Password:    ${ADMIN_PASS}

VLESS Link:  ${VLESS_LINK}

Client:      ${CLIENT_NAME}
Protocol:    VLESS + Reality
VPN Port:    ${INBOUND_PORT}
Panel Port:  ${PANEL_PORT}
CREDEOF
chmod 600 "$CREDS_FILE"
echo -e "${GREEN}Данные сохранены в ${CREDS_FILE}${NC}\n"

Шаг 2. Сохраните данные

После установки скрипт покажет:

  • Панель управления — URL, логин и пароль для веб-интерфейса
  • VLESS-ссылку — для вставки в VPN-приложение

Сохраните эту информацию. Данные также записываются в файл /root/vpn-credentials.txt на сервере.

Шаг 3. Подключитесь

Скопируйте VLESS-ссылку и вставьте в приложение (см. раздел «Приложения для подключения» ниже).

Безопасность: скрипт генерирует случайные порты и пароли, но после установки рекомендуется зайти в панель и сменить порт панели и порт VPN-подключения на свои. Стандартные порты — первые цели для сканеров. Случайные порты в диапазоне 10000–65000 значительно снижают риск обнаружения.

Что делает скрипт

  • Включает BBR — ускорение TCP для VPN
  • Устанавливает 3x-ui — панель управления VPN
  • Создаёт VLESS + Reality — современный протокол с шифрованием соединения
  • Открывает порты в файрволе (ufw, firewalld, iptables)
  • Генерирует случайные ключи, порты и пароли
  • Проверяет доступность и предупреждает о проблемах

Способ 2: Ручная установка

Если предпочитаете контролировать каждый шаг.

1. Подключитесь к серверу

ssh root@ваш-IP-сервера

2. Обновите систему и включите BBR

bash
# Обновление
apt update && apt upgrade -y

# Включение BBR (ускорение TCP)
echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf
sysctl -p

3. Установите 3x-ui

bash
bash <(curl -Ls https://raw.githubusercontent.com/MHSanaei/3x-ui/master/install.sh)

Установщик спросит подтверждение — нажмите y и Enter. После установки панель запустится автоматически.

4. Настройте панель

Смените логин, пароль и порт панели:

bash
# Смена логина и пароля
/usr/local/x-ui/x-ui setting -username admin -password ВашНовыйПароль

# Смена порта панели (любой свободный)
/usr/local/x-ui/x-ui setting -port 54321

# Перезапуск
systemctl restart x-ui

Откройте панель в браузере: http://IP-сервера:54321

5. Создайте VLESS Reality подключение

В панели 3x-ui:

  1. Перейдите в Inbounds (Входящие подключения)
  2. Нажмите Add Inbound (Добавить)
  3. Заполните:
    • Remark: любое имя (например, VPN)
    • Protocol: vless
    • Port: любой свободный (например, 43567)
    • Transport: tcp
    • Security: reality
    • Dest (Target): www.amd.com:443
    • SNI: www.amd.com
    • Нажмите Get New Cert — сгенерирует Reality-ключи
    • Client Fingerprint: chrome
    • ShortID: нажмите Generate
  4. Нажмите Add

6. Получите ссылку для подключения

В списке Inbounds найдите созданное подключение и нажмите значок QR-код или Copy Link. Скопируйте VLESS-ссылку — она начинается с vless://.

7. Откройте порт в файрволе

Если на сервере включён файрвол:

bash
# UFW (Ubuntu/Debian)
ufw allow 43567/tcp
ufw allow 54321/tcp

# Firewalld (CentOS/RHEL/Fedora)
firewall-cmd --permanent --add-port=43567/tcp
firewall-cmd --permanent --add-port=54321/tcp
firewall-cmd --reload

# iptables (если нет ufw/firewalld)
iptables -I INPUT -p tcp --dport 43567 -j ACCEPT
iptables -I INPUT -p tcp --dport 54321 -j ACCEPT

# Сохранить правила iptables (Ubuntu/Debian)
apt install -y iptables-persistent
netfilter-persistent save

# Сохранить правила iptables (CentOS/RHEL)
service iptables save

# nftables (современная замена iptables)
nft add rule inet filter input tcp dport 43567 accept
nft add rule inet filter input tcp dport 54321 accept

Важно: некоторые хостинги (Timeweb, Reg.ru, FirstVDS) блокируют порты на уровне инфраструктуры. Если порт открыт в системе, но не доступен извне — откройте его в панели управления хостинга (раздел Firewall / Security Groups / Сеть). На FirstVDS, Hetzner, Vultr, DigitalOcean все порты открыты по умолчанию.

Безопасность: после установки рекомендуется сменить порты панели и VPN-подключения на нестандартные. Стандартные порты (2053, 443, 8443) — первые цели сканеров. Используйте случайные порты в диапазоне 10000–65000. Смените в панели 3x-ui: Settings → Panel Port и в настройках Inbound. Не забудьте открыть новые порты в файрволе.

Приложения для подключения

Вставьте VLESS-ссылку в одно из приложений:

V2Box

iPhone, iPad, macOS, Android

Простой и красивый клиент. Поддерживает VLESS Reality из коробки. Без регистрации, не собирает логи.

V2RayTun

iPhone, iPad, macOS, Android

Стабильный клиент с поддержкой Reality. Не собирает данные, импорт по QR-коду и из буфера.

V2RayNG

Android

Самый популярный клиент для Android. Легкий, надёжный.

Google Play →

Hiddify

Windows, macOS, Linux, Android, iOS

Кросс-платформенный клиент. Работает везде, open-source.

GitHub Releases →

Как добавить конфиг в приложение

  1. Скопируйте VLESS-ссылку (начинается с vless://)
  2. Откройте приложение
  3. Нажмите +Import from clipboard (или «Импорт из буфера»)
  4. Конфигурация добавится автоматически
  5. Нажмите кнопку Connect (подключиться)

Подключение и оплата подписок

VPN — первый шаг. Дальше нужно зарегистрироваться и оплатить подписку на AI-сервис. Вот как это сделать из России.

Оплата без иностранной карты

Сервис МТС Оплата позволяет оплачивать зарубежные подписки рублями через СБП или российскую банковскую карту.

МТС

МТС Оплата — зарубежные подписки

34+ сервисов: ChatGPT, Claude, Cursor, Midjourney, Figma, Spotify, Netflix и другие. Оплата через СБП или карту, ваучер на почту за 15 минут. Комиссия 0 ₽.

Как это работает:

  1. Откройте payment.mts.ru/tools и выберите сервис
  2. Укажите email и выберите номинал подписки
  3. Оплатите через СБП или банковскую карту
  4. Получите ваучер с инструкцией на почту (до 15 минут)
  5. Активируйте подписку по инструкции из письма

Важно: ваучеры МТС работают для аккаунтов региона США. При регистрации нового аккаунта используйте почту gmail.com и VPN с американским IP.

Регистрация с иностранным номером

Многие AI-сервисы (ChatGPT, Claude) требуют иностранный номер телефона при регистрации. Сервис HeroSMS позволяет получить виртуальный номер из 180+ стран для приёма SMS. Интерфейс на английском, но принимает оплату из России.

SIM

HeroSMS — виртуальные номера

Виртуальные номера из 180+ стран для приёма SMS. Номера для 700+ сервисов и приложений. Сайт на английском языке, но принимает СБП и карты Мир.

Способы оплаты из России:

  • СБП по QR-коду — комиссия 6% (самый выгодный)
  • Российские банковские карты (Мир) — комиссия 10.5%
  • Visa / Mastercard — комиссия 7% + $0.25
  • Криптовалюта — Bitcoin, USDT, ETH и другие

Как зарегистрироваться в AI-сервисе:

  1. Зарегистрируйтесь на hero-sms.com и пополните баланс
  2. Выберите сервис (OpenAI / Claude) и страну (Великобритания, Нидерланды и др.)
  3. Получите виртуальный номер — он активен 20 минут
  4. Укажите этот номер при регистрации в AI-сервисе
  5. SMS с кодом подтверждения появится на сайте HeroSMS
HeroSMS →

Мы не связаны с HeroSMS и не несём ответственности за работу сервиса — просто подсказываем рабочий вариант. Как и с любым подобным сервисом, не храните крупные суммы на балансе — пополняйте ровно столько, сколько нужно для конкретной активации.

Совет: включите VPN (США или Великобритания) до начала регистрации в AI-сервисе. Сервисы проверяют IP при создании аккаунта, а не только при входе.

Решение проблем

Не подключается

  • Проверьте, что порт VPN открыт в файрволе сервера и в панели хостинга
  • Убедитесь, что сервис работает: systemctl status x-ui
  • Проверьте порт извне: curl -v telnet://ваш-IP:порт

Панель не открывается

  • Убедитесь, что порт панели тоже открыт
  • Проверьте текущие настройки: x-ui settings
  • Попробуйте перезапуск: systemctl restart x-ui

Как добавить ещё пользователей

В панели 3x-ui: Inbounds → нажмите на подключение → кнопка + рядом с «Clients» → заполните имя → Add. Каждый пользователь получит свою уникальную ссылку.

Частые вопросы

Это легально?
Использование VPN для личных и рабочих целей в России не является административным правонарушением. Под ограничения подпадает предоставление публичных VPN-сервисов без лицензии и их реклама. Данная страница является технической документацией в составе образовательного курса.

Какой хостинг выбрать?
FirstVDS — оплата в рублях, серверы в Нидерландах/Казахстане, от 100 руб/мес, промокод 6481165030 даёт -25%. Hetzner, Vultr, DigitalOcean — тоже хороший выбор, но оплата в валюте.

Почему VLESS Reality, а не WireGuard?
WireGuard использует собственный протокол, который легко идентифицируется. VLESS Reality работает поверх стандартного TLS — это обеспечивает стабильное соединение даже в условиях нестабильной сети.

Сколько пользователей на одном сервере?
Минимальный VPS (2 ядра, 4 ГБ) выдерживает 20-50 одновременных подключений без проблем.

// Обсуждение

Можно писать анонимно. Укажите email, чтобы получать уведомления об ответах.