4.8 KiB
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:
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-сервиса:
sudo bash Протокол/Код/scripts/install-vps-full.sh
Поднимет:
montana-node.service— узел консенсуса (singleton, без сетевого слоя M6)xray.service— VPN endpointnginx.service— :80 decoy
Узел и VPN не зависят друг от друга. Можно остановить любой, второй продолжит работать.
Только VPN (без узла Montana)
sudo bash Протокол/Код/montana-vpn/install.sh
Только узел Montana (без VPN)
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).