feat: описание изменений
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
const session = require('express-session');
|
const session = require('express-session');
|
||||||
const pgSession = require('connect-pg-simple')(session);
|
const pgSession = require('connect-pg-simple')(session);
|
||||||
const db = require('../db');
|
const db = require('../db');
|
||||||
|
const crypto = require('crypto');
|
||||||
|
|
||||||
let onPoolChangeCallback = null;
|
let onPoolChangeCallback = null;
|
||||||
|
|
||||||
@@ -28,7 +29,7 @@ function createSessionMiddleware() {
|
|||||||
pool: db.getPool(),
|
pool: db.getPool(),
|
||||||
tableName: 'session',
|
tableName: 'session',
|
||||||
}),
|
}),
|
||||||
secret: process.env.SESSION_SECRET || 'hb3atoken',
|
secret: process.env.SESSION_SECRET || crypto.randomBytes(32).toString('hex'),
|
||||||
name: 'sessionId',
|
name: 'sessionId',
|
||||||
resave: true,
|
resave: true,
|
||||||
saveUninitialized: false,
|
saveUninitialized: false,
|
||||||
|
|||||||
192
docs/VDS_DEPLOYMENT.md
Normal file
192
docs/VDS_DEPLOYMENT.md
Normal file
@@ -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 Тарабанов Александр Викторович. Все права защищены.**
|
||||||
Reference in New Issue
Block a user