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
7.8 KiB
7.8 KiB
🚀 Развёртывание Nanaxe Server на Proxmox VPS
📋 Содержание
- Подготовка VPS
- Установка Docker
- Настройка сервера
- Запуск
- Настройка домена и SSL
- Подключение Flutter-приложения
Подготовка VPS
1. Создание LXC контейнера в Proxmox
# На хосте 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. Обновление системы
apt update && apt upgrade -y
apt install -y curl wget git nano htop
Установка Docker
# Установка 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. Клонирование репозитория
cd /opt
git clone <your-repo-url> nanaxe-server
cd nanaxe-server/server
2. Настройка переменных окружения
cp .env.example .env
nano .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. Создание директорий
mkdir -p api/logs
mkdir -p nginx/html
Запуск
1. Первый запуск
docker compose up -d
2. Проверка статуса
docker compose ps
docker compose logs -f
3. Инициализация Gitea
Откройте http://your-server-ip:3000 и выполните первоначальную настройку:
- Установите базу данных (уже настроена PostgreSQL)
- Создайте администратора
- Создайте API токен в Settings → Applications
- Добавьте токен в
.envфайл
# Перезапустите сервисы
docker compose restart
Настройка домена и SSL
1. Настройка DNS
Укажите A-записи:
your-domain.com→ IP сервераgit.your-domain.com→ IP сервераapi.your-domain.com→ IP сервера
2. Установка Certbot
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:
# Раскомментируйте 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 сертификатов:
nginx:
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/html:/usr/share/nginx/html:ro
- /etc/letsencrypt:/etc/letsencrypt:ro # Добавьте это
5. Перезапуск
docker compose down
docker compose up -d
Подключение Flutter-приложения
1. Настройка сервера в приложении
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. Авторизация
// Регистрация
await serverService.register(
'user@example.com',
'password',
'username',
);
// Или вход
await serverService.login(
'user@example.com',
'password',
);
3. Работа с mindmaps
// Получение списка
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');
🔧 Обслуживание
Обновление
cd /opt/nanaxe-server/server
git pull
docker compose pull
docker compose up -d
Бэкап
# Бэкап данных
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 .
Мониторинг
# Логи
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 и настройте:
# В настройках плагина
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
🆘 Устранение неполадок
Проблема: Порты заняты
# Проверка занятых портов
netstat -tlnp | grep -E '3000|8080|80'
# Измените порты в docker-compose.yml
Проблема: Permission denied
# Проверьте права
ls -la /opt/nanaxe-server/server
# Исправьте
chown -R $USER:$USER /opt/nanaxe-server/server
Проблема: Контейнеры не запускаются
# Проверьте логи
docker compose logs
# Пересоберите
docker compose down
docker compose build --no-cache
docker compose up -d