Files
Avtex/server/DEPLOY.md
T
Alexyz f1e0f6b5ef 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
2026-04-19 22:18:25 +05:00

370 lines
7.8 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.
# 🚀 Развёртывание Nanaxe Server на Proxmox VPS
## 📋 Содержание
1. [Подготовка VPS](#подготовка-vps)
2. [Установка Docker](#установка-docker)
3. [Настройка сервера](#настройка-сервера)
4. [Запуск](#запуск)
5. [Настройка домена и SSL](#настройка-домена-и-ssl)
6. [Подключение Flutter-приложения](#подключение-flutter-приложения)
---
## Подготовка VPS
### 1. Создание LXC контейнера в Proxmox
```bash
# На хосте Proxmox создайте контейнер
pct create 100 local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--hostname nanaxe-server \
--memory 2048 \
--cores 2 \
--rootfs local-lvm:10 \
--net0 name=eth0,bridge=vmbr0,ip=dhcp
# Запустите контейнер
pct start 100
# Войдите в контейнер
pct enter 100
```
### 2. Обновление системы
```bash
apt update && apt upgrade -y
apt install -y curl wget git nano htop
```
---
## Установка Docker
```bash
# Установка Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
# Добавление пользователя в группу docker
usermod -aG docker $USER
# Установка Docker Compose
apt install -y docker-compose-plugin
# Проверка
docker --version
docker compose version
```
---
## Настройка сервера
### 1. Клонирование репозитория
```bash
cd /opt
git clone <your-repo-url> nanaxe-server
cd nanaxe-server/server
```
### 2. Настройка переменных окружения
```bash
cp .env.example .env
nano .env
```
Заполните файл:
```env
# Domain configuration
GITEA_DOMAIN=your-domain.com
# Gitea Configuration
GITEA_TOKEN=your_gitea_api_token_here
# Security (сгенерируйте случайный ключ)
JWT_SECRET=$(openssl rand -base64 32)
# WebDAV (optional)
WEBDAV_USER=admin
WEBDAV_PASSWORD=your_secure_password
# Database (обязательно измените!)
POSTGRES_PASSWORD=$(openssl rand -base64 24)
```
### 3. Создание директорий
```bash
mkdir -p api/logs
mkdir -p nginx/html
```
---
## Запуск
### 1. Первый запуск
```bash
docker compose up -d
```
### 2. Проверка статуса
```bash
docker compose ps
docker compose logs -f
```
### 3. Инициализация Gitea
Откройте `http://your-server-ip:3000` и выполните первоначальную настройку:
1. Установите базу данных (уже настроена PostgreSQL)
2. Создайте администратора
3. Создайте API токен в Settings → Applications
4. Добавьте токен в `.env` файл
```bash
# Перезапустите сервисы
docker compose restart
```
---
## Настройка домена и SSL
### 1. Настройка DNS
Укажите A-записи:
- `your-domain.com` → IP сервера
- `git.your-domain.com` → IP сервера
- `api.your-domain.com` → IP сервера
### 2. Установка Certbot
```bash
apt install -y certbot
# Получение сертификатов
certbot certonly --standalone -d your-domain.com -d git.your-domain.com -d api.your-domain.com
```
### 3. Настройка Nginx
Отредактируйте `nginx/nginx.conf`:
```nginx
# Раскомментируйте HTTPS server section
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
# ... rest of config
}
```
### 4. Обновление docker-compose.yml
Добавьте volume для SSL сертификатов:
```yaml
nginx:
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/html:/usr/share/nginx/html:ro
- /etc/letsencrypt:/etc/letsencrypt:ro # Добавьте это
```
### 5. Перезапуск
```bash
docker compose down
docker compose up -d
```
---
## Подключение Flutter-приложения
### 1. Настройка сервера в приложении
```dart
import 'package:nanaxe_crm/core/nanaxe_server_service.dart';
final serverService = NanaxeServerService();
// При инициализации
await serverService.initialize();
// Если не настроен - настройте
if (!serverService.isConfigured) {
await serverService.configure(
'https://api.your-domain.com',
);
}
// Проверка соединения
final isConnected = await serverService.checkConnection();
```
### 2. Авторизация
```dart
// Регистрация
await serverService.register(
'user@example.com',
'password',
'username',
);
// Или вход
await serverService.login(
'user@example.com',
'password',
);
```
### 3. Работа с mindmaps
```dart
// Получение списка
final mindmaps = await serverService.getMindMaps();
// Создание
final newMap = await serverService.createMindMap(
title: 'My Project',
description: 'Project planning',
nodes: [
{'id': '1', 'title': 'Root', 'level': 0, 'parentId': null},
{'id': '2', 'title': 'Task 1', 'level': 1, 'parentId': '1'},
],
);
// Синхронизация с Gitea
await serverService.pushToGitea(commitMessage: 'Updated project plan');
```
---
## 🔧 Обслуживание
### Обновление
```bash
cd /opt/nanaxe-server/server
git pull
docker compose pull
docker compose up -d
```
### Бэкап
```bash
# Бэкап данных
tar -czf backup-$(date +%Y%m%d).tar.gz /opt/nanaxe-server/server
# Или бэкап volumes
docker run --rm -v nanaxe-server_mindmap-data:/data -v $(pwd):/backup alpine tar czf /backup/mindmaps-backup.tar.gz -C /data .
```
### Мониторинг
```bash
# Логи
docker compose logs -f
# Статистика
docker stats
# Дисковое пространство
df -h
docker system df
```
---
## 🌐 Доступ к сервисам
После развёртывания:
| Сервис | URL | Описание |
|--------|-----|----------|
| Web UI | `http://your-domain.com` | Главная страница |
| Gitea | `http://your-domain.com:3000` | Git репозиторий |
| API | `http://your-domain.com:8080` | REST API |
| WebDAV | `http://your-domain.com:8081` | Прямой доступ к файлам |
---
## 📱 Obsidian Интеграция
### 1. Git Sync плагин
Установите плагин **Obsidian Git** и настройте:
```bash
# В настройках плагина
Remote URL: http://your-domain.com:3000/username/mindmaps.git
```
### 2. Прямой доступ через WebDAV
Установите плагин **Remote Save** и настройте WebDAV:
```
URL: http://your-domain.com:8081
Username: admin
Password: your_secure_password
```
---
## 🆘 Устранение неполадок
### Проблема: Порты заняты
```bash
# Проверка занятых портов
netstat -tlnp | grep -E '3000|8080|80'
# Измените порты в docker-compose.yml
```
### Проблема: Permission denied
```bash
# Проверьте права
ls -la /opt/nanaxe-server/server
# Исправьте
chown -R $USER:$USER /opt/nanaxe-server/server
```
### Проблема: Контейнеры не запускаются
```bash
# Проверьте логи
docker compose logs
# Пересоберите
docker compose down
docker compose build --no-cache
docker compose up -d
```
---
## 📚 Дополнительно
- [Gitea Documentation](https://docs.gitea.io/)
- [Docker Documentation](https://docs.docker.com/)
- [Nginx Documentation](https://nginx.org/en/docs/)