diff --git a/backend/config/session.js b/backend/config/session.js index 8d91750..5f50cca 100644 --- a/backend/config/session.js +++ b/backend/config/session.js @@ -13,6 +13,7 @@ const session = require('express-session'); const pgSession = require('connect-pg-simple')(session); const db = require('../db'); +const crypto = require('crypto'); let onPoolChangeCallback = null; @@ -28,7 +29,7 @@ function createSessionMiddleware() { pool: db.getPool(), tableName: 'session', }), - secret: process.env.SESSION_SECRET || 'hb3atoken', + secret: process.env.SESSION_SECRET || crypto.randomBytes(32).toString('hex'), name: 'sessionId', resave: true, saveUninitialized: false, diff --git a/docs/VDS_DEPLOYMENT.md b/docs/VDS_DEPLOYMENT.md new file mode 100644 index 0000000..53fec19 --- /dev/null +++ b/docs/VDS_DEPLOYMENT.md @@ -0,0 +1,192 @@ +# Деплой на 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 Тарабанов Александр Викторович. Все права защищены.**