feat: Добавлен скрипт установки, документация для сервера и Docker, обновлен README.
This commit is contained in:
85
install.ps1
Normal file
85
install.ps1
Normal file
@@ -0,0 +1,85 @@
|
||||
# ==========================================
|
||||
# 🚀 VPN PROXY INSTALLER
|
||||
# ==========================================
|
||||
# Этот скрипт автоматически скачивает и устанавливает VPN Proxy
|
||||
# Использование:
|
||||
# iwr https://git.dokops.ru/dokril/vpn-proxy/raw/branch/master/install.ps1 | iex
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# --- 1. Проверка прав администратора ---
|
||||
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator")) {
|
||||
Write-Warning "⚠️ Требуются права администратора!"
|
||||
Write-Host "🔄 Перезапускаю скрипт с правами администратора..." -ForegroundColor Cyan
|
||||
|
||||
# Сохраняем скрипт во временный файл, если он запущен из памяти (iex)
|
||||
if ($MyInvocation.MyCommand.CommandType -eq 'Script') {
|
||||
Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$($MyInvocation.MyCommand.Path)`"" -Verb RunAs
|
||||
}
|
||||
else {
|
||||
# Если запущено через IEX, мы не можем просто перезапустить файл.
|
||||
# Поэтому мы просто просим пользователя запустить терминал от админа.
|
||||
Write-Error "Пожалуйста, запустите PowerShell от имени Администратора и попробуйте снова."
|
||||
}
|
||||
exit
|
||||
}
|
||||
|
||||
# --- 2. Настройки ---
|
||||
$InstallRoot = "C:\Tools"
|
||||
$InstallDir = "$InstallRoot\vpn-proxy"
|
||||
# Точная ссылка предоставленная пользователем
|
||||
$ZipUrl = "https://git.dokops.ru/dokril/vpn-proxy/archive/master.zip"
|
||||
$TempZip = "$env:TEMP\vpn-proxy-install.zip"
|
||||
|
||||
Write-Host "🚀 Начинаем установку VPN Proxy..." -ForegroundColor Green
|
||||
Write-Host "📂 Путь установки: $InstallDir" -ForegroundColor Gray
|
||||
|
||||
# --- 3. Подготовка папки ---
|
||||
if (-not (Test-Path $InstallRoot)) {
|
||||
New-Item -ItemType Directory -Path $InstallRoot -Force | Out-Null
|
||||
}
|
||||
|
||||
# --- 4. Скачивание ---
|
||||
Write-Host "⬇️ Скачивание архива обновления..." -ForegroundColor Cyan
|
||||
try {
|
||||
Invoke-WebRequest -Uri $ZipUrl -OutFile $TempZip
|
||||
}
|
||||
catch {
|
||||
Write-Error "❌ Ошибка скачивания с $ZipUrl`nПроверьте подключение к интернету."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# --- 5. Распаковка ---
|
||||
Write-Host "📦 Распаковка..." -ForegroundColor Cyan
|
||||
|
||||
# Если папка уже есть, удаляем старую (делаем бэкап конфигов если нужно, но пока просто clean install)
|
||||
if (Test-Path $InstallDir) {
|
||||
# Можно добавить логику сохранения client.json, если нужно
|
||||
Remove-Item $InstallDir -Recurse -Force
|
||||
}
|
||||
|
||||
Expand-Archive -Path $TempZip -DestinationPath $InstallRoot -Force
|
||||
|
||||
# Архивы обычно распаковываются в папку vpn-proxy-master или vpn-proxy-main
|
||||
# Нам нужно переименовать её в vpn-proxy
|
||||
$ExtractedFolder = Get-ChildItem -Path $InstallRoot -Directory | Where-Object { $_.Name -match "vpn-proxy-(master|main)" } | Select-Object -First 1
|
||||
|
||||
if ($ExtractedFolder) {
|
||||
Rename-Item -Path $ExtractedFolder.FullName -NewName "vpn-proxy" -Force
|
||||
}
|
||||
|
||||
# Удаляем временный архив
|
||||
Remove-Item $TempZip -Force
|
||||
|
||||
if (-not (Test-Path "$InstallDir\manage.ps1")) {
|
||||
Write-Error "❌ Ошибка установки: файл manage.ps1 не найден в $InstallDir"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# --- 6. Запуск ---
|
||||
Write-Host "✅ Установка завершена!" -ForegroundColor Green
|
||||
Write-Host "🚀 Запускаем меню управления..." -ForegroundColor Cyan
|
||||
Start-Sleep -Seconds 1
|
||||
|
||||
Set-Location $InstallDir
|
||||
.\manage.ps1
|
||||
Reference in New Issue
Block a user