Личный VPN на зарубежном сервере, который поднимает ваша нейросеть — Claude Code или Codex — по готовому промпту. Схема проверена 14.10.2026 из Москвы и из российского дата-центра: около 35 Мбит/с.
Отдельно разобраны грабли, на которых приложение пишет «подключено», а интернета нет. Главная из них — режим, который советует большинство инструкций: из России он не грузит ничего.
Оплата почасовая: удалили сервер — счёт остановился.
| Что | Тариф | $ в месяц |
|---|---|---|
| Сервер | 3HCloud, Shared Pool: 1 vCPU, 1 ГБ RAM | 1,50 |
| Публичный IPv4 | обязателен, без него не подключиться | 1,00 |
| Системный диск | 16 ГБ SSD Standard (минимум для Linux) | 0,32 |
| Трафик | канал 1 Гбит/с входит в цену, по гигабайтам не считают | 0 |
| Домен и сертификат | не нужны | 0 |
| Приложение Happ | бесплатное | 0 |
| Итого | ≈ 2,82 |
Для одного человека и нескольких устройств 1 ГБ памяти хватает с запасом: Xray с панелью 3X-UI занимают около 80 МБ, Ubuntu — около 250 МБ. Подписка на нейросеть в расчёт не входит: подойдёт та, что уже есть.
Наш VPN работает на 3HCloud, и проверка из России проведена именно на нём. Сервер создаётся в портале: portal.3hcloud.com → Cloud → Servers → Add.
| Поле при заказе | Что выбрать | Почему |
|---|---|---|
| Локация | Miami (запасной вариант — Dallas) | Miami проверен из РФ; сервер обязан быть за границей |
| Образ | Ubuntu 24.04 LTS или 26.04 LTS | под Ubuntu написан промпт; наш сервер на 26.04 |
| Тип и размер | Shared CPU, 1 GB 1 vCPU Shared Pool | для VPN хватает; больше нужно, только если на том же сервере будут боты или агенты |
| Диск | 16 ГБ, SSD Standard | минимум для Linux; VPN диску почти не нужен |
| Сеть | включить публичный IPv4 | к нему подключаются клиенты; IPv6 бесплатный, но его мало |
| Доступ | SSH-ключ, пароль не задавать | пароли подбирают боты. Ключ заранее: попросите нейросеть «создай SSH-ключ ed25519 и покажи публичную часть» и вставьте её при заказе |
| Бэкапы | выключить | сервер пересобирается по промпту за час |
Оплата — банковской картой: карта привязывается в Account → Billing, баланс пополняется кнопкой Top up (документация). Какие карты принимаются, в документации не сказано — проверьте свою при привязке.
Держите на VPN-сервере только VPN
Самое дешёвое сейчас не значит самое дешёвое вообще. Если поставить туда же парсеры или ботов, бан их IP на каком-нибудь сервисе заденет и VPN.
Сервер принимает подключения на одном порту 443 двумя способами: по TCP идёт XHTTP, по UDP — Hysteria2. Режим Reality на чистом TCP, который советует большинство инструкций, не включаем вовсе.
Создайте сервер, запишите его IP и вставьте текст ниже в Claude Code или Codex на своём компьютере. В первой строке подставьте IP и имена людей, для кого нужны доступы. Нейросеть сама зайдёт на сервер по SSH, всё поднимет, проверит и скажет, где лежат ссылки.
Сервер: <IP>, заход ssh root@<IP> (или пользователь из панели хостинга). Доступы нужны для: <Имя1>, <Имя2>.
Ты — администратор Linux. Подними на этом чистом Ubuntu-сервере личный VPN на 3X-UI (Xray), который работает из России. Делай сам, спрашивай меня только то, что без меня не сделать.
ИТОГОВАЯ СХЕМА (не меняй без моего согласия):
- 443/tcp — VLESS + REALITY поверх XHTTP (mode auto). НЕ RAW/TCP и НЕ flow xtls-rprx-vision: из РФ ТСПУ пропускает рукопожатие RAW-Reality, но замораживает любую загрузку.
- 443/udp — Hysteria2 на самоподписанном сертификате, в ссылке клиента обязателен pinSHA256.
- Панель 3X-UI — только на 127.0.0.1, вход через SSH-туннель. Наружу открыты только порт SSH, 443/tcp и 443/udp.
- Версии: 3X-UI v3.8.5 (внутри Xray 26.9.9) — на них схема проверена из РФ 14.10.2026. Новее — только после повторной проверки из шага 10.
ШАГИ
1. Доступ. SSH-ключ я добавил при создании сервера (не знаешь какой — найди в ~/.ssh или спроси меня).
- Заведи пользователя с входом по этому ключу и sudo без пароля: /etc/sudoers.d/90-<имя> с NOPASSWD:ALL, проверь visudo -cf. Иначе после отключения root sudo попросит пароль, которого нет.
- В ОТДЕЛЬНОЙ сессии войди новым пользователем и выполни sudo -n true. Только если прошло — иди дальше.
- Закрой вход файлом /etc/ssh/sshd_config.d/00-hardening.conf: PermitRootLogin no, PasswordAuthentication no, KbdInteractiveAuthentication no. Именно так: в образах Ubuntu есть 50-cloud-init.conf с PasswordAuthentication yes, и правка главного sshd_config ничего не меняет. sshd -t, перезагрузи ssh, проверь: sshd -T | grep -Ei '^(permitrootlogin|passwordauthentication|kbdinteractive)'.
- Добавь алиас сервера в мой ~/.ssh/config.
2. База. DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y -o Dpkg::Options::=--force-confold upgrade, поставь unattended-upgrades. ufw: allow <порт из sshd -T>/tcp, 443/tcp, 443/udp, всё остальное входящее — deny; включай ufw --force enable.
3. Сеть. В /etc/sysctl.d/99-vpn.conf: net.core.default_qdisc=fq, net.ipv4.tcp_congestion_control=bbr, net.ipv4.tcp_mtu_probing=1, net.core.rmem_max=16777216, net.core.wmem_max=16777216 (буферы UDP для Hysteria2). sysctl --system, проверь значения.
4. 3X-UI v3.8.5. Ставь БЕЗ терминала и с выводом в файл: установщик печатает логин, пароль и токен в консоль, а с терминалом задаёт вопросы и пытается выпустить сертификат через закрытый порт 80:
XUI_NONINTERACTIVE=1 XUI_SSL_MODE=none XUI_ENABLE_FAIL2BAN=false bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v3.8.5 >/root/x-ui-install.log 2>&1; chmod 600 /root/x-ui-install.log
Если всё же встал fail2ban — проверь, что он не забанит мой IP, или выключи его. Учётные данные бери из /etc/x-ui/install-result.env (600), в чат не выводи. Панель на localhost: /usr/local/x-ui/x-ui setting -listenIP 127.0.0.1 && x-ui restart. Порт подписок (2096) слушает все интерфейсы — убедись, что ufw его закрывает. Xray лежит в /usr/local/x-ui/bin/xray-linux-amd64, в PATH его нет.
5. Маскировка REALITY. Нужен НАСТОЯЩИЙ сайт самого хостера или соседа по подсети: TLS 1.3 + h2, сертификат публичного центра, домен резолвится в соседний IP. Ищи RealiTLScanner (github.com/XTLS/RealiTLScanner): лучше с моего компьютера (авторы пишут, что скан с VPS может подставить сервер под жалобу; для Mac собери из исходников, нужен Go). Если с сервера — один раз и мягко: -addr <IP>/24 -port 443 -thread 2 -timeout 4. Не бери чужие VPN (сертификаты крупных доменов вроде www.cloudflare.com, apple.com, ozon.ru на соседних IP), Cloudflare и самоподписанное. Нет подходящего соседа — www.microsoft.com. Проверь с сервера: curl -sI https://<домен>.
6. Вход «Основной»: vless, порт 443, network xhttp, xhttpSettings {path: "/<24 случайных hex>", mode: "auto"}, security reality: target <домен>:443, serverNames [<домен>], ключи из `/usr/local/x-ui/bin/xray-linux-amd64 x25519` (PrivateKey и Password (PublicKey)), shortIds [8 случайных hex], fingerprint chrome, sockopt tcpKeepAliveIdle 60 / tcpKeepAliveInterval 30. flow у клиентов — пустой.
7. Вход «Быстрый»: hysteria (версия 2), 443/udp, TLS 1.3, alpn h3. Сертификат самоподписанный, EC prime256v1, на 10 лет, CN и subjectAltName = IP:<IP>; файлы в /etc/x-ui/certs, права 600. Пин = openssl x509 -in hysteria.crt -outform der | sha256sum | cut -d' ' -f1 (hex без двоеточий). Пропиши его в настройках этого входа: tlsSettings.settings.pinnedPeerCertSha256 = ["<пин>"] — тогда панель сама кладёт pinSHA256 в ссылки.
8. Клиенты. Каждого человека создавай ОДНИМ вызовом сразу в оба входа (API panel/api/clients/add с inboundIds [<xhttp>, <hysteria>]) с понятным именем. По одному входу с разными subId панель откажет: Duplicate email.
9. Ссылки. Возьми ссылки из панели и проверь/допиши:
- Hysteria2: есть pinSHA256=<пин>; нет — допиши, без него клиент отвергает сертификат;
- XHTTP: параметр extra = {"xmux":{"maxConnections":1,"hMaxRequestTimes":"600-900","hMaxReusableSecs":"1800-3000","hKeepAlivePeriod":30}} в URL-кодировке (если в extra уже есть поля — слей с ними);
- имя после # : «1 Основной (XHTTP) · Имя» и «2 Быстрый (Hysteria2) · Имя».
Сохрани ссылки каждого человека в /root/vpn-links/<имя>.txt (600) и скопируй мне на компьютер в ~/Downloads/vpn-<имя>.txt (600).
10. Проверка по-настоящему. Для КАЖДОЙ ссылки запусти отдельный xray-клиент (SOCKS на 127.0.0.1) ТОЙ ЖЕ версии, что на сервере (xray-linux-amd64 version; на GitHub пометка Latest стоит на старом релизе, бери тег сервера). Для Hysteria2 в тестовом клиенте — tlsSettings.pinnedPeerCertSha256, allowInsecure в Xray 26 удалён. Через клиент: curl https://api.ipify.org — должен вернуть IP сервера; затем скачай https://speed.cloudflare.com/__down?bytes=2000000 — должны прийти все 2 000 000 байт. Сначала на сервере, потом с моего компьютера (xray во временную папку). Если у меня включён другой VPN — привяжи клиент к физическому интерфейсу (sockopt.interface, на Mac обычно en0), иначе проверишь туннель в туннеле. Короткий запрос без загрузки — не проверка. Временные конфиги — 600, после удали.
11. Отчёт мне: что сделано; вывод ss -lntup и ufw status; результаты проверки по каждой ссылке; где лежат доступы и ссылки; как зайти в панель (ssh -L <порт>:127.0.0.1:<порт панели> <алиас>); как добавить нового человека и выдать ему ссылки.
ПРАВИЛА
- Не выводи в чат приватные ключи, UUID, пароли, токены и сами ссылки — только пути к файлам.
- Любую конфигурацию Xray сначала прогони через xray-linux-amd64 run -test -c <файл>.
- Меняй панель через её API, а не правкой базы. Перед правками — бэкап базы через SQLite backup (python3 -c "import sqlite3; s=sqlite3.connect('/etc/x-ui/x-ui.db'); d=sqlite3.connect('/root/x-ui.db.bak'); s.backup(d)"), не cp: база в режиме WAL, простая копия теряет свежие изменения.
- API 3X-UI 3.8+ отдаёт settings и streamSettings объектами, старые версии — строками JSON; учитывай оба варианта.
- Не открывай наружу порт панели и подписок, не ставь на этот сервер ничего, кроме VPN.
- Всё, что запускал для проверки, за собой гаси.
Чтобы потом добавить человека, напишите той же нейросети: «Добавь в VPN на <алиас> клиента <Имя> в оба входа и выдай ссылки по шагам 8–10 из промпта настройки».
Главная грабля — VLESS Reality на обычном TCP: его советует большинство инструкций, а из России он не грузит ничего. У нас на нём целый месяц висели пять гостевых доступов, и ни один не передал ни мегабайта.
| Симптом | Причина | Что делать |
|---|---|---|
| «Подключено», но сайты не открываются или грузится только мелочь | VLESS Reality на RAW/TCP (в том числе с flow xtls-rprx-vision): ТСПУ пропускает рукопожатие и замораживает загрузку. 14.10 загрузка 2 МБ висела на 0 КБ из Москвы и из российского ДЦ при трёх разных маскировках | Тот же Reality поверх XHTTP: на том же IP — 100 % запросов, 28–38 Мбит/с |
| Hysteria2 не подключается вообще | Сертификат самоподписанный, а 3X-UI без настройки кладёт в ссылку только alpn и sni, без pinSHA256 | Пин в настройках входа и проверка ссылки (шаги 7 и 9 промпта) |
| Hysteria2 летает на Wi-Fi, а в мобильной сети не грузит | Мобильные операторы часто режут UDP | В мобильной сети держать включённым «1 Основной» (XHTTP) |
| Не работает ни один профиль, только в мобильной сети, в отдельные часы или в отдельных регионах | Режим «белых списков»: оператор пускает только разрешённые сервисы | Зарубежный сервер это не лечит. Нужен промежуточный сервер в РФ на разрешённом IP — отдельная сборка |
| Happ не принимает ссылку | Скопировали сообщение целиком, вместе с подписями, или ссылка обрезалась | Одна ссылка — одно сообщение, моноширинным шрифтом: в Telegram нажатие копирует её целиком |
| Каждая страница открывается с задержкой | XHTTP открывает новое соединение на каждый запрос | XMUX в параметре extra: запрос 0,63 → 0,33 с |
| Проверка «зелёная», а у людей не работает | Короткий запрос (пинг, проверка IP) проходит и при замороженном соединении | Качать минимум 2 МБ и смотреть трафик клиентов в панели: ноль у человека — доступ не работает |
| Тест с компьютера показывает не то | Включён другой VPN, и тестовый клиент идёт через него | Привязать тест к физическому интерфейсу (en0) или выключить VPN |
| Xray отказывается стартовать после смены транспорта | У клиентов остался flow xtls-rprx-vision, а он работает только на RAW | Очистить flow у всех клиентов XHTTP-входа, проверять xray run -test |
| После перенастройки у людей всё отвалилось | Старые ссылки перестают работать, когда меняется транспорт или маскировка | Вести список, кому выдан доступ, и рассылать новые ссылки всем сразу |
| Маскировка под www.cloudflare.com | Сайты Cloudflare в РФ режутся отдельно, а IP сервера Cloudflare не принадлежит | Настоящий соседний сайт через RealiTLScanner (шаг 5 промпта) |
| Панель VPN взломали | Порт панели или подписок открыт в интернет (3X-UI слушает 2096 на всех интерфейсах) | Панель только на 127.0.0.1, файрвол пускает лишь SSH и 443 |
| В российском App Store нашлось только «Happ Lite» | Полная версия лежит в зарубежном магазине; работу XHTTP и Hysteria2 в Lite мы не проверяли | Попробовать Lite; не заработает — ставить Happ из зарубежного App Store |
| После настройки SSH на сервер не зайти или не стать root | У нового пользователя нет пароля, и sudo его спрашивает. А в образах Ubuntu файл 50-cloud-init.conf оставляет вход по паролю, сколько главный конфиг ни правь | sudo без пароля и проверка sudo -n true до отключения root; запреты — в sshd_config.d/00-hardening.conf (шаг 1). Заперлись — входите через консоль в панели хостинга |
| Пароль панели оказался в чате нейросети, или сервер вдруг перестал пускать по SSH | Установщик 3X-UI печатает логин, пароль и токен в консоль и ставит fail2ban, который банит IP после нескольких неудачных входов (по исходникам 3X-UI, вживую не проверяли) | Ставить без терминала с выводом в файл и без fail2ban, учётку брать из /etc/x-ui/install-result.env (шаг 4) |
| На телефоне работает, а в офисе через роутер (MikroTik, Docker) — нет | Роутер сам не умеет VLESS, XHTTP и Hysteria2. Клиенты на sing-box, насколько нам известно, не поддерживают XHTTP, а пин для Hysteria2 задают в другом формате | В офисе — отдельный клиент в панели и Xray-core той же версии, что на сервере, в Docker (образ teddysun/xray). Он раздаёт SOCKS и HTTP-прокси только внутри офиса |
На телефоне и компьютере одно приложение — Happ — и одни и те же ссылки: их можно держать на обоих устройствах одновременно.
| Где вы | Что включать |
|---|---|
| Мобильная сеть | «1 Основной» (XHTTP) |
| Домашний или офисный Wi-Fi | «2 Быстрый» (Hysteria2); не грузит — «1 Основной» |
| Не знаете или сеть чужая | «1 Основной» |
Раздаёте доступ другим — на каждого человека свой клиент в панели. Тогда видно, у кого идёт трафик, и любой доступ можно отозвать, не трогая остальные.
Работает тот VPN, через который качается большой файл, а не тот, что пишет «подключено». После настройки пройдите три шага на телефоне — в мобильной сети, с выключенным Wi-Fi.
Потом попросите нейросеть: «Покажи трафик каждого клиента в 3X-UI на <алиас> и время последнего подключения». У человека, который пользуется VPN, там мегабайты и гигабайты. Ноль или сотня килобайт за неделю означают, что у него не работает, даже если он молчит.
Такие же рабочие схемы — сайты, боты, контент-конвейеры на Claude Code — разбираю в канале. Там же выходят новые гайды и грабли, на которые я наступил первым.
Открыть канал →Остальные гайды — тоже рабочие пайплайны, не пересказ документации.