services: bambuddy: image: ghcr.io/maziggy/bambuddy:latest build: . # Usage: # docker compose up -d → pulls pre-built image from ghcr.io # docker compose up -d --build → builds locally from source container_name: bambuddy # Run as current user to avoid permission issues with mounted volumes # Override with: PUID=$(id -u) PGID=$(id -g) docker compose up -d user: "${PUID:-1000}:${PGID:-1000}" # # Proxy mode: allow binding to port 990 (FTP) as non-root user. # Without this, the FTP proxy silently fails and sending prints won't work. cap_add: - NET_BIND_SERVICE # # LINUX: Use host mode for printer discovery and camera streaming network_mode: host # # macOS/WINDOWS: Docker Desktop doesn't support host mode. # Comment out "network_mode: host" above and uncomment "ports:" below. # Note: Printer discovery won't work - add printers manually by IP. #ports: # - "${PORT:-8000}:8000" # - "3000:3000" # Virtual printer bind/detect # - "3002:3002" # Virtual printer bind/detect # - "8883:8883" # Virtual printer MQTT # - "9990:9990" # Virtual printer FTP control # - "50000-50100:50000-50100" # Virtual printer FTP passive data volumes: - bambuddy_data:/app/data - bambuddy_logs:/app/logs # # Share virtual printer certs with native installation # This ensures the slicer only needs to trust one CA certificate. - ./virtual_printer:/app/data/virtual_printer environment: - TZ=${TZ:-Europe/Berlin} # Port BamBuddy runs on (default: 8000) # Usage: PORT=8080 docker compose up -d - PORT=${PORT:-8000} # Virtual printer: Set to the Docker host's IP when using bridge mode (ports:). # Required for FTP passive mode to work behind NAT. # Example: VIRTUAL_PRINTER_PASV_ADDRESS=192.168.1.100 #- VIRTUAL_PRINTER_PASV_ADDRESS= restart: unless-stopped volumes: bambuddy_data: bambuddy_logs: