Docs/docs/04b-olimpvpn.md
Administrator 529fe52832 Update 4 files
- /docs/04-network.md
- /docs/06-services.md
- /docs/04b-olimpvpn.md
- /README.md
2026-03-25 11:45:40 +05:00

17 KiB
Raw Blame History

OlimpVPN — внешний VPN-сервер

Сервер: 2.27.50.20 (Финляндия, VPS)
Домен: charon.zailon.ru
Протокол: VLESS + Reality + XHTTP
Порт VPN: 2054
Панель управления: https://charon.zailon.ru:45131/olimp-styx/


📋 Содержание

  1. Назначение
  2. Архитектура
  3. Установка и настройка
  4. Конфигурация Xray
  5. Управление клиентами
  6. Бэкапы
  7. Мониторинг и обслуживание
  8. Решение проблем

Назначение

OlimpVPN — внешний VPN-сервер на базе 3X-UI (Xray-core), предназначенный для:

  • Обхода географических блокировок (YouTube, стриминговые сервисы)
  • Защиты трафика в ненадёжных сетях (общественный Wi-Fi, мобильный интернет)
  • Доступа к домашней инфраструктуре через LXC-контейнер с прокси (media, 192.168.1.203)

Отличие от домашнего OpenVPN:

Параметр OpenVPN (домашний) OlimpVPN (внешний)
Расположение 192.168.1.1 (роутер) 2.27.50.20 (Финляндия)
Назначение Доступ к домашней сети Обход блокировок, анонимность
Протокол OpenVPN (UDP 1194) VLESS + Reality + XHTTP (TCP 2054)
Маскировка Нет Reality (маскировка под HTTPS)
Клиенты Доступ к 192.168.1.0/24 Доступ в интернет через VPS

Архитектура

graph LR
    Client[Клиент] -->|VLESS:2054| OlimpVPN[OlimpVPN 2.27.50.20]
    OlimpVPN -->|Reality| Target[cloud.zailon.ru:443]
    OlimpVPN -->|Прокси| Internet[Интернет]
    OlimpVPN -->|Xray-прокси| LXC[LXC media 192.168.1.203]
    LXC -->|yt-dlp| YouTube[YouTube]

Компоненты

