17 KiB
OlimpVPN — внешний VPN-сервер
Сервер: 2.27.50.20 (Финляндия, VPS)
Домен: charon.zailon.ru
Протокол: VLESS + Reality + XHTTP
Порт VPN: 2054
Панель управления: https://charon.zailon.ru:45131/olimp-styx/
📋 Содержание
- Назначение
- Архитектура
- Установка и настройка
- Конфигурация Xray
- Управление клиентами
- Бэкапы
- Мониторинг и обслуживание
- Решение проблем
Назначение
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
- Откройте:
https://charon.zailon.ru:45131/olimp-styx/ - Логин/пароль по умолчанию:
admin/admin - Смените пароль немедленно!
Основные настройки панели
| Параметр | Значение |
|---|---|
| Домен панели | 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)
Управление клиентами
Добавление нового клиента
- В панели 3X-UI: Inbounds → OlimpVpn → Клиенты
- Нажмите + Добавить клиента
- Заполните:
- Email: имя-клиента (например:
user-tel,user-comp) - Лимит трафика: 0 (безлимитно) или укажите в ГБ
- Срок действия: никогда или выберите дату
- Email: имя-клиента (например:
- Нажмите OK
Генерация ссылки подключения
- Найдите клиента в списке
- Нажмите на иконку QR Code (📱)
- Скопируйте ссылку 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
- Создайте папку:
/VPN_Backups/3x-ui/наnc.zailon.ru - Создайте токен приложения:
- Настройки → Безопасность → Приложения паролей
- Имя:
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
Решение проблем
Клиенты не подключаются
-
Проверьте что порт 2054 открыт:
netstat -tlnp | grep 2054 -
Проверьте логи:
docker logs 3xui_app | grep -i error -
Убедитесь что Reality ключи верные (совпадают с 3X-UI)
-
Проверьте время на сервере:
timedatectl status
Панель не открывается
-
Проверьте статус:
docker ps | grep 3xui -
Проверьте SSL:
ls -la /opt/3x-ui/cert/ -
Посмотрите логи nginx:
journalctl -u nginx -n 50
Бэкап не загружается
- Проверьте токен Nextcloud
- Убедитесь что папка существует
- Проверьте лог:
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
Безопасность
Рекомендации
- Смените пароль администратора сразу после установки
- Используйте сложные URI:
/olimp-styx/и/charon-cerber/ - Регулярно обновляйте 3X-UI и систему
- Делайте бэкапы минимум раз в неделю
- Ограничьте доступ к панели по IP (если возможно)
- Мониторьте логи на предмет подозрительной активности
Fail2ban (опционально)
Для включения fail2ban в docker-compose.yml:
environment:
XUI_ENABLE_FAIL2BAN: "true"
XUI_FAIL2BAN_PORT: "45131"
XUI_FAIL2BAN_MAX_RETRY: "5"
XUI_FAIL2BAN_BAN_TIME: "3600"
Связанные разделы
- Сеть и доступ — общая топология сети
- Виртуальные машины и LXC — LXC media с xray-прокси
- Безопасность — политики безопасности
- Резервное копирование — общая стратегия бэкапов
Документ обновлен: 25 марта 2026
Версия 3X-UI: latest (Docker)
Сервер: 2.27.50.20 (Финляндия)