- Зарегистрирован и делегирован домен (например,
mydomain.com), указывающий на ваш VPS
Настройка SSH
ssh-keygen -t ed25519При выполнении вам предложат изменить место хранения ключа и добавить пароль. Менять локацию не надо, пароль добавьте для безопасности.
Linux:
ssh-copy-id -i ~/.ssh/id_ed25519.pub ваш_пользователь@ваша_vpsWindows (PowerShell):
ssh-copy-id -i $env:USERPROFILE\.ssh\id_ed25519.pub ваш_пользователь@ваша_vpsЕсли ssh-copy-id не работает на Windows:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh ваш_пользователь@ваша_vps "cat >> .ssh/authorized_keys"Создайте файл конфигурации:
sudo nano /etc/ssh/sshd_config.d/00-disable-password.confДобавьте:
Port 22
PasswordAuthentication no
Перезапустите SSH:
sudo systemctl restart sshУстановка Docker
Инструкции: https://docs.docker.com/engine/install/
Быстрая установка:
bash <(wget -qO- https://get.docker.com)sudo usermod -aG docker $USER
newgrp dockerСкрипт полностью интерактивный. При запуске он запросит домен и предпочтительные логин/пароль для панели. Подписка XHTTP создаётся автоматически.
bash <(curl -sL https://raw.githubusercontent.com/w3struk/serv/main/setup.sh)Или через wget:
bash <(wget -qO- https://raw.githubusercontent.com/w3struk/serv/main/setup.sh)Скрипт сам склонирует репозиторий в /opt/serv и запустит установку.
Note
Скрипт нужно запускать от root, так как настраивает BBR и firewall.
- Единый Inbound: Создаётся только VLESS-XHTTP-Backend (UDS, h2c). Публичный TLS завершает Caddy.
- Безопасность панели: Настраивает Basic Auth для панели через Caddy, скрывая ее за случайным путем.
- Управление подписками: Подписка XHTTP с одним UUID для всех клиентов.
Расширенная XHTTP-обфускация рассчитана на Xray-core v26.6.1. Для распространения конфигурации используется обычная VLESS-подписка 3x-ui
В VLESS URI параметры path, host и mode передаются отдельно, xPaddingBytes дополнительно доступен как x_padding_bytes, а полный набор клиентских XHTTP-полей находится в URL-кодированном JSON-параметре extra.
Клиент (VLESS/XHTTP)
│
│ TLS :443
▼
┌──────────────────────────────────────────────┐
│ Caddy (public TLS termination) │
│ /admin-xxxx/* → 3x-ui panel :2053 │
│ /sub-xxxx/* → 3x-ui sub service :2096 │
│ /api/vXXX/* → XHTTP (h2c+PROXYv2, UDS) │
└─────────────────────┬────────────────────────┘
│ PROXY v2 (real client IP)
▼
┌──────────────────────────────────────────────┐
│ 3x-ui VLESS-XHTTP-Backend (inbound only) │
│ streamSettings.sockopt: │
│ acceptProxyProtocol: true │
│ listen: @uds_xhttp (Unix Domain Socket) │
│ network: xhttp, mode: auto │
└──────────────────────────────────────────────┘
Скрипт setup.sh предоставляет несколько встроенных команд:
./setup.sh # Первоначальная установка (интерактивный режим)
./setup.sh add-client # Добавление нового клиента к существующей установке
./setup.sh status # Просмотр статуса контейнеров, ссылок, путей и портов
./setup.sh cleanup-vision # Удаление устаревшего VLESS-TCP-Vision-Frontend
./setup.sh help # Справка по командами скриптаРабота с Docker:
# Перезапуск всех сервисов и просмотр логов
docker compose down && docker compose up -d && docker compose logs -f
# Обновление 3x-ui до последней версии
docker compose down 3xui && docker pull ghcr.io/mhsanaei/3x-ui:latest && docker compose up -d 3xui
docker ps # список контейнеров
docker system prune -a # очистка всех неиспользуемых данных Docker
docker volume ls # список томов
watch -n 1 'ss -Htn state established | wc -l' #количество активных TCP-подключений