Компонент Версия Назначение
3X-UI latest (Docker) Панель управления Xray
Xray-core 26.2.6+ Ядро обработки трафика
Docker latest Контейнеризация 3X-UI
Nginx системный SSL для панели (Let's Encrypt)
Certbot системный Автообновление SSL

Сетевая схема

graph TD
    subgraph "Внешний мир"
        Internet[Интернет]
        Cloudflare[Cloudflare]
    end
    
    subgraph "VPS Финляндия (2.27.50.20)"
        Xray[Xray:2054]
        Panel[3X-UI:45131]
        Cert[Certbot:80/443]
    end
    
    subgraph "Домашняя сеть (192.168.1.0/24)"
        LXC[LXC media: xray-прокси]
        NPM[Nginx Proxy Manager]
        NC[Nextcloud]
    end
    
    Client[Клиент VPN] -->|HTTPS| Xray
    Client -->|HTTPS| Panel
    Xray -->|Reality SNI| Cloudflare
    Xray -->|Прокси| Internet
    LXC -->|Xray-туннель| Xray
    NPM -->|SSL| Panel

Установка и настройка

Требования

  • VPS с Debian/Ubuntu (минимум 1 ядро, 512 МБ ОЗУ, 10 ГБ диск)
  • Домен с A-записью на IP сервера
  • Открытые порты: 80, 443, 2054, 45131

1. Установка Docker и 3X-UI

# Создаем директорию
mkdir -p /opt/3x-ui
cd /opt/3x-ui

# Создаем docker-compose.yml
cat > docker-compose.yml << 'EOF'
services:
  3xui:
    image: ghcr.io/mhsanaei/3x-ui:latest
    container_name: 3xui_app
    hostname: OlimpVPN
    volumes:
      - $PWD/db/:/etc/x-ui/
      - $PWD/cert/:/root/cert/
    environment:
      XRAY_VMESS_AEAD_FORCED: "false"
      XUI_ENABLE_FAIL2BAN: "true"
    tty: true
    network_mode: host
    restart: unless-stopped
EOF

# Запускаем
docker compose up -d

2. Настройка SSL сертификата

# Устанавливаем certbot
apt update && apt install certbot python3-certbot-nginx -y

# Получаем сертификат
certbot --nginx -d charon.zailon.ru \
  --email zailon@bk.ru \
  --agree-tos \
  --non-interactive

# Копируем в папку 3X-UI
mkdir -p /opt/3x-ui/cert
cp /etc/letsencrypt/live/charon.zailon.ru/fullchain.pem /opt/3x-ui/cert/public.crt
cp /etc/letsencrypt/live/charon.zailon.ru/privkey.pem /opt/3x-ui/cert/private.key
chmod 644 /opt/3x-ui/cert/public.crt
chmod 600 /opt/3x-ui/cert/private.key

# Перезапускаем контейнер
docker restart 3xui_app

3. Настройка панели 3X-UI

  1. Откройте: https://charon.zailon.ru:45131/olimp-styx/
  2. Логин/пароль по умолчанию: admin/admin
  3. Смените пароль немедленно!

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

Параметр Значение
Домен панели charon.zailon.ru
Порт панели 45131
Корневой путь URL /olimp-styx/
Продолжительность сессии 360 минут
URI подписки /charon-cerber/

Настройка сертификатов

Параметр Значение
Путь к публичному ключу /root/cert/public.crt
Путь к приватному ключу /root/cert/private.key

Конфигурация Xray

Inbound настройки (ID: 1)

Параметр Значение
Название OlimpVpn
Протокол VLESS
Порт 2054
Транспорт XHTTP
Безопасность Reality

Reality параметры

Target: cloud.zailon.ru:443
SNI: cloud.zailon.ru
uTLS: chrome
Public Key: TOyddQCTdSpycmO20uiLOqMABuKabpwVhw57tWmvJws
Private Key: uLdWyWif7JrihRy49jTJmBMasEWyElsIXiuQkxwQVm8
Short IDs:
  - 174fc0
  - 568a8044d80a
  - b211
  - 2fbcaed79
  - 1b4d7dd
  - 04c250ad0b
  - 4260c819008e7
SpiderX: /
Max Time Diff: 0
Min Client Ver: 25.9.11
Max Client Ver: 25.9.11

XHTTP параметры

Path: /remote.php/dav/upload
Mode: stream-one
Padding Bytes: 100-1000
Padding Obfs Mode: выкл
Uplink HTTP Method: Default (POST)
Session Placement: Default (path)
Sequence Placement: Default (path)
No SSE Header: выкл
Sockopt: выкл

Sniffing

Параметр Значение
Включено Да
HTTP
TLS
QUIC
FAKEDNS
Metadata Only
Route Only

Открытые порты на VPS

22      - SSH
80      - HTTP (для получения SSL)
443     - HTTPS (для панели и веб-трафика)
2054    - VLESS VPN (основной порт)
45131   - Панель 3X-UI
2096    - Внутренний порт 3X-UI (localhost)

Управление клиентами

Добавление нового клиента

  1. В панели 3X-UI: InboundsOlimpVpnКлиенты
  2. Нажмите + Добавить клиента
  3. Заполните:
    • Email: имя-клиента (например: user-tel, user-comp)
    • Лимит трафика: 0 (безлимитно) или укажите в ГБ
    • Срок действия: никогда или выберите дату
  4. Нажмите OK

Генерация ссылки подключения

  1. Найдите клиента в списке
  2. Нажмите на иконку QR Code (📱)
  3. Скопируйте ссылку VLESS или отсканируйте QR-код

Формат ссылки VLESS

vless://UUID@2.27.50.20:2054?type=xhttp&encryption=none&path=%2Fremote.php%2Fdav%2Fupload&security=reality&pbk=PUBLIC_KEY&fp=chrome&sni=cloud.zailon.ru&sid=SHORT_ID&sp=%2F#ClientName

Пример для Hiddify / v2rayNG

vless://68f44a38-396d-48da-b832-79b5dc5716ab@2.27.50.20:2054?type=xhttp&encryption=none&path=%2Fremote.php%2Fdav%2Fupload&security=reality&pbk=TOyddQCTdSpycmO20uiLOqMABuKabpwVhw57tWmvJws&fp=chrome&sni=cloud.zailon.ru&sid=174fc0&sp=%2F#OlimpVpn-client

Автоматическая подписка

Клиенты могут использовать автоматическую подписку для обновления конфигурации:

https://charon.zailon.ru:45131/charon-cerber/CLIENT_ID

Где CLIENT_ID — уникальный идентификатор клиента (указан в панели 3X-UI).

Текущие клиенты

Клиент Трафик Статус Назначение
Zailon-tel 3.12 GB Офлайн Телефон (основной)
Zailon-comp 52.15 GB Онлайн Компьютер (основной)
Tanya-tel 471.00 MB Офлайн Телефон (Tanya)
Dima-comp 1.77 GB Офлайн Компьютер (Dima)
Dima-tel 7.99 GB Офлайн Телефон (Dima)
cerbera3000-comp 0 B Офлайн Резервный
cerbera3000-tel 728.32 MB Офлайн Резервный
Sonya-tel 0 B Офлайн Телефон (Sonya)
lxc-vpn 4.61 KB Офлайн LXC media (прокси)
Tanya-comp 4.03 MB Офлайн Компьютер (Tanya)

Бэкапы

Автоматические бэкапы на Nextcloud

Настройка Nextcloud

  1. Создайте папку: /VPN_Backups/3x-ui/ на nc.zailon.ru
  2. Создайте токен приложения:
    • Настройки → Безопасность → Приложения паролей
    • Имя: 3X-UI Backups
    • Скопируйте пароль

Скрипт бэкапа

#!/bin/bash
# /opt/3x-ui/backup.sh

# Настройки
NEXTCLOUD_URL="https://nc.zailon.ru"
NEXTCLOUD_USER=аш_username"
NEXTCLOUD_PASS=аш_токен_приложения"
BACKUP_DIR="/opt/3x-ui/backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="3x-ui_backup_${DATE}.tar.gz"

# Создаем директорию для бэкапов
mkdir -p ${BACKUP_DIR}

# Создаем архив
tar -czf ${BACKUP_DIR}/${BACKUP_FILE} \
  -C /opt/3x-ui db cert docker-compose.yml

# Загружаем на Nextcloud через WebDAV
curl -T ${BACKUP_DIR}/${BACKUP_FILE} \
  -u ${NEXTCLOUD_USER}:${NEXTCLOUD_PASS} \
  ${NEXTCLOUD_URL}/remote.php/dav/files/${NEXTCLOUD_USER}/VPN_Backups/3x-ui/${BACKUP_FILE}

# Удаляем локальные бэкапы старше 30 дней
find ${BACKUP_DIR} -name "3x-ui_backup_*.tar.gz" -mtime +30 -delete

# Логирование
echo "$(date): Backup ${BACKUP_FILE} uploaded to Nextcloud" >> /var/log/3x-ui-backup.log

Настройка cron (еженедельно)

# Делаем скрипт исполняемым
chmod +x /opt/3x-ui/backup.sh

# Добавляем в crontab
crontab -e

# Каждое воскресенье в 3:00
0 3 * * 0 /opt/3x-ui/backup.sh

Ручной бэкап

# Быстрый бэкап
cd /opt/3x-ui
tar -czf backup_manual_$(date +%Y%m%d).tar.gz db/ cert/ docker-compose.yml

# Скачать через SCP на локальный компьютер
scp root@2.27.50.20:/opt/3x-ui/backup_manual_*.tar.gz ~/backups/

Восстановление из бэкапа

# Останавливаем контейнер
cd /opt/3x-ui
docker compose down

# Восстанавливаем
tar -xzf backup_20260325.tar.gz -C /opt/3x-ui/

# Исправляем права
chown -R root:root /opt/3x-ui/

# Запускаем
docker compose up -d

Мониторинг и обслуживание

Обновление 3X-UI

cd /opt/3x-ui
docker compose pull
docker compose up -d
docker image prune -f

Обновление SSL сертификата

Certbot обновляет автоматически. Для проверки:

certbot renew --dry-run

# Если нужно обновить вручную:
certbot renew --nginx

# Копируем обновленные сертификаты
cp /etc/letsencrypt/live/charon.zailon.ru/fullchain.pem /opt/3x-ui/cert/public.crt
cp /etc/letsencrypt/live/charon.zailon.ru/privkey.pem /opt/3x-ui/cert/private.key

# Перезапускаем
docker restart 3xui_app

Мониторинг

# Логи 3X-UI
docker logs 3xui_app --tail 100 -f

# Статус контейнера
docker ps -a | grep 3xui

# Использование ресурсов
docker stats 3xui_app

# Проверка портов
netstat -tlnp | grep -E '2054|45131'

# Проверка базы данных
docker exec 3xui_app sqlite3 /etc/x-ui/x-ui.db "SELECT COUNT(*) FROM clients;"

Полезные команды

# Перезапуск 3X-UI
docker restart 3xui_app

# Остановка
docker compose down

# Запуск
docker compose up -d

# Войти в контейнер
docker exec -it 3xui_app bash

# Сброс пароля админа
docker exec 3xui_app /app/x-ui resetuser

# Экспорт базы данных
docker exec 3xui_app sqlite3 /etc/x-ui/x-ui.db ".dump" > x-ui-export.sql

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

Клиенты не подключаются

  1. Проверьте что порт 2054 открыт:

    netstat -tlnp | grep 2054
    
  2. Проверьте логи:

    docker logs 3xui_app | grep -i error
    
  3. Убедитесь что Reality ключи верные (совпадают с 3X-UI)

  4. Проверьте время на сервере:

    timedatectl status
    

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

  1. Проверьте статус:

    docker ps | grep 3xui
    
  2. Проверьте SSL:

    ls -la /opt/3x-ui/cert/
    
  3. Посмотрите логи nginx:

    journalctl -u nginx -n 50
    

Бэкап не загружается

  1. Проверьте токен Nextcloud
  2. Убедитесь что папка существует
  3. Проверьте лог:
    tail /var/log/3x-ui-backup.log
    

Xray не запускается

# Проверка конфигурации
docker exec 3xui_app /app/x-ui v2ui

# Логи Xray
docker logs 3xui_app --tail 100 | grep -i "xray\|error"

# Пересоздание контейнера
cd /opt/3x-ui
docker compose down
docker compose up -d

Безопасность

Рекомендации

  1. Смените пароль администратора сразу после установки
  2. Используйте сложные URI: /olimp-styx/ и /charon-cerber/
  3. Регулярно обновляйте 3X-UI и систему
  4. Делайте бэкапы минимум раз в неделю
  5. Ограничьте доступ к панели по IP (если возможно)
  6. Мониторьте логи на предмет подозрительной активности

Fail2ban (опционально)

Для включения fail2ban в docker-compose.yml:

environment:
  XUI_ENABLE_FAIL2BAN: "true"
  XUI_FAIL2BAN_PORT: "45131"
  XUI_FAIL2BAN_MAX_RETRY: "5"
  XUI_FAIL2BAN_BAN_TIME: "3600"

Связанные разделы


Документ обновлен: 25 марта 2026
Версия 3X-UI: latest (Docker)
Сервер: 2.27.50.20 (Финляндия)