Files
admin/.wiki/entities/de-vds-3xui.md
vitya a02c4b86a2 wiki: ingest de-vds-3xui source chronicle + gitignore .tmp/.tasks/.lock
sources/de-vds-3xui-setup-2026-07-14.md (new) — session chronicle capturing
the 3x-ui 3.5.0 troubleshooting: login 403 = CSRFMiddleware (X-CSRF-Token,
GET {BP}csrf-token), direct DB insert into inbounds no longer renders
(client model split across clients/client_inbounds/client_traffics → use
panel API add with stringified settings), wrapper `x-ui setting` doesn't
persist creds (binary only). Reference JSON lifted from working nl-vds 32030.
Entity sources: bound. +index.md sources line, +log.md ingest entry.
gitignore: .tmp/ (cred-bearing local throwaway, like .scratch/) and
.tasks/.lock (runtime). .tmp/ removed from disk.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-14 15:01:26 +03:00

8.6 KiB
Raw Blame History

title, type, tags, sources, updated
title type tags sources updated
DE VDS — 3x-UI VLESS node entity
vds
cloud
germany
vpn
vless
xray
3x-ui
proxy
fornex
../sources/de-vds-3xui-setup-2026-07-14.md
2026-07-14

DE VDS — 3x-UI

Личный прокси-VDS в Германии, активирован 2026-07-14, под управлением 3x-UI 3.5.0 / Xray 26.7.11. Назначение — обход блокировок для себя и раздача доступа друзьям. Аналог nl-vds-3xui (NL/Aeza), поднятый по тем же урокам: повторён только проверенный plain VLESS, маскированные протоколы (Reality/MTProto/SOCKS5) НЕ поднимались (на NL у боевых клиентов из РФ не заработали).

Не путать с nl-vds-3xui (213.176.64.253, Aeza) и vdsina-outline-3xui (46.151.25.64, VDSina Amsterdam) — это два NL-узла. Этот — Fornex 130.17.17.158, Германия.

Hardware

  • Локация: Германия (провайдер Fornex, 335555.fornex.cloud)
  • Public IP: 130.17.17.158 ; IPv6: 2a02:6b40:2000:3505::1
  • vCPU / RAM / Disk: 1 / 2 GiB / 20 GiB NVMe ; swap 0 ; 300 Мбит/с
  • OS: Ubuntu 24.04.4 LTS (kernel 6.8) ; ufw inactive, iptables ACCEPT

Доступ

  • SSH: root@130.17.17.158 (password auth). Host-key (ed25519): SHA256:1AQ5jyJDE7iunqZe7skV3B+8fpDhPmC4CRFwfrRcmdE.
    • С Windows non-interactive: plink -ssh -batch -hostkey "SHA256:1AQ5...mdE" -pw <pass> root@... -m <script>. Инлайн-команды с кавычками PowerShell корёжит → скрипт через -m (тот же урок, что на nl-vds-3xui).
  • Панель 3x-UI: http://130.17.17.158:37601/e2l5qBmNRkJ8Xw9CtM/ (port 37601, http — БЕЗ TLS; random path единственный барьер от сканеров; fail2ban 3x-ipl active).
  • Sub: http://130.17.17.158:2096/sub/.
  • Креды: pass show de-vds-3xui/full-env. Креды панель user/pass заданы вручную (install автосгенерил jclyRE8LrK + bcrypt, plaintext был недоступен). settings.secret (JWT) НЕ ротирован (не светился).

Software stack

Слой Компонент Версия
OS Ubuntu 24.04.4 LTS
Panel 3x-UI (нативный systemd x-ui.service, enabled) 3.5.0
Core Xray (/usr/local/x-ui/bin/xray-linux-amd64) 26.7.11
DB SQLite /etc/x-ui/x-ui.db (бэкапы /etc/x-ui/x-ui.db.bak.*)
Firewall/IPS ufw inactive; fail2ban jail 3x-ipl (поставился вместе с 3x-ui)

Текущее состояние (2026-07-14)

🟢 Работает. Единственный инбаунд — plain VLESS 32030 (security=none, tcp). xray слушает *:32030, в config.json персистентно (inbounds=2: api-tunnel + 32030). Server-side e2e (xray-клиент на сервере → 32030 → exit) подтверждён: трафик выходит с сервера (IPv4 130.17.17.158 / IPv6 2a02:6b40:2000:3505::1).

