7.3 KiB
7.3 KiB
Деплой на 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 остаются неизменными при пересборке контейнеров
- Возможен откат к предыдущей версии
🔐 Настройка безопасности
Переменные окружения:
# Установить пароль VDS (временно)
export VDS_PASSWORD="your_vds_password"
# Или добавить в ~/.bashrc для постоянного использования
echo 'export VDS_PASSWORD="your_vds_password"' >> ~/.bashrc
source ~/.bashrc
SSH ключи (рекомендуется):
# Создать 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. Подготовка изменений (локально):
# Убедитесь, что находитесь в приватной ветке
git checkout private/development
# Внесите изменения в код
# Протестируйте локально
./setup.sh
# Зафиксируйте изменения
git add .
git commit -m "feat: описание изменений"
git push origin private/development
2. Деплой на VDS:
# Полный деплой одной командой (используйте переменную окружения для пароля)
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. Проверка деплоя:
# Проверить статус контейнеров
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"
📊 Мониторинг
Просмотр логов в реальном времени:
# 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"
Проверка использования ресурсов:
sshpass -p "$VDS_PASSWORD" ssh -o StrictHostKeyChecking=no root@185.221.214.140 \
"cd /home/docker/dapp && docker stats --no-stream"
🔧 Устранение неполадок
Если деплой не удался:
# Проверить статус
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"
Откат к предыдущей версии:
# Вернуться к предыдущему коммиту
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
- Проверена совместимость схемы БД
После деплоя:
- Все контейнеры запущены
- Логи не содержат ошибок
- Приложение доступно по домену
- Данные пользователей сохранены
🔄 Резервное копирование
Создание бэкапа перед деплоем:
# Создать бэкап базы данных
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"
Восстановление из бэкапа:
# Восстановить базу данных
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"
📞 Поддержка
При возникновении проблем:
- Проверьте логи контейнеров
- Убедитесь, что все сервисы запущены
- Проверьте доступность VDS сервера
- При необходимости создайте issue в GitHub
Автор: Тарабанов Александр Викторович
Организация: HB3 Accelerator
Email: info@hb3-accelerator.com
Сайт: hb3-accelerator.com
© 2024-2025 Тарабанов Александр Викторович. Все права защищены.