Add auto-deploy workflow and fix dashboard URLs
This commit is contained in:
@@ -0,0 +1,85 @@
|
|||||||
|
name: 🚀 Деплой Nanaxe Server
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
paths:
|
||||||
|
- 'server/**'
|
||||||
|
- '.github/workflows/deploy-server.yml'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: self-hosted
|
||||||
|
name: Деплой сервера майндкарт
|
||||||
|
steps:
|
||||||
|
- name: 📥 Скачать код
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: 🔄 Синхронизация файлов
|
||||||
|
run: |
|
||||||
|
SERVER_PATH="/opt/nanaxe-server"
|
||||||
|
|
||||||
|
mkdir -p $SERVER_PATH/api
|
||||||
|
mkdir -p $SERVER_PATH/nginx/html
|
||||||
|
mkdir -p $SERVER_PATH/nginx/conf.d
|
||||||
|
mkdir -p $SERVER_PATH/scripts
|
||||||
|
|
||||||
|
# Синхронизация docker-compose
|
||||||
|
cp -f server/docker-compose.yml $SERVER_PATH/docker-compose.yml
|
||||||
|
|
||||||
|
# Синхронизация API
|
||||||
|
rsync -av --delete server/api/ $SERVER_PATH/api/
|
||||||
|
|
||||||
|
# Синхронизация nginx
|
||||||
|
cp -f server/nginx/nginx.conf $SERVER_PATH/nginx/nginx.conf
|
||||||
|
cp -f server/nginx/html/* $SERVER_PATH/nginx/html/
|
||||||
|
|
||||||
|
# Синхронизация скриптов
|
||||||
|
cp -f server/scripts/* $SERVER_PATH/scripts/ 2>/dev/null || true
|
||||||
|
|
||||||
|
# Копировать .env если не существует
|
||||||
|
if [ ! -f $SERVER_PATH/.env ]; then
|
||||||
|
cp -f server/.env.example $SERVER_PATH/.env
|
||||||
|
echo "⚠️ Создан .env из примера - ОБНОВИТЕ ДЛЯ PRODUCTION!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✅ Файлы синхронизированы"
|
||||||
|
|
||||||
|
- name: 🐳 Пересборка и перезапуск
|
||||||
|
run: |
|
||||||
|
cd /opt/nanaxe-server
|
||||||
|
|
||||||
|
# Пересобрать API
|
||||||
|
docker compose build nanaxe-api
|
||||||
|
|
||||||
|
# Перезапустить все сервисы
|
||||||
|
docker compose down
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
echo "✅ Сервисы перезапущены"
|
||||||
|
|
||||||
|
- name: ✅ Проверка здоровья
|
||||||
|
run: |
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
# Проверка API
|
||||||
|
API_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8082/health 2>/dev/null || echo "000")
|
||||||
|
if [ "$API_STATUS" = "200" ]; then
|
||||||
|
echo "✅ API работает"
|
||||||
|
else
|
||||||
|
echo "⚠️ API статус: $API_STATUS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Проверка Gitea
|
||||||
|
GITEA_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3001 2>/dev/null || echo "000")
|
||||||
|
if [ "$GITEA_STATUS" = "200" ]; then
|
||||||
|
echo "✅ Gitea работает"
|
||||||
|
else
|
||||||
|
echo "⚠️ Gitea статус: $GITEA_STATUS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Список контейнеров
|
||||||
|
docker compose -f /opt/nanaxe-server/docker-compose.yml ps
|
||||||
|
|
||||||
|
echo "✅ ДЕПЛОЙ ЗАВЕРШЁН УСПЕШНО!"
|
||||||
@@ -51,3 +51,4 @@ coverage/
|
|||||||
# Temporary files
|
# Temporary files
|
||||||
*.tmp
|
*.tmp
|
||||||
*.temp
|
*.temp
|
||||||
|
server/api/node_modules/
|
||||||
|
|||||||
Submodule
+1
Submodule obsidian-git added at 8e91800cfa
@@ -0,0 +1,164 @@
|
|||||||
|
# 🔗 Интеграция Nanaxe Server с Consyscab
|
||||||
|
|
||||||
|
Это руководство по добавлению Nanaxe Server в существующую инфраструктуру Consyscab.
|
||||||
|
|
||||||
|
## 📁 Структура файлов
|
||||||
|
|
||||||
|
```
|
||||||
|
project-root/
|
||||||
|
├── docker-compose.yml # Объединённый файл
|
||||||
|
├── docker/
|
||||||
|
│ ├── nginx/
|
||||||
|
│ │ └── conf.d/
|
||||||
|
│ │ ├── default.conf # Существующий конфиг
|
||||||
|
│ │ └── nanaxe.conf # Новый: конфиг Nanaxe
|
||||||
|
│ ├── php/
|
||||||
|
│ └── postgres/
|
||||||
|
│ └── init-db.sh
|
||||||
|
├── nanaxe/ # Новая папка
|
||||||
|
│ ├── api/ # Nanaxe API код
|
||||||
|
│ │ ├── Dockerfile
|
||||||
|
│ │ ├── package.json
|
||||||
|
│ │ └── src/
|
||||||
|
│ ├── nginx/
|
||||||
|
│ │ └── nanaxe.conf # Nginx конфиг для Nanaxe
|
||||||
|
│ ├── html/ # Статические файлы
|
||||||
|
│ │ └── index.html
|
||||||
|
│ └── postgres-init/
|
||||||
|
│ └── init-gitea.sql # Инициализация БД Gitea
|
||||||
|
├── backend/ # Symfony
|
||||||
|
├── frontend/ # Quasar
|
||||||
|
├── moodle/ # Moodle
|
||||||
|
└── .env # Переменные окружения
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 Быстрый старт
|
||||||
|
|
||||||
|
### 1. Скопируйте файлы Nanaxe
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Скопируйте папку nanaxe/ в корень проекта вашего друга
|
||||||
|
cp -r /path/to/nanaxe/server/nanaxe ./
|
||||||
|
|
||||||
|
# Скопируйте объединённый docker-compose.yml
|
||||||
|
cp /path/to/nanaxe/server/docker-compose.integrated.yml ./docker-compose.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Обновите .env
|
||||||
|
|
||||||
|
Добавьте в `.env`:
|
||||||
|
|
||||||
|
```env
|
||||||
|
# Nanaxe Configuration
|
||||||
|
GITEA_DOMAIN=git.yourdomain.com
|
||||||
|
GITEA_SECRET_KEY=$(openssl rand -base64 32)
|
||||||
|
GITEA_TOKEN=
|
||||||
|
NANAXE_JWT_SECRET=$(openssl rand -base64 32)
|
||||||
|
WEBDAV_USER=admin
|
||||||
|
WEBDAV_PASSWORD=$(openssl rand -base64 16)
|
||||||
|
DB_PASSWORD=your_postgres_password
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Настройте DNS
|
||||||
|
|
||||||
|
Настройте поддомены:
|
||||||
|
- `git.yourdomain.com` → IP сервера
|
||||||
|
- `api.yourdomain.com` → IP сервера
|
||||||
|
- `nanaxe.yourdomain.com` → IP сервера (опционально)
|
||||||
|
|
||||||
|
### 4. Запустите
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose down
|
||||||
|
docker compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Ручная интеграция (если не хотите заменять docker-compose.yml)
|
||||||
|
|
||||||
|
### Добавьте сервисы в существующий docker-compose.yml:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Nanaxe Gitea
|
||||||
|
nanaxe_gitea:
|
||||||
|
image: gitea/gitea:latest
|
||||||
|
container_name: nanaxe_gitea
|
||||||
|
environment:
|
||||||
|
- GITEA__database__DB_TYPE=postgres
|
||||||
|
- GITEA__database__HOST=consyscab_db:5432
|
||||||
|
- GITEA__database__NAME=gitea
|
||||||
|
- GITEA__database__USER=user
|
||||||
|
- GITEA__database__PASSWD=${DB_PASSWORD}
|
||||||
|
volumes:
|
||||||
|
- gitea_data:/data
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
|
||||||
|
# Nanaxe API
|
||||||
|
nanaxe_api:
|
||||||
|
build:
|
||||||
|
context: ./nanaxe/api
|
||||||
|
container_name: nanaxe_api
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=production
|
||||||
|
- PORT=8080
|
||||||
|
- GITEA_URL=http://nanaxe_gitea:3000
|
||||||
|
- JWT_SECRET=${NANAXE_JWT_SECRET}
|
||||||
|
volumes:
|
||||||
|
- mindmap_data:/app/mindmaps
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
pg_data:
|
||||||
|
gitea_data: # Добавьте
|
||||||
|
mindmap_data: # Добавьте
|
||||||
|
```
|
||||||
|
|
||||||
|
### Добавьте в nginx конфиг:
|
||||||
|
|
||||||
|
Создайте файл `docker/nginx/conf.d/nanaxe.conf`:
|
||||||
|
|
||||||
|
```nginx
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name git.yourdomain.com;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://nanaxe_gitea:3000;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name api.yourdomain.com;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://nanaxe_api:8080;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## ✅ Проверка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверьте статус
|
||||||
|
docker compose ps
|
||||||
|
|
||||||
|
# Проверьте API
|
||||||
|
curl http://api.yourdomain.com/health
|
||||||
|
|
||||||
|
# Откройте Gitea
|
||||||
|
open http://git.yourdomain.com
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📝 Примечания
|
||||||
|
|
||||||
|
- Nanaxe использует ту же PostgreSQL базу, что и Consyscab
|
||||||
|
- Nginx вашего друга проксирует запросы к Nanaxe
|
||||||
|
- Все сервисы в одной Docker сети `consyscab-network`
|
||||||
|
- Данные Gitea хранятся в volume `gitea_data`
|
||||||
|
- Mindmaps хранятся в volume `mindmap_data`
|
||||||
@@ -0,0 +1,216 @@
|
|||||||
|
# Nanaxe Server + Consyscab Integration
|
||||||
|
# Объединённая конфигурация для совместного развёртывания
|
||||||
|
|
||||||
|
services:
|
||||||
|
# ==========================================
|
||||||
|
# 1. Единая база данных PostgreSQL
|
||||||
|
# ==========================================
|
||||||
|
consyscab_db:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
container_name: consyscab_db
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=user
|
||||||
|
- POSTGRES_PASSWORD=${DB_PASSWORD:-password}
|
||||||
|
- POSTGRES_DB=symfony_db
|
||||||
|
volumes:
|
||||||
|
- pg_data:/var/lib/postgresql/data
|
||||||
|
- ./docker/postgres/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro
|
||||||
|
# Nanaxe: инициализация базы Gitea
|
||||||
|
- ./nanaxe/postgres-init:/docker-entrypoint-initdb.d/nanaxe:ro
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U user"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 2. PHP 8.4 (Symfony + Moodle)
|
||||||
|
# ==========================================
|
||||||
|
consyscab_php:
|
||||||
|
build:
|
||||||
|
context: ./docker/php
|
||||||
|
container_name: consyscab_php
|
||||||
|
volumes:
|
||||||
|
- ./backend:/var/www/symfony
|
||||||
|
- ./moodle:/var/www/moodle
|
||||||
|
- ./moodledata:/var/www/moodledata
|
||||||
|
- ./docker/php/custom.ini:/usr/local/etc/php/conf.d/custom.ini:ro
|
||||||
|
- ~/.gitconfig:/var/www/.gitconfig:ro
|
||||||
|
depends_on:
|
||||||
|
consyscab_db:
|
||||||
|
condition: service_healthy
|
||||||
|
consyscab_memcached:
|
||||||
|
condition: service_started
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 3. Nginx (Consyscab + Nanaxe)
|
||||||
|
# ==========================================
|
||||||
|
consyscab_nginx:
|
||||||
|
image: nginx:alpine
|
||||||
|
container_name: consyscab_nginx
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
volumes:
|
||||||
|
- ./backend:/var/www/symfony
|
||||||
|
- ./moodle:/var/www/moodle
|
||||||
|
- ./docker/nginx/conf.d:/etc/nginx/conf.d
|
||||||
|
# Nanaxe: дополнительная конфигурация
|
||||||
|
- ./nanaxe/nginx:/etc/nginx/conf.d/nanaxe:ro
|
||||||
|
- ./nanaxe/html:/usr/share/nginx/html/nanaxe:ro
|
||||||
|
depends_on:
|
||||||
|
- consyscab_php
|
||||||
|
- nanaxe_gitea
|
||||||
|
- nanaxe_api
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 4. Adminer
|
||||||
|
# ==========================================
|
||||||
|
consyscab_adminer:
|
||||||
|
image: adminer
|
||||||
|
container_name: consyscab_adminer
|
||||||
|
depends_on:
|
||||||
|
- consyscab_db
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 5. Memcached
|
||||||
|
# ==========================================
|
||||||
|
consyscab_memcached:
|
||||||
|
image: memcached:alpine
|
||||||
|
container_name: consyscab_memcached
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 6. Node.js для Quasar
|
||||||
|
# ==========================================
|
||||||
|
consyscab_front:
|
||||||
|
image: node:22-alpine
|
||||||
|
container_name: consyscab_front
|
||||||
|
user: "1000:1000"
|
||||||
|
ports:
|
||||||
|
- "9000:9000"
|
||||||
|
- "9005:9005"
|
||||||
|
working_dir: /app
|
||||||
|
volumes:
|
||||||
|
- ./frontend:/app
|
||||||
|
- ~/.gitconfig:/var/www/.gitconfig:ro
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=development
|
||||||
|
tty: true
|
||||||
|
stdin_open: true
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 7. Mercure Hub
|
||||||
|
# ==========================================
|
||||||
|
consyscab_mercure:
|
||||||
|
image: dunglas/mercure
|
||||||
|
container_name: consyscab_mercure
|
||||||
|
environment:
|
||||||
|
MERCURE_PUBLISHER_JWT_KEY: ${MERCURE_JWT_SECRET:-secret}
|
||||||
|
MERCURE_SUBSCRIBER_JWT_KEY: ${MERCURE_JWT_SECRET:-secret}
|
||||||
|
ALLOW_ANONYMOUS: 1
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 8. Nanaxe Gitea (Git сервер)
|
||||||
|
# ==========================================
|
||||||
|
nanaxe_gitea:
|
||||||
|
image: gitea/gitea:latest
|
||||||
|
container_name: nanaxe_gitea
|
||||||
|
environment:
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- GITEA__database__DB_TYPE=postgres
|
||||||
|
- GITEA__database__HOST=consyscab_db:5432
|
||||||
|
- GITEA__database__NAME=gitea
|
||||||
|
- GITEA__database__USER=user
|
||||||
|
- GITEA__database__PASSWD=${DB_PASSWORD:-password}
|
||||||
|
- GITEA__server__DOMAIN=${GITEA_DOMAIN:-git.localhost}
|
||||||
|
- GITEA__server__ROOT_URL=http://${GITEA_DOMAIN:-git.localhost}
|
||||||
|
- GITEA__server__SSH_DOMAIN=${GITEA_DOMAIN:-git.localhost}
|
||||||
|
- GITEA__server__SSH_PORT=2221
|
||||||
|
- GITEA__server__SSH_LISTEN_PORT=22
|
||||||
|
- GITEA__security__INSTALL_LOCK=true
|
||||||
|
- GITEA__security__SECRET_KEY=${GITEA_SECRET_KEY}
|
||||||
|
- GITEA__service__DISABLE_REGISTRATION=false
|
||||||
|
- GITEA__service__REQUIRE_SIGNIN_VIEW=false
|
||||||
|
volumes:
|
||||||
|
- gitea_data:/data
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
depends_on:
|
||||||
|
consyscab_db:
|
||||||
|
condition: service_healthy
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:3000/api/healthz"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 40s
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 9. Nanaxe API Server
|
||||||
|
# ==========================================
|
||||||
|
nanaxe_api:
|
||||||
|
build:
|
||||||
|
context: ./nanaxe/api
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: nanaxe_api
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=production
|
||||||
|
- PORT=8080
|
||||||
|
- GITEA_URL=http://nanaxe_gitea:3000
|
||||||
|
- GITEA_TOKEN=${GITEA_TOKEN}
|
||||||
|
- JWT_SECRET=${NANAXE_JWT_SECRET}
|
||||||
|
- MINDMAP_STORAGE_PATH=/app/mindmaps
|
||||||
|
volumes:
|
||||||
|
- mindmap_data:/app/mindmaps
|
||||||
|
- ./nanaxe/logs:/app/logs
|
||||||
|
depends_on:
|
||||||
|
- nanaxe_gitea
|
||||||
|
- consyscab_db
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 10. Nanaxe WebDAV (опционально)
|
||||||
|
# ==========================================
|
||||||
|
nanaxe_webdav:
|
||||||
|
image: bytemark/webdav
|
||||||
|
container_name: nanaxe_webdav
|
||||||
|
environment:
|
||||||
|
- AUTH_TYPE=Basic
|
||||||
|
- USERNAME=${WEBDAV_USER:-admin}
|
||||||
|
- PASSWORD=${WEBDAV_PASSWORD}
|
||||||
|
volumes:
|
||||||
|
- mindmap_data:/var/lib/dav
|
||||||
|
networks:
|
||||||
|
- consyscab-network
|
||||||
|
|
||||||
|
networks:
|
||||||
|
consyscab-network:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
pg_data:
|
||||||
|
gitea_data:
|
||||||
|
mindmap_data:
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
# Nanaxe Server Nginx Configuration
|
||||||
|
# Добавьте этот файл в ./docker/nginx/conf.d/ вашего друга
|
||||||
|
|
||||||
|
# Resolver для Docker DNS
|
||||||
|
resolver 127.0.0.11 valid=30s;
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Gitea - Git сервер
|
||||||
|
# ==========================================
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name git.* ~^git\..+$;
|
||||||
|
|
||||||
|
client_max_body_size 512M;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
set $gitea_backend nanaxe_gitea:3000;
|
||||||
|
proxy_pass http://$gitea_backend;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
|
||||||
|
# WebSocket support
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection $connection_upgrade;
|
||||||
|
|
||||||
|
proxy_connect_timeout 60s;
|
||||||
|
proxy_send_timeout 60s;
|
||||||
|
proxy_read_timeout 60s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Nanaxe API
|
||||||
|
# ==========================================
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name api.* ~^api\..+$;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
set $api_backend nanaxe_api:8080;
|
||||||
|
proxy_pass http://$api_backend;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
|
||||||
|
# CORS
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
|
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
|
||||||
|
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization' always;
|
||||||
|
|
||||||
|
if ($request_method = 'OPTIONS') {
|
||||||
|
return 204;
|
||||||
|
}
|
||||||
|
|
||||||
|
proxy_connect_timeout 60s;
|
||||||
|
proxy_send_timeout 60s;
|
||||||
|
proxy_read_timeout 60s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Nanaxe Dashboard (опционально)
|
||||||
|
# ==========================================
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name nanaxe.* ~^nanaxe\..+$;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
root /usr/share/nginx/html/nanaxe;
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /api/ {
|
||||||
|
set $api_backend nanaxe_api:8080;
|
||||||
|
proxy_pass http://$api_backend/;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# WebDAV (если нужен прямой доступ)
|
||||||
|
# ==========================================
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name webdav.* ~^webdav\..+$;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
set $webdav_backend nanaxe_webdav:80;
|
||||||
|
proxy_pass http://$webdav_backend;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
# WebDAV methods
|
||||||
|
dav_methods PUT DELETE MKCOL COPY MOVE;
|
||||||
|
dav_ext_methods PROPFIND OPTIONS;
|
||||||
|
|
||||||
|
client_max_body_size 100M;
|
||||||
|
client_body_temp_path /tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Map для WebSocket connection upgrade
|
||||||
|
# ==========================================
|
||||||
|
map $http_upgrade $connection_upgrade {
|
||||||
|
default upgrade;
|
||||||
|
'' close;
|
||||||
|
}
|
||||||
@@ -119,19 +119,19 @@
|
|||||||
<div class="service-card">
|
<div class="service-card">
|
||||||
<h3>📚 Git Repository</h3>
|
<h3>📚 Git Repository</h3>
|
||||||
<p>Access your mindmaps via Git</p>
|
<p>Access your mindmaps via Git</p>
|
||||||
<a href="http://localhost:3000" target="_blank">Open Gitea</a>
|
<a href="/git/" target="_blank">Open Gitea</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="service-card">
|
<div class="service-card">
|
||||||
<h3>🔌 API</h3>
|
<h3>🔌 API</h3>
|
||||||
<p>REST API for mindmap operations</p>
|
<p>REST API for mindmap operations</p>
|
||||||
<a href="http://localhost:8080/health" target="_blank">Check API</a>
|
<a href="/api/health" target="_blank">Check API</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="service-card">
|
<div class="service-card">
|
||||||
<h3>📱 WebDAV</h3>
|
<h3>📱 WebDAV</h3>
|
||||||
<p>Direct file access</p>
|
<p>Direct file access</p>
|
||||||
<a href="http://localhost:8081" target="_blank">Open WebDAV</a>
|
<a href="http://a-crm.controlsystem.kz:8084" target="_blank">Open WebDAV</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user