This commit is contained in:
2026-10-28 18:36:47 +04:00
parent 489e888ad2
commit d7252da3c7
8 changed files with 337 additions and 1 deletions

View File

@@ -254,4 +254,85 @@ vim default.conf
```bash
podman-compose -f init-compose.yml down
podman-compose up -d --build
```
```
---
## 1️⃣3️⃣ Xray — VPN-доступ к домашней сети (VLESS + Reality)
> VLESS + Reality маскирует трафик под обычный HTTPS. Отдельный домен и SSL-сертификат не нужны, а порт можно пробросить снаружи. Подходит для доступа к домашней сети и как личный VPN.
```bash
cd xray
cp .env.example .env && vim .env
chmod +x setup.sh
./setup.sh
podman-compose up -d
```
`setup.sh` автоматически:
- генерирует UUID, ключевую пару X25519 и Short ID;
- создаёт `config/config.json` из шаблона;
- проверяет конфигурацию через `xray run -test`;
- выводит готовую ссылку `vless://...` для клиента.
> ⚠️ Файлы `.env` и `config/config.json` содержат секреты и исключены из Git. Ссылка подключения тоже является секретом — не публикуйте её.
> После изменения `XRAY_PORT`, `XRAY_DEST` или `XRAY_SERVER_NAME` в `.env` запустите `./setup.sh` заново — он пересоберёт `config/config.json` и проверит его. Секреты при этом сохраняются.
### Проброс порта
В OPNsense: **Межсетевой экран > NAT > Переадресация портов**
- **Interface:** WAN
- **Protocol:** TCP
- **Destination:** WAN address
- **Destination port range:** `2053` (или ваш `XRAY_PORT`)
- **Redirect target IP:** IP вашего сервера с Podman
- **Redirect target port:** `2053` (или ваш `XRAY_PORT`)
- **Filter rule association:** Add associated filter rule
> В rootless Podman нельзя слушать порты ниже 1024, поэтому по умолчанию используется `2053`. Не занимайте `8443` — он уже используется nginx-proxy. При необходимости внешний порт можно сделать другим, но тогда клиент должен подключаться именно к внешнему порту.
> Предупреждение Xray о порте не-443 и выбранном `dest` относится к блокировкам GFW (Китай). Для домашнего сервера в России это не критично, но `dest` лучше выбирать из доступных вам крупных сайтов с TLS 1.3.
Если нужен стабильный адрес вместо IP, добавьте поддомен `vpn` в `proxy/ddns/domains.txt` и укажите в `.env`:
```ini
XRAY_PUBLIC_HOST=vpn.domain.ru
```
### Доступ к домашней сети
Сервер Xray не навязывает маршруты клиенту — маршрутизацию настраиваем в клиенте:
- **Только домашняя сеть:** оставьте интернет напрямую, а подсеть `192.168.0.0/16` (или `geoip:private`) направьте в proxy.
- **Полный туннель:** весь трафик (`0.0.0.0/0`) направьте в proxy.
Для доступа по именам добавьте локальные записи в клиент или используйте DNS домашней сети (например, AdGuard/OPNsense), направив DNS-запросы через туннель.
### Добавление устройства
Для каждого устройства лучше использовать отдельный UUID. Добавьте свой объект в `clients` внутри `config/config.json`:
```json
{
"id": "новый-uuid",
"flow": "xtls-rprx-vision"
}
```
После изменения перезапустите контейнер:
```bash
podman-compose restart xray
```
Сгенерировать новый UUID можно командой:
```bash
podman run --rm ghcr.io/xtls/xray-core:latest uuid
```
Ссылка для нового устройства строится по той же схеме, что вывел `setup.sh`: меняется только UUID в начале ссылки.