montana/Монтана-Протокол/Код/scripts/install-vps-full.sh

76 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
# Montana VPS full install — узел Montana + VPN endpoint на одном Linux VPS.
#
# Что делает:
# 1. Запускает scripts/install-vps.sh — узел Montana (systemd + identity + start)
# 2. Запускает montana-vpn/install.sh — VPN endpoint (xray Reality + nginx decoy)
#
# Узел и VPN — два независимых systemd-сервиса. Можно остановить любой,
# второй продолжит работать. Конфигурация каждого описана в своём README.
#
# Использование:
# sudo bash scripts/install-vps-full.sh
#
# Опции через env vars (опционально):
# DECOY_HOST=www.cloudflare.com — dest SNI для Reality (default googletagmanager)
# CLIENT_EMAIL=alice — email-метка клиента в xray
# SKIP_NODE=1 — пропустить установку узла (только VPN)
# SKIP_VPN=1 — пропустить установку VPN (только узел)
set -euo pipefail
SCRIPT_PATH="${BASH_SOURCE[0]}"
if [ -L "$SCRIPT_PATH" ]; then
SCRIPT_PATH="$(readlink "$SCRIPT_PATH")"
fi
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
CODE_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
INSTALL_VPS="$SCRIPT_DIR/install-vps.sh"
INSTALL_VPN="$CODE_DIR/montana-vpn/install.sh"
log() { printf '\033[1;32m[install-vps-full]\033[0m %s\n' "$*"; }
die() { printf '\033[1;31m[install-vps-full] ОШИБКА:\033[0m %s\n' "$*" >&2; exit 1; }
[ "$(id -u)" = "0" ] || die "требуется sudo/root"
[ -f "$INSTALL_VPS" ] || die "не найден $INSTALL_VPS"
[ -f "$INSTALL_VPN" ] || die "не найден $INSTALL_VPN"
if [ "${SKIP_NODE:-0}" != "1" ]; then
log ""
log "================================================================"
log " ШАГ 1/2 — установка узла Montana"
log "================================================================"
log ""
bash "$INSTALL_VPS"
else
log "SKIP_NODE=1 — пропускаю установку узла"
fi
if [ "${SKIP_VPN:-0}" != "1" ]; then
log ""
log "================================================================"
log " ШАГ 2/2 — установка VPN endpoint"
log "================================================================"
log ""
bash "$INSTALL_VPN"
else
log "SKIP_VPN=1 — пропускаю установку VPN"
fi
log ""
log "================================================================"
log " ВСЁ ГОТОВО"
log "================================================================"
log ""
log "Узел Montana: systemctl status montana-node"
log "VPN endpoint: systemctl status xray"
log "decoy nginx: systemctl status nginx"
log ""
log "Логи узла: journalctl -u montana-node -f"
log "Логи VPN: journalctl -u xray -f"
log ""
log "VLESS URL для клиента — выведен выше в шаге 2."
log "Бэкап мнемоники узла — выведен в шаге 1, сохрани в надёжное место."