Порт Протокол Статус
32030 VLESS / tcp, security=none 🟢 сервер-сайд работает. uuid f3a0dda0-… (email vitya). DPI-детектируем (как и на NL), но живой.
37601 3x-UI panel (http) 🟢
2096 sub server 🟢
22 ssh 🟢

Reality / MTProto / SOCKS5 намеренно НЕ подняты — на nl-vds-3xui у боевых клиентов из РФ они не заработали (см. nl-vds-3xui-setup-2026-06-05); порты зря торчать не должны.

Клиент для друзей

Hiddify / v2rayN / v2rayNG — импорт vless://f3a0dda0-947b-4a11-b3f5-ca973640f843@130.17.17.158:32030?type=tcp&security=none&encryption=none#de-vless-32030. При включённом VPN в Telegram прокси не настраивать (моб. «отключить прокси», десктоп «системный»). Полная ссылка/QR — pass de-vds-3xui/full-env.

Подводные камни (3x-ui 3.5.0 — NEW vs NL-сессии 3.2.7)

Установка на Germany оказалась нетривиальной из-за новой версии 3x-ui — на NL стояла 3.2.7, тут 3.5.0, и API/DB-модель поменялась. Зафиксировать, чтобы не повторяться:

  • CSRF на ВСЕХ panel POST. CSRFMiddleware → без валидного X-CSRF-Token (header) → 403 Forbidden с пустым телом + CSP-nonce. Логин-хендлер тут ни при чём (он отдаёт 200+JSON даже при неудаче). Токен: GET {webBasePath}csrf-token (публичный, кладёт токен в session-cookie) → вернуть тем же заголовком. Сначала это выглядело как «битые креды» — на деле 403 = отсутствие CSRF-токена.
  • login route: POST {webBasePath}login, JSON-тело {"username","password"} (form-encoded ≠). 404 на /login (роут только под basePath), 403 на {BP}login без CSRF.
  • Прямой INSERT в inbounds НЕ рендерит инбаунд в xray-config в 3.5.0. Клиентская модель разнесена по таблицам clients / client_inbounds / client_traffics; эти записи заполняются только сервисом AddInbound (через panel API/UI), а не raw-SQL. Я дважды вставлял инбаунд в inbounds (даже с эталонным JSON, скопированным с рабочего nl-vds 32030) — x-ui видел «Normalized sub_sort_index on 1 inbound(s)», но в config.json инбаунд не попадал, xray не слушал. Лекарство — panel API, не БД.
  • stream_settings naming: "tcpSettings" (не "tcp"), с "header":{"type":"none"}; sniffing = {"enabled":false}; vless settings = {clients, decryption:"none", encryption:"none", testseed:[900,500,900,256]}. Эталон снят с рабочего инбаунда nl-vds-3xui 32030.
  • API add endpoint: POST {BP}panel/api/inbounds/add, body = model.Inbound (camelCase: remark,enable,port,protocol,listen,tag,settings,streamSettings,sniffing,shareAddrStrategy,...); settings/streamSettings/sniffingstringified JSON (строки, не вложенные объекты).
  • x-ui setting через wrapper НЕ применяет -username/-password (команда печатает меню, но users-таблицу не меняет). Надо дёргать бинарник напрямую: systemctl stop x-ui; /usr/local/x-ui/x-ui setting -username … -password …; systemctl start x-ui → «Username and password updated successfully». Иначе логин сбросит «Invalid username or password».
  • 3.5.0 hot-applies новые инбаунды к работающему xray (xray начинал слушать 32030 ещё до rewrite config.json); после x-ui restart config.json переписывается из БД и инбаунд персистентен.
  • Install v3.5.0 автогенерит рандомные panel user/pass/port/webBasePath (hasDefaultCredential:false) + ставит fail2ban — лучше старых версий, но plaintext пароля недоступен (bcrypt) → всё равно перевыставлять через бинарник.

Проверено / не проверено

  • Сервер-сайд: xray слушает 32030, локальный xray-клиент через тоннель выходит с сервера.
  • Реальный клиент из РФ — подтверждён 2026-07-14. User подключён через этот узел прямо сейчас (сессия идёт через 32030). Plain VLESS снова оправдал «единственный proven-working» статус.

Открытые хвосты

  • Per-friend UUID (сейчас один — vitya). Заводить через панель при раздаче.
  • panel на http:3637601 — рассмотреть SSH-tunnel-only или LE-сертификат (опция 20 меню), пока компенсирует random path + fail2ban.
  • Бэкап x-ui.db в pipeline (как на backup-inventory-2026-06 для nl-vds x-ui.db) — не заведён.