montana/Монтана-Протокол/Код/montana-vpn/README.md

91 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

# Montana VPN
Self-hosted Reality-based VPN endpoint. Запускается рядом с узлом Montana либо отдельно. Не зависит от узла, не использует консенсус Montana — это отдельный слой.
Реализован по образцу production-эндпоинта в Финляндии (`montana-finland`, `91.132.142.42`).
## Что внутри
```
montana-vpn/
├── README.md — этот файл
├── install.sh — установка одной командой на чистый VPS
├── config-template/
│ ├── xray-config.json.template — xray Reality config с {{плейсхолдерами}}
│ ├── nginx-decoy.conf — :80 камуфляж (active-probing defense)
│ ├── decoy-index.html — "It works!" страница
│ ├── xray.service — systemd unit
│ ├── xray.service.d/
│ │ └── 10-donot_touch_single_conf.conf — xray installer drop-in
│ └── sysctl-bbr.conf — fq_codel + BBR (anti-bufferbloat)
└── docs/
├── architecture.md — как именно собрана Helsinki, детально
├── threat-model.md — что закрывает Reality + decoy, что нет
├── operator-guide.md — пошаговый развёртывание + обслуживание
└── client-config.md — формат VLESS URL + настройка клиентов
```
## Быстрый старт (оператор)
На чистом Ubuntu 24.04 / Debian 12 / Fedora / Alpine VPS:
```bash
git clone https://github.com/montana-protocol/montana.git /opt/montana
cd /opt/montana
sudo bash Протокол/Код/montana-vpn/install.sh
```
В конце скрипт выведет `vless://...` URL — это всё что клиент импортирует в свой Hiddify/v2rayN/Streisand.
## Установка вместе с узлом Montana
Один VPS — узел Montana + VPN рядом, два независимых systemd-сервиса:
```bash
sudo bash Протокол/Код/scripts/install-vps-full.sh
```
Поднимет:
- `montana-node.service` — узел консенсуса (singleton, без сетевого слоя M6)
- `xray.service` — VPN endpoint
- `nginx.service` — :80 decoy
Узел и VPN **не зависят** друг от друга. Можно остановить любой, второй продолжит работать.
## Только VPN (без узла Montana)
```bash
sudo bash Протокол/Код/montana-vpn/install.sh
```
## Только узел Montana (без VPN)
```bash
sudo bash Протокол/Код/scripts/install-vps.sh
```
## Что использует Montana VPN
- **xray-core** v26+ (xtls/xray-core, MIT) — VLESS + Reality + xtls-rprx-vision
- **nginx** 1.24+ — :80 decoy
- **ufw** — default deny + allow 22/80/443
- **systemd** hardening — `User=nobody`, `NoNewPrivileges`, `CapabilityBoundingSet`
Всё компоненты open-source, audit-trail известны, активно поддерживаются.
## Юрисдикция
VPN-узел берёт характеристики юрисдикции хостера. Helsinki-референс — Финляндия (нейтральная, нет mass-surveillance законов). Список нейтральных юрисдикций с провайдерами в `docs/operator-guide.md` шаг 0.
## Связь с протоколом Montana
**Никакой структурной зависимости.** VPN не использует консенсус, ключи Montana, identity-файл узла, mt-account, AccountTable, ничего из протокольного слоя.
Они **сосуществуют** на одном хосте если оператор хочет и хостить узел, и иметь exit-эндпоинт. Это удобно (один VPS, две функции), но не обязательно.
После M6 (когда у узла появится сетевой слой) **возможно** будет опциональная маршрутизация трафика узла через тот же Reality-эндпоинт — но это будущее, сейчас не предусмотрено.
## License
Конфиги, скрипты и документация в этом каталоге — публичное достояние (CC0 / Unlicense). Используемые компоненты (xray, nginx) — каждый под своей лицензией (MIT / BSD-2-Clause).