# 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](#конфигурация-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 | --- ## Архитектура ```mermaid 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 | ### Сетевая схема ```mermaid 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 ```bash # Создаем директорию 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 сертификата ```bash # Устанавливаем 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 параметры ```yaml 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 параметры ```yaml 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 ```bash 22 - SSH 80 - HTTP (для получения SSL) 443 - HTTPS (для панели и веб-трафика) 2054 - VLESS VPN (основной порт) 45131 - Панель 3X-UI 2096 - Внутренний порт 3X-UI (localhost) ``` --- ## Управление клиентами ### Добавление нового клиента 1. В панели 3X-UI: **Inbounds** → **OlimpVpn** → **Клиенты** 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 дней | ### Ручной запуск бэкапа ```bash /opt/3x-ui/backup.sh ``` ### Восстановление из бэкапа ```bash # 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 ``` --- ## Мониторинг ```bash # Логи бэкапа 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 '\K[^<]+' | tail -5 # Проверка crontab crontab -l # Проверка таймзоны timedatectl | grep "Time zone" ``` --- ## Решение проблем #### Ошибка 401 Unauthorized ```bash # Пересоздать токен приложения в Nextcloud: # Настройки → Безопасность → Приложения паролей → Создать новый # Обновить NEXTCLOUD_PASS в /opt/3x-ui/backup.sh ``` #### Ошибка 404 Not Found ```bash # Проверить путь к папке (регистр и пробелы важны!) # Правильный формат: /Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/ ``` #### Бэкап не создаётся ```bash # Проверить права на запись ls -la /opt/3x-ui/backups/ # Проверить место на диске df -h /opt/3x-ui # Проверить логи cron journalctl -u cron -n 20 ``` #### Время в логах неверное ```bash # Установить таймзону 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. Никогда не используйте основной пароль аккаунта в скриптах! --- ## Связанные разделы - [Сеть и доступ](04-network.md) — общая топология сети - [Виртуальные машины и LXC](03-vms-lxcs.md) — LXC media с xray-прокси - [Безопасность](10-security.md) — политики безопасности - [Резервное копирование](11-backup.md) — общая стратегия бэкапов --- *Документ обновлен: 25 марта 2026* *Версия 3X-UI: latest (Docker)* *Сервер: 2.27.50.20 (Финляндия)*