Fix deploy without Go: Docker installer, optional .env
This commit is contained in:
@@ -17,8 +17,8 @@ curl -fsSL https://get.docker.com | sudo sh
|
||||
sudo usermod -aG docker $USER
|
||||
# Перелогиньтесь или: newgrp docker
|
||||
|
||||
# Git и Go (для установщика)
|
||||
sudo apt install -y git golang-go
|
||||
# Git (Go на сервере не обязателен — установка через Docker)
|
||||
sudo apt install -y git
|
||||
```
|
||||
|
||||
Проверка:
|
||||
@@ -28,6 +28,8 @@ docker --version
|
||||
docker compose version
|
||||
```
|
||||
|
||||
> **Go не нужен.** Установщик запускается внутри контейнера.
|
||||
|
||||
---
|
||||
|
||||
## 2. Клонирование проекта
|
||||
@@ -74,26 +76,23 @@ docker compose ps
|
||||
|
||||
## 4. Установщик (первичная настройка)
|
||||
|
||||
Интерактивно задаёт домен, БД и учётку администратора.
|
||||
Интерактивно задаёт домен, БД и учётку администратора. **Go на сервере не нужен.**
|
||||
|
||||
### Вариант A — Go на сервере
|
||||
### Вариант A — один скрипт (рекомендуется)
|
||||
|
||||
```bash
|
||||
go run ./cmd/install
|
||||
chmod +x scripts/setup.sh
|
||||
./scripts/setup.sh
|
||||
```
|
||||
|
||||
### Вариант B — сборка установщика
|
||||
### Вариант B — установщик в Docker вручную
|
||||
|
||||
```bash
|
||||
go build -o install ./cmd/install
|
||||
./install
|
||||
```
|
||||
docker compose up -d postgres
|
||||
# дождитесь healthy: docker compose ps
|
||||
|
||||
### Вариант C — установщик в Docker
|
||||
|
||||
```bash
|
||||
docker compose build
|
||||
docker compose run --rm panel /app/install
|
||||
docker compose build install
|
||||
docker compose --profile tools run --rm install
|
||||
```
|
||||
|
||||
При запросах укажите:
|
||||
@@ -102,7 +101,7 @@ docker compose run --rm panel /app/install
|
||||
|------|--------|------------|
|
||||
| Домен панели | `panel.example.com` | Для ссылок и nginx |
|
||||
| Порт приложения | `8080` | Внешний порт в compose |
|
||||
| Хост БД | `postgres` | Имя сервиса в docker-compose |
|
||||
| Хост БД | **`postgres`** | Обязательно имя сервиса Docker, не `localhost` |
|
||||
| Порт БД | `5432` | |
|
||||
| Пользователь БД | `vpnpanel` | |
|
||||
| Пароль БД | *свой надёжный* | |
|
||||
@@ -218,7 +217,9 @@ cat backup.sql | docker exec -i vpn-panel-db psql -U vpnpanel vpnpanel
|
||||
|
||||
| Проблема | Решение |
|
||||
|----------|---------|
|
||||
| `DATABASE_URL не задан` | Запустите `./install` или создайте `.env` из `.env.example` |
|
||||
| `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` |
|
||||
|
||||
@@ -24,16 +24,23 @@
|
||||
|
||||
Полная инструкция: **[DEPLOY.md](DEPLOY.md)**
|
||||
|
||||
### Кратко
|
||||
### Кратко (без Go, только Docker)
|
||||
|
||||
```bash
|
||||
git clone https://git.evilfox.cc/test/vpn-panel.git
|
||||
cd vpn-panel
|
||||
|
||||
docker compose up -d postgres
|
||||
go run ./cmd/install # или ./install после сборки
|
||||
chmod +x scripts/setup.sh
|
||||
./scripts/setup.sh
|
||||
```
|
||||
|
||||
docker compose up -d --build
|
||||
Или вручную:
|
||||
|
||||
```bash
|
||||
docker compose up -d postgres
|
||||
docker compose build install
|
||||
docker compose --profile tools run --rm install # создаёт .env, хост БД: postgres
|
||||
docker compose up -d --build panel
|
||||
```
|
||||
|
||||
Панель: `http://ВАШ_ДОМЕН:8080`
|
||||
|
||||
+17
-2
@@ -17,16 +17,31 @@ services:
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
install:
|
||||
build: .
|
||||
profiles: ["tools"]
|
||||
stdin_open: true
|
||||
tty: true
|
||||
working_dir: /work
|
||||
volumes:
|
||||
- .:/work
|
||||
entrypoint: ["/app/install"]
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
||||
panel:
|
||||
build: .
|
||||
container_name: vpn-panel-app
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- "${APP_PORT:-8080}:8080"
|
||||
environment:
|
||||
APP_PORT: "8080"
|
||||
APP_DOMAIN: ${APP_DOMAIN:-localhost}
|
||||
DATABASE_URL: ${DATABASE_URL:-postgres://vpnpanel:changeme@postgres:5432/vpnpanel?sslmode=disable}
|
||||
SECRET_KEY: ${SECRET_KEY:-change-me-run-install-first}
|
||||
INSTALLED: ${INSTALLED:-false}
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
# Установка без Go — только Docker
|
||||
set -e
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
echo "=== VPN Panel — установка (Docker) ==="
|
||||
|
||||
if [ ! -f .env ]; then
|
||||
echo "Файл .env не найден — запускаем установщик..."
|
||||
docker compose up -d postgres
|
||||
echo "Ожидание PostgreSQL..."
|
||||
for i in $(seq 1 30); do
|
||||
if docker compose exec -T postgres pg_isready -U "${POSTGRES_USER:-vpnpanel}" -d "${POSTGRES_DB:-vpnpanel}" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
docker compose build install
|
||||
docker compose --profile tools run --rm install
|
||||
else
|
||||
echo "Найден .env — пропускаем установщик."
|
||||
docker compose up -d postgres
|
||||
fi
|
||||
|
||||
echo "Запуск панели..."
|
||||
docker compose up -d --build panel
|
||||
|
||||
echo ""
|
||||
echo "Готово. Панель: http://${APP_DOMAIN:-localhost}:${APP_PORT:-8080}"
|
||||
echo "Проверка: curl -s http://127.0.0.1:${APP_PORT:-8080}/health"
|
||||
Reference in New Issue
Block a user