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
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# Gitea - Self-hosted Git server для хранения markdown-файлов
|
||||
gitea:
|
||||
image: gitea/gitea:latest
|
||||
container_name: nanaxe-gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
- GITEA__database__DB_TYPE=postgres
|
||||
- GITEA__database__HOST=postgres:5432
|
||||
- GITEA__database__NAME=gitea
|
||||
- GITEA__database__USER=gitea
|
||||
- GITEA__database__PASSWD=gitea_password
|
||||
- GITEA__server__DOMAIN=${GITEA_DOMAIN:-localhost}
|
||||
- GITEA__server__ROOT_URL=http://${GITEA_DOMAIN:-localhost}:3000
|
||||
- GITEA__server__SSH_DOMAIN=${GITEA_DOMAIN:-localhost}
|
||||
- GITEA__server__SSH_PORT=222
|
||||
- GITEA__server__SSH_LISTEN_PORT=22
|
||||
- GITEA__security__INSTALL_LOCK=true
|
||||
- GITEA__service__DISABLE_REGISTRATION=false
|
||||
- GITEA__service__REQUIRE_SIGNIN_VIEW=false
|
||||
restart: always
|
||||
networks:
|
||||
- nanaxe-network
|
||||
volumes:
|
||||
- gitea-data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "222:22"
|
||||
depends_on:
|
||||
- postgres
|
||||
|
||||
# PostgreSQL для Gitea
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
container_name: nanaxe-postgres
|
||||
environment:
|
||||
- POSTGRES_USER=gitea
|
||||
- POSTGRES_PASSWORD=gitea_password
|
||||
- POSTGRES_DB=gitea
|
||||
restart: always
|
||||
networks:
|
||||
- nanaxe-network
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
|
||||
# Nanaxe API Server - для синхронизации mindmaps
|
||||
nanaxe-api:
|
||||
build:
|
||||
context: ./api
|
||||
dockerfile: Dockerfile
|
||||
container_name: nanaxe-api
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- PORT=8080
|
||||
- GITEA_URL=http://gitea:3000
|
||||
- GITEA_TOKEN=${GITEA_TOKEN}
|
||||
- JWT_SECRET=${JWT_SECRET:-your-super-secret-jwt-key-change-in-production}
|
||||
- MINDMAP_STORAGE_PATH=/app/mindmaps
|
||||
restart: always
|
||||
networks:
|
||||
- nanaxe-network
|
||||
volumes:
|
||||
- mindmap-data:/app/mindmaps
|
||||
- ./api/logs:/app/logs
|
||||
ports:
|
||||
- "8080:8080"
|
||||
depends_on:
|
||||
- gitea
|
||||
- postgres
|
||||
|
||||
# Nginx - Reverse Proxy и статические файлы
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
container_name: nanaxe-nginx
|
||||
restart: always
|
||||
networks:
|
||||
- nanaxe-network
|
||||
volumes:
|
||||
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
- ./nginx/html:/usr/share/nginx/html:ro
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
depends_on:
|
||||
- gitea
|
||||
- nanaxe-api
|
||||
|
||||
# (Опционально) WebDAV сервер для прямого доступа к файлам
|
||||
webdav:
|
||||
image: bytemark/webdav
|
||||
container_name: nanaxe-webdav
|
||||
restart: always
|
||||
networks:
|
||||
- nanaxe-network
|
||||
volumes:
|
||||
- mindmap-data:/var/lib/dav
|
||||
environment:
|
||||
- AUTH_TYPE=Basic
|
||||
- USERNAME=${WEBDAV_USER:-admin}
|
||||
- PASSWORD=${WEBDAV_PASSWORD:-admin}
|
||||
ports:
|
||||
- "8081:80"
|
||||
|
||||
networks:
|
||||
nanaxe-network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
gitea-data:
|
||||
postgres-data:
|
||||
mindmap-data:
|
||||
Reference in New Issue
Block a user