# Деплой на VDS - Руководство ## 📋 Обзор Этот документ описывает процесс безопасного деплоя изменений из приватной ветки `private/development` на VDS сервер с сохранением данных пользователей. ## 🔄 Workflow разработки ### Структура веток: ``` 🌍 main (публичная) ← Базовый софт для скачивания 🔒 private/development (приватная) ← Разработка и тестирование ``` ### VDS конфигурация: - **Адрес:** 185.221.214.140 - **Пользователь:** root - **Пароль:** [НЕ ХРАНИТЬ В ДОКУМЕНТАЦИИ - использовать переменные окружения] - **Путь:** /home/docker/dapp - **Compose файл:** docker-compose.prod.yml ## 🛡️ Безопасность данных ### Docker Volumes (сохраняются при обновлениях): - `postgres_data` - база данных пользователей - `ollama_data` - AI модели - `vector_search_data` - векторные индексы ### Важно: - Данные пользователей НЕ удаляются при обновлении кода - Volumes остаются неизменными при пересборке контейнеров - Возможен откат к предыдущей версии ## 🔐 Настройка безопасности ### Переменные окружения: ```bash # Установить пароль VDS (временно) export VDS_PASSWORD="your_vds_password" # Или добавить в ~/.bashrc для постоянного использования echo 'export VDS_PASSWORD="your_vds_password"' >> ~/.bashrc source ~/.bashrc ``` ### SSH ключи (рекомендуется): ```bash # Создать SSH ключ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # Скопировать публичный ключ на VDS ssh-copy-id root@185.221.214.140 # После этого можно использовать ssh без пароля ssh root@185.221.214.140 "cd /home/docker/dapp && docker compose -f docker-compose.prod.yml ps" ``` ## 🚀 Процесс деплоя ### 1. Подготовка изменений (локально): ```bash # Убедитесь, что находитесь в приватной ветке git checkout private/development # Внесите изменения в код # Протестируйте локально ./setup.sh # Зафиксируйте изменения git add . git commit -m "feat: описание изменений" git push origin private/development ``` ### 2. Деплой на VDS: ```bash # Полный деплой одной командой (используйте переменную окружения для пароля) sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && git pull origin private/development && docker compose -f docker-compose.prod.yml up -d --build && docker exec dapp-backend yarn migrate" # Или используйте SSH ключи (рекомендуется): ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && git pull origin private/development && docker compose -f docker-compose.prod.yml up -d --build && docker exec dapp-backend yarn migrate" ``` ### 3. Проверка деплоя: ```bash # Проверить статус контейнеров sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && docker compose -f docker-compose.prod.yml ps" # Проверить логи sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && docker compose -f docker-compose.prod.yml logs backend" ``` ## 📊 Мониторинг ### Просмотр логов в реальном времени: ```bash # Backend логи sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && docker compose -f docker-compose.prod.yml logs -f backend" # Все логи sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && docker compose -f docker-compose.prod.yml logs -f" ``` ### Проверка использования ресурсов: ```bash sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && docker stats --no-stream" ``` ## 🔧 Устранение неполадок ### Если деплой не удался: ```bash # Проверить статус sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && docker compose -f docker-compose.prod.yml ps" # Перезапустить сервисы sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && docker compose -f docker-compose.prod.yml restart" ``` ### Откат к предыдущей версии: ```bash # Вернуться к предыдущему коммиту sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && git reset --hard HEAD~1 && docker compose -f docker-compose.prod.yml up -d --build" ``` ## 📋 Чек-лист деплоя ### Перед деплоем: - [ ] Код протестирован локально - [ ] Изменения зафиксированы в `private/development` - [ ] Изменения отправлены в GitHub - [ ] Проверена совместимость схемы БД ### После деплоя: - [ ] Все контейнеры запущены - [ ] Логи не содержат ошибок - [ ] Приложение доступно по домену - [ ] Данные пользователей сохранены ## 🔄 Резервное копирование ### Создание бэкапа перед деплоем: ```bash # Создать бэкап базы данных sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && docker exec dapp-postgres pg_dump -U dapp_user dapp_db > backup_$(date +%Y%m%d_%H%M%S).sql" ``` ### Восстановление из бэкапа: ```bash # Восстановить базу данных sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \ "cd /home/docker/dapp && docker exec -i dapp-postgres psql -U dapp_user dapp_db < backup_YYYYMMDD_HHMMSS.sql" ``` ## 📞 Поддержка При возникновении проблем: 1. Проверьте логи контейнеров 2. Убедитесь, что все сервисы запущены 3. Проверьте доступность VDS сервера 4. При необходимости создайте issue в GitHub --- **Автор:** Тарабанов Александр Викторович **Организация:** HB3 Accelerator **Email:** info@hb3-accelerator.com **Сайт:** [hb3-accelerator.com](https://hb3-accelerator.com) **© 2024-2025 Тарабанов Александр Викторович. Все права защищены.**