7.0 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 на сервере не обязателен — установка через 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-сеть) |
| Порт | 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 и отредактируйте |
password authentication failed |
Пароль в установщике ≠ пароль при первом запуске тома. Enter = changeme, или сброс: docker volume rm vpn-panel_pgdata |
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 на нодах — отдельный этап (будет добавлен в следующих версиях).