version: '3.8' # Nanaxe Server - Mindmap Synchronization # Run alongside other Docker projects by changing ports 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=git.a-crm.controlsystem.kz - GITEA__server__ROOT_URL=http://git.a-crm.controlsystem.kz/ - GITEA__server__SSH_DOMAIN=git.a-crm.controlsystem.kz - GITEA__server__SSH_PORT=2221 - 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: - "3001:3000" # Changed from 3000 to avoid conflicts - "2221:22" # Changed from 222 to avoid conflicts depends_on: - postgres # PostgreSQL для Gitea postgres: image: postgres:16-alpine container_name: nanaxe-postgres ports: - "5433:5432" # Expose on different port 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: - "8082:8080" # Changed from 8080 to avoid conflicts 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: - "8083:80" # Changed from 80 to avoid conflicts - "8444:443" # Changed from 443 to avoid conflicts 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: - "8084:80" # Changed from 8081 to avoid conflicts networks: nanaxe-network: driver: bridge volumes: gitea-data: postgres-data: mindmap-data: