# 🚀 Развёртывание 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 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/)