#!/bin/bash # Установка без Go — только Docker. БД только внутри Docker-сети. set -e cd "$(dirname "$0")/.." echo "=== VPN Panel — установка (Docker) ===" # Если .env нет — создаём с паролем ДО первого запуска postgres (том получит правильный пароль) if [ ! -f .env ]; then PG_PASS="${POSTGRES_PASSWORD:-$(openssl rand -base64 24 | tr -d '/+=' | head -c 24)}" SECRET="${SECRET_KEY:-$(openssl rand -base64 32)}" cat > .env </dev/null 2>&1; then break fi sleep 2 done if grep -q '^INSTALLED=true' .env 2>/dev/null; then echo ".env уже помечен INSTALLED=true — пропускаем установщик." else docker compose build install docker compose --profile tools run --rm install fi echo "Запуск панели..." docker compose up -d --build panel APP_PORT=$(grep -E '^APP_PORT=' .env | cut -d= -f2- | tr -d '\r' || echo 8080) APP_DOMAIN=$(grep -E '^APP_DOMAIN=' .env | cut -d= -f2- | tr -d '\r' || echo localhost) echo "" echo "Готово. Панель: http://${APP_DOMAIN}:${APP_PORT}" echo "Проверка: curl -s http://127.0.0.1:${APP_PORT}/health" echo "PostgreSQL: только внутри Docker (порт 5432 снаружи закрыт)."