Files
vpn-panel/DEPLOY.md
T

6.7 KiB
Raw Blame History

Инструкция по развёртыванию VPN Panel

Репозиторий: https://git.evilfox.cc/test/vpn-panel.git


1. Подготовка сервера

Рекомендуется VPS с Ubuntu 22.04/24.04 или Debian 12.

# Обновление системы
sudo apt update && sudo apt upgrade -y

# Docker
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
# Перелогиньтесь или: newgrp docker

# Git (Go на сервере не обязателен — установка через Docker)
sudo apt install -y git

Проверка:

docker --version
docker compose version

Go не нужен. Установщик запускается внутри контейнера.


2. Клонирование проекта

cd /opt
sudo git clone https://git.evilfox.cc/test/vpn-panel.git
sudo chown -R $USER:$USER vpn-panel
cd vpn-panel

Если репозиторий приватный — используйте токен или SSH:

# HTTPS с токеном Gitea
git clone https://USER:TOKEN@git.evilfox.cc/test/vpn-panel.git

# или SSH
git clone git@git.evilfox.cc:test/vpn-panel.git

3. Запуск PostgreSQL

docker compose up -d postgres
docker compose ps

Дождитесь статуса healthy у контейнера vpn-panel-db.

По умолчанию (до .env):

Параметр Значение
Хост postgres (внутри Docker) / 127.0.0.1 (с хоста)
Порт 5432
БД vpnpanel
Пользователь vpnpanel
Пароль changeme (смените в установщике)

4. Установщик (первичная настройка)

Интерактивно задаёт домен, БД и учётку администратора. Go на сервере не нужен.

Вариант A — один скрипт (рекомендуется)

chmod +x scripts/setup.sh
./scripts/setup.sh

Вариант B — установщик в Docker вручную

docker compose up -d postgres
# дождитесь healthy: docker compose ps

docker compose build install
docker compose --profile tools run --rm install

При запросах укажите:

Поле Пример Примечание
Домен панели panel.example.com Для ссылок и nginx
Порт приложения 8080 Внешний порт в compose
Хост БД postgres Обязательно имя сервиса Docker, не localhost
Порт БД 5432
Пользователь БД vpnpanel
Пароль БД свой надёжный
Имя БД vpnpanel
Email админа admin@example.com единственный админ
Пароль админа мин. 8 символов

Будет создан файл .env (права 600). Не коммитьте .env в git.


5. Запуск панели

docker compose up -d --build
docker compose logs -f panel

Проверка:

curl http://127.0.0.1:8080/health
# {"status":"ok","core":"xray"}

В браузере: http://IP_СЕРВЕРА:8080


6. HTTPS (Nginx + Let's Encrypt)

Пример для домена panel.example.com:

sudo apt install -y nginx certbot python3-certbot-nginx

/etc/nginx/sites-available/vpn-panel:

server {
    listen 80;
    server_name panel.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
sudo ln -s /etc/nginx/sites-available/vpn-panel /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d panel.example.com

В .env обновите APP_DOMAIN=panel.example.com.


7. Файрвол

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Если без nginx — открыть порт панели:
# sudo ufw allow 8080/tcp
sudo ufw enable

8. Регистрация администратора

  • Если установщик уже создал админа — войдите на /login.
  • Если нет — один раз откройте /register (пока админа нет в БД).

После первого админа /register закрывается.


9. Обновление

cd /opt/vpn-panel
git pull
docker compose up -d --build

10. Резервное копирование БД

docker exec vpn-panel-db pg_dump -U vpnpanel vpnpanel > backup_$(date +%F).sql

Восстановление:

cat backup.sql | docker exec -i vpn-panel-db psql -U vpnpanel vpnpanel

Устранение неполадок

Проблема Решение
Command 'go' not found Не ставьте Go — используйте ./scripts/setup.sh или docker compose --profile tools run --rm install
env file .env not found Обновите репозиторий (git pull) или создайте .env: cp .env.example .env и отредактируйте
DATABASE_URL не задан Запустите установщик в Docker или создайте .env из .env.example
Нет подключения к БД docker compose ps, проверьте healthy у postgres
Порт занят Смените APP_PORT в .env и в docker-compose.yml
Регистрация закрыта Админ уже есть — используйте /login

Логи:

docker compose logs panel
docker compose logs postgres

Переменные .env (справочник)

APP_PORT=8080
APP_DOMAIN=panel.example.com
DATABASE_URL=postgres://vpnpanel:PASSWORD@postgres:5432/vpnpanel?sslmode=disable
SECRET_KEY=<случайная строка, генерируется установщиком>
INSTALLED=true

POSTGRES_USER=vpnpanel
POSTGRES_PASSWORD=PASSWORD
POSTGRES_DB=vpnpanel
POSTGRES_HOST=postgres
POSTGRES_PORT=5432

Связь с Xray-core

Панель подготовлена под ядро Xray-core. Установка и конфигурация Xray на нодах — отдельный этап (будет добавлен в следующих версиях).