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

91 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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).