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
117 lines
2.9 KiB
YAML
117 lines
2.9 KiB
YAML
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:
|