| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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 privileged ports (322, 990) as non-root user.
- # Without this, the FTP and RTSP proxies silently fail.
- 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
- # - "990:990" # Virtual printer FTP control
- # - "6000:6000" # Virtual printer file transfer tunnel
- # - "322:322" # Virtual printer RTSP camera (X1/H2/P2)
- # - "2024-2026:2024-2026" # Virtual printer proprietary ports (A1/P1S)
- # - "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=
- #
- # External PostgreSQL (optional — uses SQLite by default)
- # Example: DATABASE_URL=postgresql+asyncpg://bambuddy:password@db-host:5432/bambuddy
- #- DATABASE_URL=
- restart: unless-stopped
- # Optional: External PostgreSQL database
- # Uncomment to run Postgres alongside Bambuddy (or use an external Postgres host)
- #postgres:
- # image: postgres:16-alpine
- # container_name: bambuddy-db
- # restart: unless-stopped
- # environment:
- # POSTGRES_USER: bambuddy
- # POSTGRES_PASSWORD: changeme
- # POSTGRES_DB: bambuddy
- # volumes:
- # - bambuddy_pgdata:/var/lib/postgresql/data
- # ports:
- # - "5432:5432"
- volumes:
- bambuddy_data:
- bambuddy_logs:
- #bambuddy_pgdata:
|