f1e0f6b5ef
- 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
370 lines
7.8 KiB
Markdown
370 lines
7.8 KiB
Markdown
# 🚀 Развёртывание 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/)
|