Docs/docs/04b-olimpvpn.md
2026-03-25 13:41:37 +05:00

14 KiB
Raw Permalink 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: /

XHTTP параметры

Path: /remote.php/dav/upload
Mode: stream-one
Padding Bytes: 100-1000
Uplink HTTP Method: POST
Session Placement: Default (path)
Sequence Placement: Default (path)

Открытые порты на 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-cerberus/CLIENT_ID

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


Бэкапы и восстановление

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

Параметр Значение
Скрипт /opt/3x-ui/backup.sh
Расписание 0 3 * * 0 (воскресенье, 03:00 +05)
Локальное хранилище /opt/3x-ui/backups/
Nextcloud nc.zailon.ru/Admin/Домашний Сервер/OlimpBackup/OlimpVPN/
Состав бэкапа db/, cert/, docker-compose.yml
Хранение локально 30 дней

Ручной запуск бэкапа

/opt/3x-ui/backup.sh

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

# 1. Скачать последний бэкап с Nextcloud
LATEST=$(curl -s -u "Zailon:TOKEN" \
    "https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/" \
    -X PROPFIND -H "Depth: 1" | \
    grep -oP '3x-ui_backup_\d+_\d+\.tar\.gz' | tail -1)

curl -s -u "Zailon:TOKEN" \
    "https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/${LATEST}" \
    -o /tmp/restore.tar.gz

# 2. Остановить сервис
cd /opt/3x-ui && docker compose down

# 3. (Опционально) Создать резервную копию текущей конфигурации
tar -czf /opt/3x-ui/pre_restore_$(date +%Y%m%d).tar.gz -C /opt/3x-ui db cert docker-compose.yml

# 4. Восстановить файлы
tar -xzf /tmp/restore.tar.gz -C /opt/3x-ui/
chown -R root:root /opt/3x-ui/
chmod 600 /opt/3x-ui/cert/private.key

# 5. Запустить сервис
docker compose up -d

# 6. Проверить статус
docker ps | grep 3xui
docker logs 3xui_app --tail 20

Мониторинг

# Логи бэкапа
tail -f /var/log/3x-ui-backup.log

# Локальные бэкапы
ls -lh /opt/3x-ui/backups/

# Проверка на Nextcloud (WebDAV)
curl -u "Zailon:TOKEN" \
    "https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/" \
    -X PROPFIND -H "Depth: 1" | grep -oP '<d:href>\K[^<]+' | tail -5

# Проверка crontab
crontab -l

# Проверка таймзоны
timedatectl | grep "Time zone"

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

Ошибка 401 Unauthorized

# Пересоздать токен приложения в Nextcloud:
# Настройки → Безопасность → Приложения паролей → Создать новый
# Обновить NEXTCLOUD_PASS в /opt/3x-ui/backup.sh

Ошибка 404 Not Found

# Проверить путь к папке (регистр и пробелы важны!)
# Правильный формат: /Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/

Бэкап не создаётся

# Проверить права на запись
ls -la /opt/3x-ui/backups/

# Проверить место на диске
df -h /opt/3x-ui

# Проверить логи cron
journalctl -u cron -n 20

Время в логах неверное

# Установить таймзону
timedatectl set-timezone Asia/Yekaterinburg

# Перезапустить cron
systemctl restart cron

Чеклист обслуживания

  • Еженедельно: Проверять /var/log/3x-ui-backup.log после воскресенья
  • Ежемесячно: Убедиться что бэкапы есть на Nextcloud
  • Ежеквартально: Протестировать восстановление на тестовом окружении
  • При смене пароля Nextcloud: Обновить NEXTCLOUD_PASS в скрипте
  • Перед обновлением 3X-UI: Сделать ручной бэкап

⚠️ Важно: Токен приложения 2Fpz6-ocGSz-rRbaZ-efoa3-EDATz имеет доступ только к WebDAV. Никогда не используйте основной пароль аккаунта в скриптах!


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


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