BamBuddy
BamBuddy
Information
BamBuddy is a self-hosted companion web app for Bambu Lab 3D printers. It gives you a single place to monitor your fleet, organize prints, and access your printer's camera feed without relying on the vendor cloud.
- Monitors print status and progress for one or more Bambu printers.
- Provides a web UI and an optional REST API (
/api/v3) router. - Supports an optional external PostgreSQL database (uses SQLite by default).
- Can run an optional OrcaSlicer slicer-API sidecar for slicer integration.
- Just BamBuddy Commands
| Type | Command |
|---|---|
| Start | docker compose up bambuddy -d |
| Shutdown | docker compose down bambuddy |
- Once started, BamBuddy should be hit from this url:
| URL | |
|---|---|
| Non-SSL (Web UI) | http://localhost:${PORT:-8000} |
| Image | maziggy/bambuddy (GitHub) |
The
bambuddycontainer is set to bind privileged ports (322,990) for FTPS and the RTSPS camera proxy viacap_add: NET_BIND_SERVICE, so it can run as a non-root user. On Linux, usenetwork_mode: hostfor reliable printer discovery and camera streaming.
BamBuddy Example Docker Compose
services:
bambuddy:
image: ghcr.io/maziggy/bambuddy:latest
container_name: bambuddy
cap_add:
- NET_BIND_SERVICE
networks:
- homelab
labels:
- "traefik.enable=true"
- "traefik.http.routers.${BAMBUDDY_CONTAINER_NAME:-bambuddy}.rule=Host(`${BAMBUDDY_CONTAINER_NAME:-bambuddy}.${PROJECT_HOSTNAME}`)"
- "traefik.http.routers.${BAMBUDDY_CONTAINER_NAME:-bambuddy}.entrypoints=https"
- "traefik.http.routers.${BAMBUDDY_CONTAINER_NAME:-bambuddy}.tls=true"
- "traefik.http.routers.${BAMBUDDY_CONTAINER_NAME:-bambuddy}.priority=10"
- ${BAMBUDDY_AUTHENTIK_MIDDLEWARE:-}
- "traefik.http.routers.${BAMBUDDY_CONTAINER_NAME:-bambuddy}-api.rule=Host(`${BAMBUDDY_CONTAINER_NAME:-bambuddy}.${PROJECT_HOSTNAME}`) && PathPrefix(`/api/v3`)"
env_file:
- ./.env
- ../../.env
environment:
- PORT=${PORT:-8000}
- TZ=${TZ}
- PUID=${PUID}
- PGID=${PGID}
# External PostgreSQL (optional — SQLite by default)
# - DATABASE_URL=postgresql+asyncpg://bambuddy:password@db-host:5432/bambuddy
# Slicer API sidecar (optional — Settings → "Use Slicer API" toggles this on)
# - SLICER_API_URL=http://localhost:3003
restart: unless-stopped
profiles:
- all
- bambuddy
BamBuddy Example .env file
## BamBuddy
PORT=8000
TZ=America/New_York
Heads Up!
network_mode: hostis recommended on Linux for printer discovery and camera streaming. If you keep the defaulthomelabnetwork, your printer must be reachable from the container network.- Leave the
BAMBUDDY_AUTHENTIK_MIDDLEWAREline as-is — it is injected from your global.envand protects the UI behind Authentik SSO when configured. - An external PostgreSQL database is optional; BamBuddy falls back to a local SQLite database when
DATABASE_URLis unset.