ваше сообщение коммита

This commit is contained in:
2025-07-06 00:36:20 +03:00
parent 6182c2ced1
commit af3771ad8c
32 changed files with 3935 additions and 3166 deletions

247
scripts/README.md Normal file
View File

@@ -0,0 +1,247 @@
# Скрипты миграции приложения
Этот набор скриптов позволяет полностью перенести приложение с базами данных между различными провайдерами.
## Файлы
- `migrate-app.sh` - Основной скрипт миграции приложения
- `update-dns.sh` - Скрипт обновления DNS записей
- `README.md` - Эта инструкция
## Что мигрируется
Скрипт переносит **всё приложение**:
### ✅ **Контейнеры:**
- Frontend (Vue.js)
- Backend (Node.js)
- PostgreSQL (база данных)
- Ollama (AI модели)
- Vector Search
### ✅ **Данные:**
- PostgreSQL база данных (полный дамп)
- Ollama модели (список для восстановления)
- Переменные окружения
- Конфигурационные файлы
### ❌ **Исключается:**
- `node_modules/` (пересобирается)
- `.git/` (не нужен на продакшене)
- `*.log` (логи)
- `temp/` (временные файлы)
- `sessions/` (сессии)
## Требования
### На исходном сервере:
- Docker и Docker Compose
- SSH доступ
- Достаточно места для бэкапа
### На целевом сервере:
- Docker и Docker Compose
- SSH доступ
- Достаточно места для приложения
### На локальной машине:
- SSH ключи настроены для обоих серверов
- `dig` (для проверки DNS)
- `curl` (для API запросов)
- `jq` (для работы с JSON)
## Использование
### 1. Миграция приложения
```bash
# Сделать скрипт исполняемым
chmod +x scripts/migrate-app.sh
# Запустить миграцию
./scripts/migrate-app.sh source-server target-server app-path
```
**Пример:**
```bash
./scripts/migrate-app.sh user@hostland-server.com user@aws-server.com /home/user/dapp
```
### 2. Обновление DNS записей
```bash
# Сделать скрипт исполняемым
chmod +x scripts/update-dns.sh
# Запустить обновление DNS
./scripts/update-dns.sh domain new-server-ip
```
**Пример:**
```bash
./scripts/update-dns.sh mydapp.site 123.456.789.10
```
## Автоматическое обновление DNS
Скрипт поддерживает автоматическое обновление DNS через API:
### Cloudflare
```bash
export CLOUDFLARE_API_TOKEN="your-api-token"
./scripts/update-dns.sh mydapp.site 123.456.789.10
```
### GoDaddy
```bash
export GODADDY_API_KEY="your-api-key"
export GODADDY_API_SECRET="your-api-secret"
./scripts/update-dns.sh mydapp.site 123.456.789.10
```
### Namecheap
```bash
export NAMECHEAP_API_USER="your-username"
export NAMECHEAP_API_KEY="your-api-key"
./scripts/update-dns.sh mydapp.site 123.456.789.10
```
## Процесс миграции
### 1. Подготовка
- Проверка подключений к серверам
- Проверка установки Docker
- Создание временных файлов
### 2. Создание бэкапа
- Остановка приложения
- Создание дампа PostgreSQL
- Сохранение списка Ollama моделей
- Создание полного архива
### 3. Восстановление
- Копирование архива на целевой сервер
- Распаковка файлов
- Восстановление PostgreSQL
- Восстановление Ollama моделей
- Запуск приложения
### 4. Проверка
- Проверка статуса контейнеров
- Проверка логов
- Проверка доступности портов
- Очистка временных файлов
## Примеры использования
### Миграция с Hostland на AWS
```bash
# 1. Мигрируем приложение
./scripts/migrate-app.sh user@hostland.com ec2-user@aws-server.com /home/ec2-user/dapp
# 2. Получаем новый IP
NEW_IP=$(ssh ec2-user@aws-server.com "curl -s ifconfig.me")
# 3. Обновляем DNS
./scripts/update-dns.sh mydapp.site $NEW_IP
```
### Миграция с AWS на DigitalOcean
```bash
# 1. Мигрируем приложение
./scripts/migrate-app.sh ec2-user@aws-server.com root@digitalocean.com /root/dapp
# 2. Получаем новый IP
NEW_IP=$(ssh root@digitalocean.com "curl -s ifconfig.me")
# 3. Обновляем DNS
./scripts/update-dns.sh mydapp.site $NEW_IP
```
## Мониторинг процесса
Скрипты выводят подробную информацию о процессе:
- `[INFO]` - Информационные сообщения
- `[SUCCESS]` - Успешные операции
- `[WARNING]` - Предупреждения
- `[ERROR]` - Ошибки
## Устранение неполадок
### Ошибка подключения SSH
```bash
# Проверьте SSH ключи
ssh -T user@server.com
# Добавьте ключ в ssh-agent
ssh-add ~/.ssh/id_rsa
```
### Ошибка Docker
```bash
# Установите Docker на сервере
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
```
### Ошибка DNS
```bash
# Проверьте DNS записи
dig mydapp.site
# Обновите вручную в панели управления доменом
```
### Ошибка восстановления PostgreSQL
```bash
# Проверьте логи PostgreSQL
docker compose logs postgres
# Создайте базу вручную
docker compose exec postgres createdb -U dapp_user dapp_db
```
## Безопасность
### SSH ключи
- Используйте SSH ключи вместо паролей
- Ограничьте доступ к серверам
- Регулярно обновляйте ключи
### API ключи
- Храните API ключи в переменных окружения
- Не коммитьте ключи в репозиторий
- Используйте минимальные права доступа
### Данные
- Бэкапы содержат чувствительные данные
- Удаляйте временные файлы после миграции
- Шифруйте бэкапы при необходимости
## Резервное копирование
Рекомендуется создавать резервные копии перед миграцией:
```bash
# Создать бэкап вручную
cd /path/to/app
docker compose down
tar -czf backup-$(date +%Y%m%d).tar.gz .
```
## Поддержка
При возникновении проблем:
1. Проверьте логи скриптов
2. Проверьте статус контейнеров
3. Проверьте подключения к серверам
4. Проверьте DNS записи
5. Обратитесь к документации провайдера
## Лицензия
Эти скрипты распространяются под MIT лицензией.