feat: Add Nanaxe server with Docker, GitHub Actions CI/CD, and auto-deployment

- Add complete server infrastructure with Gitea, API, PostgreSQL
- Implement Obsidian-compatible markdown mindmap converter
- Add Flutter service for server synchronization
- Configure GitHub Actions for automated build and deploy
- Add production docker-compose with health checks
- Include VPS setup and deployment scripts
- Add comprehensive deployment documentation
This commit is contained in:
2026-04-19 22:18:25 +05:00
parent 52aea9ac87
commit f1e0f6b5ef
56 changed files with 8892 additions and 397 deletions
+349
View File
@@ -0,0 +1,349 @@
# 🚀 Настройка GitHub Actions и Автодеплоя
## 📋 Содержание
1. [Создание репозитория](#создание-репозитория)
2. [Настройка Secrets](#настройка-secrets)
3. [Настройка VPS](#настройка-vps)
4. [Первый деплой](#первый-деплой)
5. [Автоматический деплой](#автоматический-деплой)
---
## Создание репозитория
### 1. Инициализация Git
```bash
# В корне проекта
cd c:\Users\ormix\StudioProjects\NANAXE
git init
# Добавьте .gitignore
echo "# Flutter/Dart
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
build/
*.g.dart
*.freezed.dart
# IDE
.idea/
.vscode/
*.iml
*.ipr
*.iws
# Environment
.env
.env.local
# Server
server/node_modules/
server/logs/
server/backups/
*.log
# OS
.DS_Store
Thumbs.db
" > .gitignore
# Первый коммит
git add .
git commit -m "Initial commit: Nanaxe CRM with server"
```
### 2. Создание репозитория на GitHub
```bash
# Создайте репозиторий на GitHub (через веб-интерфейс)
# Затем:
git remote add origin https://github.com/YOUR_USERNAME/nanaxe-crm.git
git branch -M main
git push -u origin main
```
---
## Настройка Secrets
Перейдите в **Settings → Secrets and variables → Actions** и добавьте:
### Обязательные Secrets
| Secret Name | Description | Example |
|-------------|-------------|---------|
| `VPS_HOST` | IP или домен VPS | `203.0.113.1` или `nanaxe.example.com` |
| `VPS_USER` | SSH пользователь | `root` или `deploy` |
| `VPS_SSH_KEY` | Приватный SSH ключ | Содержимое `~/.ssh/id_rsa` |
| `DEPLOY_PATH` | Путь на сервере | `/opt/nanaxe-server` |
### Опциональные Secrets
| Secret Name | Description |
|-------------|-------------|
| `GITEA_DOMAIN` | Домен для Gitea |
| `GITEA_TOKEN` | API токен Gitea |
| `JWT_SECRET` | Секретный ключ JWT |
| `POSTGRES_PASSWORD` | Пароль PostgreSQL |
| `WEBDAV_USER` | WebDAV пользователь |
| `WEBDAV_PASSWORD` | WebDAV пароль |
### Генерация SSH ключа
На вашем локальном компьютере:
```bash
# Сгенерируйте ключ (без пароля для CI/CD)
ssh-keygen -t ed25519 -C "github-actions" -f ~/.ssh/nanaxe_deploy
# Добавьте публичный ключ на VPS
ssh-copy-id -i ~/.ssh/nanaxe_deploy.pub root@YOUR_VPS_IP
# Скопируйте приватный ключ для GitHub
cat ~/.ssh/nanaxe_deploy
# Скопируйте вывод в секрет VPS_SSH_KEY
```
---
## Настройка VPS
### 1. Быстрая настройка (автоматическая)
```bash
# На VPS выполните:
curl -fsSL https://raw.githubusercontent.com/YOUR_USERNAME/nanaxe-crm/main/server/scripts/setup-vps.sh | bash
```
### 2. Ручная настройка
```bash
# Скопируйте скрипт на VPS
scp server/scripts/setup-vps.sh root@YOUR_VPS_IP:/tmp/
# Выполните
ssh root@YOUR_VPS_IP
chmod +x /tmp/setup-vps.sh
/tmp/setup-vps.sh
```
### 3. Что делает скрипт
- ✅ Обновляет систему
- ✅ Устанавливает Docker и Docker Compose
- ✅ Настраивает UFW firewall
- ✅ Устанавливает Fail2Ban
- ✅ Создаёт директорию деплоя
- ✅ Настраивает SSL (Let's Encrypt)
- ✅ Создаёт systemd сервис
- ✅ Генерирует секреты
---
## Первый деплой
### 1. Локально настройте окружение
```bash
cd server
cp .env.example .env
# Отредактируйте .env
```
### 2. Запушьте на GitHub
```bash
git add .
git commit -m "Add server deployment configuration"
git push origin main
```
### 3. Запустите GitHub Actions
Перейдите в **Actions** вкладку на GitHub и запустите workflow вручную или дождитесь автоматического запуска.
### 4. Проверьте деплой
```bash
# На VPS
ssh root@YOUR_VPS_IP
cd /opt/nanaxe-server/server
docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml logs -f
```
---
## Автоматический деплой
### Как это работает
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Push to │────→│ GitHub │────→│ Build & │
│ main │ │ Actions │ │ Push │
└─────────────┘ └─────────────┘ │ Docker │
│ Image │
└──────┬──────┘
│
▼
┌─────────────┐
│ Deploy │
│ to VPS │
└──────┬──────┘
│
▼
┌─────────────┐
│ Health │
│ Check │
└─────────────┘
```
### Триггеры деплоя
Автодеплой запускается при:
- Push в `main` или `master` ветку
- Merge Pull Request
- Ручной запуск через GitHub UI
### Проверка статуса
```bash
# На VPS
docker compose -f docker-compose.prod.yml ps
# Логи API
docker compose -f docker-compose.prod.yml logs api -f
# Логи Gitea
docker compose -f docker-compose.prod.yml logs gitea -f
```
---
## 🔧 Полезные команды
### Ручной деплой
```bash
# На VPS
cd /opt/nanaxe-server/server
bash scripts/deploy.sh
```
### Откат (Rollback)
```bash
# Через GitHub Actions
# Actions → Deploy Nanaxe Server → Run workflow → Use workflow from: main
# Выберите "Rollback" (если добавлено) или вручную:
# На VPS
docker compose -f docker-compose.prod.yml down
docker compose -f docker-compose.prod.yml up -d
```
### Обновление
```bash
# Локально
git pull origin main
# Внесите изменения
git add . && git commit -m "Update" && git push
# GitHub Actions автоматически задеплоит
```
### Мониторинг
```bash
# Статус сервисов
docker compose -f docker-compose.prod.yml ps
# Использование ресурсов
docker stats
# Логи в реальном времени
docker compose -f docker-compose.prod.yml logs -f --tail=100
```
---
## 🐛 Устранение неполадок
### Проблема: Деплой не запускается
```bash
# Проверьте GitHub Actions logs
# Actions → Deploy Nanaxe Server → Последний run
```
### Проблема: SSH подключение не работает
```bash
# На VPS проверьте ключ
cat ~/.ssh/authorized_keys
# Проверьте права
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
```
### Проблема: Контейнеры не стартуют
```bash
# На VPS
cd /opt/nanaxe-server/server
docker compose -f docker-compose.prod.yml down
docker compose -f docker-compose.prod.yml up -d
docker compose -f docker-compose.prod.yml logs
```
### Проблема: Health check failed
```bash
# Проверьте API
curl http://localhost:8080/health
# Проверьте Gitea
curl http://localhost:3000/api/healthz
```
---
## 📊 Workflow файлы
### Основной деплой: `.github/workflows/deploy.yml`
- Собирает Docker образ
- Публикует в GitHub Container Registry
- Деплоит на VPS
- Запускает health checks
- Поддерживает rollback
### PR Checks: `.github/workflows/pr-check.yml`
- Запускается на Pull Request
- Проверяет код
- Тестирует сборку Docker
- Сканирует уязвимости
- Валидирует docker-compose
---
## 🎉 Готово!
Теперь при каждом push в `main`:
1. ✅ Код автоматически тестируется
2. ✅ Docker образ собирается
3. ✅ Образ публикуется в GitHub Container Registry
4. ✅ VPS автоматически обновляется
5. ✅ Health checks проверяют работоспособность
Ваш сервер всегда будет актуальным! 🚀