6.1 KiB
6.1 KiB
Инструкция по развёртыванию 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 (для установщика)
sudo apt install -y git golang-go
Проверка:
docker --version
docker compose version
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. Установщик (первичная настройка)
Интерактивно задаёт домен, БД и учётку администратора.
Вариант A — Go на сервере
go run ./cmd/install
Вариант B — сборка установщика
go build -o install ./cmd/install
./install
Вариант C — установщик в Docker
docker compose build
docker compose run --rm panel /app/install
При запросах укажите:
| Поле | Пример | Примечание |
|---|---|---|
| Домен панели | panel.example.com |
Для ссылок и nginx |
| Порт приложения | 8080 |
Внешний порт в compose |
| Хост БД | postgres |
Имя сервиса в docker-compose |
| Порт БД | 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
Устранение неполадок
| Проблема | Решение |
|---|---|
DATABASE_URL не задан |
Запустите ./install или создайте .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 на нодах — отдельный этап (будет добавлен в следующих версиях).