# 🚀 Развертывание на VPS Инструкция по запуску pg-admin на VPS (Ubuntu 24.04, другие версии похожи). ## Быстрый старт (3 шага) ### 1️⃣ Подключись к VPS и клонируй репозиторий ```bash ssh root@YOUR_VPS_IP cd ~ git clone git@your-repo-url:your-org/pg-admin.git cd pg-admin ``` ### 2️⃣ Генерируй безопасные пароли ```bash bash scripts/generate-secrets.sh ``` Скопируй выходные значения. ### 3️⃣ Создай и настрой .env ```bash cp .env.example .env nano .env ``` **Замени в .env:** - `CHANGE_ME_TO_STRONG_PASSWORD` → Пароль из `generate-secrets.sh` - `CHANGE_ME_TO_STRONG_RANDOM_SECRET` → JWT_SECRET из `generate-secrets.sh` - `your-domain.com` → Твой реальный доменName (или IP на тест) - `FRONTEND_API_URL` → `http://ТВЙ_ДОМЕН/api` - `CORS_ORIGIN` → `http://ТВЙ_ДОМЕН` (пока HTTP) Сохрани (Ctrl+X, Y, Enter в nano). ### 4️⃣ Запусти инициализацию ```bash bash scripts/setup-vps.sh ``` Скрипт установит Docker, настроит контейнеры и запустит приложение. ### 5️⃣ Проверь статус ```bash docker compose ps docker compose logs -f ``` Приложение готово на `http://YOUR_VPS_IP:80` 🎉 --- ## 📋 Требования - **OS:** Ubuntu 20.04+ (или другой Linux с Docker) - **RAM:** Минимум 2GB (рекомендуется 4GB) - **CPU:** 2 ядра (рекомендуется 4+) - **Диск:** 20GB свободного места (SSD лучше) - **Порты:** 80/TCP открыты в файрволе --- ## 🔒 Безопасность на VPS ### ✅ Сделано в docker-compose.yml: - ❌ БД не открыта наружу (только для контейнеров) - ❌ Redis не открыт наружу (только для контейнеров) - ❌ API не открыт напрямую (только через Nginx) - ✅ Nginx проксирует запросы безопасно - ✅ Ограничение ресурсов на контейнеры - ✅ Health checks для отказоустойчивости ### ⚠️ Нужно сделать вручную: #### 1. Настрой файрвол (UFW) ```bash # Разреши только необходимые порты sudo ufw enable sudo ufw allow 22/tcp # SSH (для удаленного доступа) sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS (когда добавишь SSL) sudo ufw status ``` #### 2. Добавь SSH ключи (вместо пароля) ```bash # На локальной машине генерируй ключ если нет ssh-keygen -t ed25519 -C "your-email@example.com" # Скопируй публичный ключ на VPS ssh-copy-id -i ~/.ssh/id_ed25519.pub root@YOUR_VPS_IP # Отключи вход по пароеи в sshd_config sudo nano /etc/ssh/sshd_config # Найди и измени на: # PasswordAuthentication no # PubkeyAuthentication yes sudo systemctl reload ssh ``` #### 3. Установи Let's Encrypt SSL/HTTPS Позже, когда будешь готов: ```bash sudo apt-get install certbot python3-certbot-nginx sudo certbot certonly --standalone -d your-domain.com -d www.your-domain.com ``` Затем обнови nginx.conf и docker-compose.yml для HTTPS. #### 4. Настрой резервное копирование БД ```bash # Создай backup скрипт mkdir -p backups cat > backups/backup-db.sh << 'EOF' #!/bin/bash BACKUP_DIR="./backups" TIMESTAMP=$(date +%Y%m%d_%H%M%S) docker exec pg-admin-db pg_dump -U postgres pg_admin | gzip > $BACKUP_DIR/backup_$TIMESTAMP.sql.gz echo "✅ Backup завершен: backup_$TIMESTAMP.sql.gz" EOF chmod +x backups/backup-db.sh # Настрой cron для ежедневного backup (21:00 UTC) crontab -e # Добавь строку: # 0 21 * * * cd /root/pg-admin && bash backups/backup-db.sh ``` #### 5. Мониторинг логов ```bash # Просмотри логи всех контейнеров docker compose logs -f # Или конкретного контейнера docker compose logs -f pg-admin-api # Проверь дисковое пространство df -h # Проверь использование памяти docker stats ``` --- ## 🛠️ Частые команды ```bash # Посмотри статус контейнеров docker compose ps # Перезагрузи приложение docker compose restart # Обнови код и перестрой git pull origin main docker compose up -d --build # Посмотри логи docker compose logs -f # Останови все docker compose down # Полная переустановка (опасно - удалит данные!) docker compose down -v docker compose up -d --build ``` --- ## 🔄 Pipeline для development → production 1. ✅ Делай коммиты в git 2. ✅ Пуш на main/master 3. ✅ На VPS: `git pull origin main` 4. ✅ На VPS: `docker compose up -d --build` 5. ✅ Проверь: `docker compose logs -f` --- ## 📊 Проверка здоровья приложения ```bash # Проверь доступность curl -I http://YOUR_VPS_IP:80/ # Посмотри статус контейнеров docker compose ps # Проверь память и CPU docker stats # Посмотри логи ошибок docker compose logs | grep -i error ``` --- ## 🚨 Troubleshooting ### Контейнер крашится при старте ```bash # Посмотри логи docker compose logs pg-admin-api # Перестрой с чистого листа docker compose down -v docker compose up -d --build ``` ### БД не подключается ```bash # Проверь что БД запущена docker compose ps # Проверь логи БД docker compose logs pg-admin-db # Проверь переменные окружения docker compose exec pg-admin-api env | grep DB ``` ### Порт уже занят ```bash # Найди процесс на порту 80 sudo lsof -i :80 # Убей процесс (замени PID) sudo kill -9 PID # Или смени порт в .env: NGINX_PORT=8080 docker compose up -d ``` ### No space left on device ```bash # Очисти Docker образы docker image prune -a # Очисти volumes (ОСТОРОЖНО!) docker volume prune # Посмотри место на диске df -h ``` --- ## 📞 Поддержка Если что-то не работает: 1. Проверь логи: `docker compose logs -f` 2. Проверь конфигурацию .env 3. Посмотри порты: `sudo netstat -tlnp | grep LISTEN` 4. Перезагрузи: `docker compose restart` --- **Создано для pg-admin | VPS Deployment Guide v1.0**