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: