Files
DLE/scripts/README.md
2026-03-01 22:03:48 +03:00

269 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
Copyright (c) 2024-2026 Тарабанов Александр Викторович
All rights reserved.
This software is proprietary and confidential.
Unauthorized copying, modification, or distribution is prohibited.
For licensing inquiries: info@hb3-accelerator.com
Website: https://hb3-accelerator.com
GitHub: https://github.com/VC-HB3-Accelerator
-->
# Скрипты миграции приложения
Этот набор скриптов позволяет полностью перенести приложение с базами данных между различными провайдерами.
## Файлы
- `migrate-app.sh` - Основной скрипт миграции приложения
- `update-dns.sh` - Скрипт обновления DNS записей
- `setup-gitea-db.sh` - Создание БД и пользователя для Gitea в PostgreSQL (один раз перед первым запуском Gitea)
- `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
```
### Gitea (PostgreSQL)
Перед первым запуском Gitea создайте БД и пользователя в существующем Postgres:
```bash
chmod +x scripts/setup-gitea-db.sh
./scripts/setup-gitea-db.sh
docker compose up -d gitea
```
Пароль по умолчанию для пользователя `gitea`: `gitea`. Свой пароль задайте в `.env`: `GITEA_DB_PASSWORD=...` (и тот же в docker-compose для сервиса gitea уже подхватывается).
## Безопасность
### 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 лицензией.