Update 4 files
- /docs/04-network.md - /docs/06-services.md - /docs/04b-olimpvpn.md - /README.md
This commit is contained in:
parent
a461a011ab
commit
529fe52832
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
### Сеть и доступ
|
### Сеть и доступ
|
||||||
- [Сеть и доступ](docs/04-network.md)
|
- [Сеть и доступ](docs/04-network.md)
|
||||||
|
- [OlimpVPN — внешний VPN-сервер](docs/04b-olimpvpn.md)
|
||||||
- [Проксирование и SSL (NPM)](docs/07-proxy-ssl.md)
|
- [Проксирование и SSL (NPM)](docs/07-proxy-ssl.md)
|
||||||
|
|
||||||
### Сервисы и данные
|
### Сервисы и данные
|
||||||
@ -43,6 +44,7 @@
|
|||||||
- **Хранилище**: RAID6 (4×8 ТБ) через LSI MegaRAID 9260-8i, логические тома для ВМ и LXC.
|
- **Хранилище**: RAID6 (4×8 ТБ) через LSI MegaRAID 9260-8i, логические тома для ВМ и LXC.
|
||||||
- **Сеть**: локальная подсеть 192.168.1.0/24, VPN-подсеть 192.168.45.0/24 (OpenVPN).
|
- **Сеть**: локальная подсеть 192.168.1.0/24, VPN-подсеть 192.168.45.0/24 (OpenVPN).
|
||||||
- **Домен**: zailon.ru → внешний IP 188.73.191.202.
|
- **Домен**: zailon.ru → внешний IP 188.73.191.202.
|
||||||
|
- **Внешний VPN**: OlimpVPN (VLESS + Reality) на VPS 2.27.50.20 (Финляндия) — обход блокировок.
|
||||||
- **Основные сервисы**: Jellyfin, Immich, Nextcloud, Bitwarden, GitLab, Grafana и др.
|
- **Основные сервисы**: Jellyfin, Immich, Nextcloud, Bitwarden, GitLab, Grafana и др.
|
||||||
- **Автоматизация**: Ansible, все роли используют Docker Compose, шаблоны Jinja2, обработчики, переменные разделены на `group_vars/all.yml` и `vault.yml`.
|
- **Автоматизация**: Ansible, все роли используют Docker Compose, шаблоны Jinja2, обработчики, переменные разделены на `group_vars/all.yml` и `vault.yml`.
|
||||||
|
|
||||||
@ -50,4 +52,4 @@
|
|||||||
|
|
||||||
## 📝 Статус
|
## 📝 Статус
|
||||||
|
|
||||||
Документация актуальна на 23 марта 2026 года. Регулярно обновляется по мере изменений в инфраструктуре.
|
Документация актуальна на 25 марта 2026 года. Регулярно обновляется по мере изменений в инфраструктуре.
|
||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Топология
|
## Топология
|
||||||
|
|
||||||
Инфраструктура объединяет устройства в локальной подсети `192.168.1.0/24`. Доступ из внешней сети осуществляется через маршрутизатор TP-Link с белым IP-адресом `188.73.191.202`, на который делегирован домен `zailon.ru`. Для удалённого подключения к внутренним ресурсам используется OpenVPN.
|
Инфраструктура объединяет устройства в локальной подсети `192.168.1.0/24`. Доступ из внешней сети осуществляется через маршрутизатор TP-Link с белым IP-адресом `188.73.191.202`, на который делегирован домен `zailon.ru`. Для удалённого подключения к внутренним ресурсам используется OpenVPN и OlimpVPN (VLESS).
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph TD
|
graph TD
|
||||||
@ -12,22 +12,23 @@ graph TD
|
|||||||
|
|
||||||
LAN --> Proxmox(Proxmox Host 192.168.1.200)
|
LAN --> Proxmox(Proxmox Host 192.168.1.200)
|
||||||
Proxmox --> VM1(LXC / ВМ 201-213)
|
Proxmox --> VM1(LXC / ВМ 201-213)
|
||||||
Proxmox --> VM2(LXC / ВМ 201-213)
|
|
||||||
Proxmox --> VM3(LXC / ВМ 201-213)
|
Router -->|VPN| OlimpVPN[OlimpVPN 2.27.50.20]
|
||||||
|
OlimpVPN -->|VLESS:2054| LAN
|
||||||
```
|
```
|
||||||
|
|
||||||
*Все виртуальные машины и контейнеры подключены к локальной сети через мост vmbr0.*
|
*Все виртуальные машины и контейнеры подключены к локальной сети через мост vmbr0.*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Маршрутизатор (TP-Link)
|
## Маршрутизатор (TP-Link)
|
||||||
|
|
||||||
- **Модель**: TP-Link (точная модель неизвестна, предположительно Archer C6/A6 или аналогичный)
|
- **Модель**: TP-Link (предположительно Archer C6/A6 или аналогичный)
|
||||||
- **Локальный IP**: 192.168.1.1
|
- **Локальный IP**: 192.168.1.1
|
||||||
- **Внешний IP**: 188.73.191.202 (статический)
|
- **Внешний IP**: 188.73.191.202 (статический)
|
||||||
|
|
||||||
### Перенаправление портов (Port Forwarding)
|
### Перенаправление портов (Port Forwarding)
|
||||||
|
|
||||||
На роутере настроены следующие правила перенаправления (см. скриншоты `1roter.png`, `2roter.png`, `3roter.png`):
|
|
||||||
|
|
||||||
| Имя сервиса | Внешний порт | Внутренний порт | IP устройства | Протокол | Назначение |
|
| Имя сервиса | Внешний порт | Внутренний порт | IP устройства | Протокол | Назначение |
|
||||||
|-------------|--------------|-----------------|---------------|----------|------------|
|
|-------------|--------------|-----------------|---------------|----------|------------|
|
||||||
| snikket | 3478 | 3478 | 192.168.1.206 | Все | XMPP / STUN |
|
| snikket | 3478 | 3478 | 192.168.1.206 | Все | XMPP / STUN |
|
||||||
@ -46,24 +47,87 @@ graph TD
|
|||||||
|
|
||||||
> **Примечание**: некоторые порты (например, 15636, 27015-27016, 9876-9877) ведут на остановленные ВМ (212, 207) и могут быть закрыты.
|
> **Примечание**: некоторые порты (например, 15636, 27015-27016, 9876-9877) ведут на остановленные ВМ (212, 207) и могут быть закрыты.
|
||||||
|
|
||||||
### OpenVPN
|
---
|
||||||
|
|
||||||
|
## VPN-сервисы
|
||||||
|
|
||||||
|
### OpenVPN (домашний)
|
||||||
|
|
||||||
На роутере включён OpenVPN-сервер с настройками:
|
На роутере включён OpenVPN-сервер с настройками:
|
||||||
- **Тип сервиса**: UDP (предположительно)
|
- **Тип сервиса**: UDP
|
||||||
- **Порт**: 1194 (стандартный)
|
- **Порт**: 1194
|
||||||
- **VPN-подсеть**: 192.168.45.0/24
|
- **VPN-подсеть**: 192.168.45.0/24
|
||||||
- **Клиентский доступ**: только домашняя сеть (доступ к ресурсам 192.168.1.0/24 разрешён)
|
- **Клиентский доступ**: только домашняя сеть (192.168.1.0/24)
|
||||||
|
|
||||||
Используется для удалённого подключения к домашней сети с мобильных устройств и ноутбуков.
|
Используется для удалённого подключения к домашней сети с мобильных устройств и ноутбуков.
|
||||||
|
|
||||||
|
### OlimpVPN (VLESS, внешний сервер)
|
||||||
|
|
||||||
|
| Параметр | Значение |
|
||||||
|
|----------|----------|
|
||||||
|
| **Сервер** | 2.27.50.20 (Финляндия) |
|
||||||
|
| **Домен** | charon.zailon.ru |
|
||||||
|
| **Протокол** | VLESS + Reality + XHTTP |
|
||||||
|
| **Порт** | 2054 |
|
||||||
|
| **Панель управления** | https://charon.zailon.ru:45131/olimp-styx/ |
|
||||||
|
| **URI подписки** | /charon-cerberus/ |
|
||||||
|
|
||||||
|
#### Конфигурация inbound
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Название: OlimpVpn
|
||||||
|
Протокол: VLESS
|
||||||
|
Порт: 2054
|
||||||
|
Транспорт: XHTTP
|
||||||
|
Безопасность: Reality
|
||||||
|
|
||||||
|
Reality параметры:
|
||||||
|
Target: cloud.zailon.ru:443
|
||||||
|
SNI: cloud.zailon.ru
|
||||||
|
uTLS: chrome
|
||||||
|
Public Key: TOyddQCTdSpycmO20uiLOqMABuKabpwVhw57tWmvJws
|
||||||
|
Short IDs: 174fc0, 568a8044d80a, b211, ...
|
||||||
|
SpiderX: /
|
||||||
|
|
||||||
|
XHTTP параметры:
|
||||||
|
Path: /remote.php/dav/upload
|
||||||
|
Mode: stream-one
|
||||||
|
Padding Bytes: 100-1000
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Подключение клиентов
|
||||||
|
|
||||||
|
Формат ссылки 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
|
||||||
|
```
|
||||||
|
|
||||||
|
Автоматическая подписка:
|
||||||
|
```
|
||||||
|
https://charon.zailon.ru:45131/charon-cerber/CLIENT_ID
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Примечание**: подробная инструкция по установке и управлению — в [документации OlimpVPN](08-olimpvpn.md).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## DNS
|
## DNS
|
||||||
|
|
||||||
Домен `zailon.ru` делегирован на внешний IP `188.73.191.202`. Все поддомены `*.zailon.ru` также указывают на этот IP через записи типа A.
|
Домен `zailon.ru` делегирован на внешний IP `188.73.191.202`. Все поддомены `*.zailon.ru` также указывают на этот IP через записи типа A.
|
||||||
|
|
||||||
|
| Поддомен | Назначение | Целевой хост |
|
||||||
|
|----------|------------|--------------|
|
||||||
|
| `charon.zailon.ru` | Панель OlimpVPN | 2.27.50.20 (VPS) |
|
||||||
|
| `nc.zailon.ru` | Nextcloud | 188.73.191.202 → 192.168.1.201 |
|
||||||
|
| `cloud.zailon.ru` | Reality SNI / Nextcloud | 188.73.191.202 → 192.168.1.201 |
|
||||||
|
| `*.zailon.ru` | Wildcard для сервисов | 188.73.191.202 |
|
||||||
|
|
||||||
DNS-серверы:
|
DNS-серверы:
|
||||||
- Внешние: стандартные провайдера (или публичные, например 8.8.8.8)
|
- Внешние: стандартные провайдера (или публичные, например 8.8.8.8)
|
||||||
- Локально: системный resolver на каждом хосте (127.0.0.53)
|
- Локально: системный resolver на каждом хосте (127.0.0.53)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Локальная сеть
|
## Локальная сеть
|
||||||
|
|
||||||
- **Подсеть**: 192.168.1.0/24
|
- **Подсеть**: 192.168.1.0/24
|
||||||
@ -71,21 +135,78 @@ DNS-серверы:
|
|||||||
- **DHCP**: включён на роутере, диапазон раздачи 192.168.1.100–192.168.1.200 (статические адреса для серверов заданы вручную)
|
- **DHCP**: включён на роутере, диапазон раздачи 192.168.1.100–192.168.1.200 (статические адреса для серверов заданы вручную)
|
||||||
- **Статические IP-адреса серверов**: см. раздел [Виртуальные машины и LXC](03-vms-lxcs.md)
|
- **Статические IP-адреса серверов**: см. раздел [Виртуальные машины и LXC](03-vms-lxcs.md)
|
||||||
|
|
||||||
|
### Ключевые хосты
|
||||||
|
|
||||||
|
| Хост | IP | Назначение |
|
||||||
|
|------|-----|------------|
|
||||||
|
| Роутер | 192.168.1.1 | Шлюз, DHCP, OpenVPN |
|
||||||
|
| NPM | 192.168.1.201 | Nginx Proxy Manager, SSL-терминация |
|
||||||
|
| Proxmox | 192.168.1.200 | Хост виртуализации |
|
||||||
|
| media (LXC) | 192.168.1.203 | Jellyfin, Samba, yt-dlp, xray-прокси |
|
||||||
|
| talk (LXC) | 192.168.1.206 | Snikket (XMPP), Mumble |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Безопасность сети
|
## Безопасность сети
|
||||||
|
|
||||||
- **Wi-Fi**: не документирован (вероятно, WPA2-PSK). Рекомендуется обновить до WPA3, если оборудование поддерживает.
|
- **Wi-Fi**: WPA2-PSK (рекомендуется обновление до WPA3)
|
||||||
- **Гостевая сеть**: отсутствует.
|
- **Гостевая сеть**: отсутствует
|
||||||
- **VLAN**: не используются.
|
- **VLAN**: не используются
|
||||||
|
- **Доступ к панели 3X-UI**:
|
||||||
|
- HTTPS + Let's Encrypt
|
||||||
|
- Секретный URI: `/olimp-styx/`
|
||||||
|
- Секретный subscription URI: `/charon-cerber/`
|
||||||
|
- Рекомендуется ограничить доступ по IP при возможности
|
||||||
|
|
||||||
|
### Fail2ban (опционально для 3X-UI)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# В docker-compose.yml 3X-UI:
|
||||||
|
environment:
|
||||||
|
XUI_ENABLE_FAIL2BAN: "true"
|
||||||
|
XUI_FAIL2BAN_PORT: "45131"
|
||||||
|
XUI_FAIL2BAN_MAX_RETRY: "5"
|
||||||
|
XUI_FAIL2BAN_BAN_TIME: "3600"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Мониторинг сети
|
## Мониторинг сети
|
||||||
|
|
||||||
- Сбор метрик через node_exporter (порт 9100) на всех хостах.
|
- Сбор метрик через node_exporter (порт 9100) на всех хостах
|
||||||
- Логи роутера не собираются (ограниченные возможности TP-Link).
|
- Логи роутера не собираются (ограниченные возможности TP-Link)
|
||||||
|
- Логи 3X-UI: `docker logs 3xui_app --tail 100 -f`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Бэкапы конфигурации
|
||||||
|
|
||||||
|
### OlimpVPN (3X-UI)
|
||||||
|
|
||||||
|
Автоматические еженедельные бэкапы на Nextcloud:
|
||||||
|
- **Скрипт**: `/opt/3x-ui/backup.sh`
|
||||||
|
- **Cron**: `0 3 * * 0` (воскресенье, 03:00)
|
||||||
|
- **Хранилище**: `nc.zailon.ru/VPN_Backups/3x-ui/`
|
||||||
|
- **Состав**: база данных, сертификаты, docker-compose.yml
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ручной бэкап
|
||||||
|
cd /opt/3x-ui
|
||||||
|
tar -czf backup_$(date +%Y%m%d).tar.gz db/ cert/ docker-compose.yml
|
||||||
|
|
||||||
|
# Восстановление
|
||||||
|
docker compose down
|
||||||
|
tar -xzf backup_*.tar.gz -C /opt/3x-ui/
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Важно**: токены и пароли хранятся отдельно, не включаются в бэкап.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Связанные разделы:**
|
**Связанные разделы:**
|
||||||
- [Виртуальные машины и LXC](03-vms-lxcs.md)
|
- [Виртуальные машины и LXC](03-vms-lxcs.md)
|
||||||
|
- [OlimpVPN — полная документация](08-olimpvpn.md)
|
||||||
- [Сервисы и порты](06-services.md)
|
- [Сервисы и порты](06-services.md)
|
||||||
- [Проксирование и SSL (NPM)](07-proxy-ssl.md)
|
- [Проксирование и SSL (NPM)](07-proxy-ssl.md)
|
||||||
- [Безопасность](10-security.md)
|
- [Безопасность](10-security.md)
|
||||||
571
docs/04b-olimpvpn.md
Normal file
571
docs/04b-olimpvpn.md
Normal file
@ -0,0 +1,571 @@
|
|||||||
|
# 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: /
|
||||||
|
Max Time Diff: 0
|
||||||
|
Min Client Ver: 25.9.11
|
||||||
|
Max Client Ver: 25.9.11
|
||||||
|
```
|
||||||
|
|
||||||
|
### XHTTP параметры
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
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
|
||||||
|
|
||||||
|
```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-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`
|
||||||
|
- Скопируйте пароль
|
||||||
|
|
||||||
|
#### Скрипт бэкапа
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/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 (еженедельно)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Делаем скрипт исполняемым
|
||||||
|
chmod +x /opt/3x-ui/backup.sh
|
||||||
|
|
||||||
|
# Добавляем в crontab
|
||||||
|
crontab -e
|
||||||
|
|
||||||
|
# Каждое воскресенье в 3:00
|
||||||
|
0 3 * * 0 /opt/3x-ui/backup.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Ручной бэкап
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Быстрый бэкап
|
||||||
|
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/
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Восстановление из бэкапа
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Останавливаем контейнер
|
||||||
|
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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/3x-ui
|
||||||
|
docker compose pull
|
||||||
|
docker compose up -d
|
||||||
|
docker image prune -f
|
||||||
|
```
|
||||||
|
|
||||||
|
### Обновление SSL сертификата
|
||||||
|
|
||||||
|
Certbot обновляет автоматически. Для проверки:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
### Мониторинг
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Логи 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;"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Полезные команды
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Перезапуск 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 открыт:
|
||||||
|
```bash
|
||||||
|
netstat -tlnp | grep 2054
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Проверьте логи:
|
||||||
|
```bash
|
||||||
|
docker logs 3xui_app | grep -i error
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Убедитесь что Reality ключи верные (совпадают с 3X-UI)
|
||||||
|
|
||||||
|
4. Проверьте время на сервере:
|
||||||
|
```bash
|
||||||
|
timedatectl status
|
||||||
|
```
|
||||||
|
|
||||||
|
### Панель не открывается
|
||||||
|
|
||||||
|
1. Проверьте статус:
|
||||||
|
```bash
|
||||||
|
docker ps | grep 3xui
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Проверьте SSL:
|
||||||
|
```bash
|
||||||
|
ls -la /opt/3x-ui/cert/
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Посмотрите логи nginx:
|
||||||
|
```bash
|
||||||
|
journalctl -u nginx -n 50
|
||||||
|
```
|
||||||
|
|
||||||
|
### Бэкап не загружается
|
||||||
|
|
||||||
|
1. Проверьте токен Nextcloud
|
||||||
|
2. Убедитесь что папка существует
|
||||||
|
3. Проверьте лог:
|
||||||
|
```bash
|
||||||
|
tail /var/log/3x-ui-backup.log
|
||||||
|
```
|
||||||
|
|
||||||
|
### Xray не запускается
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка конфигурации
|
||||||
|
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:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
environment:
|
||||||
|
XUI_ENABLE_FAIL2BAN: "true"
|
||||||
|
XUI_FAIL2BAN_PORT: "45131"
|
||||||
|
XUI_FAIL2BAN_MAX_RETRY: "5"
|
||||||
|
XUI_FAIL2BAN_BAN_TIME: "3600"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Связанные разделы
|
||||||
|
|
||||||
|
- [Сеть и доступ](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 (Финляндия)*
|
||||||
@ -129,14 +129,15 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🌐 Внешняя ВМ (VPN-сервер в облаке)
|
## 🌐 OlimpVPN (2.27.50.20 — Финляндия)
|
||||||
|
|
||||||
|
| Сервис | Порт | Доступ | Контейнер | Описание |
|
||||||
|
|--------|------|--------|-----------|----------|
|
||||||
|
| 3X-UI Panel | 45131 | 🌐 | 3xui_app | Веб-интерфейс управления, `charon.zailon.ru:45131/olimp-styx/` |
|
||||||
|
| Xray (VLESS Reality) | 2054 | 🌐 | 3xui_app | Основной VPN-протокол, VLESS + XHTTP + Reality |
|
||||||
|
| Xray (внутренний) | 2096 | 🔒 | 3xui_app | Внутренний порт Xray (localhost) |
|
||||||
|
| Let's Encrypt | 80/443 | 🌐 | — | SSL сертификаты (certbot на хосте) |
|
||||||
|
|
||||||
| Сервис | Порт | Доступ | Описание |
|
|
||||||
|--------|------|--------|----------|
|
|
||||||
| 3x-UI (Xray) | 2096 | 🌐 | Веб-интерфейс управления Xray |
|
|
||||||
| Xray (VLESS/VMess) | 443 | 🌐 | Основной протокол VPN |
|
|
||||||
| WireGuard (WG‑Easy) | 51821 (TCP) | 🌐 | Веб-интерфейс WireGuard |
|
|
||||||
| WireGuard (WG) | 51820 (UDP) | 🌐 | VPN-туннель |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -155,8 +156,6 @@
|
|||||||
| 9876-9877 | TCP/UDP | Игры (неактивны?) |
|
| 9876-9877 | TCP/UDP | Игры (неактивны?) |
|
||||||
| 50000-50100 | UDP | Snikket (медиа) |
|
| 50000-50100 | UDP | Snikket (медиа) |
|
||||||
|
|
||||||
> ⚠️ **Внимание**: Следует пересмотреть необходимость каждого проброшенного порта. Рекомендуется закрыть неиспользуемые.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Связанные разделы:**
|
**Связанные разделы:**
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user