Install

Install BamDude

Four paths - Docker, Docker Compose, a native Windows installer, or manual Python - plus first login and bot setup.

Before you start

  • A Bambu Lab printer with Developer Mode + LAN-Only Mode enabled (Settings → Network).
  • The printer's IP address and Access Code (Settings → Network and Settings → Information).
  • A Linux box, Raspberry Pi, NAS, or any Docker-capable host on the same network as the printer.
  • Optional: a Telegram bot token from @BotFather if you want bot integration from day one.
Step 1

Run with Docker

The fastest path. Single container, SQLite by default, persistent volumes.

docker run -d \
  --name bamdude \
  --network host \
  -e TZ=Europe/Kyiv \
  -v bamdude_data:/app/data \
  -v bamdude_logs:/app/logs \
  --restart unless-stopped \
  kainpl/bamdude:latest
  • --network host makes printer SSDP auto-discovery work; on macOS / Windows Docker Desktop swap it for -p 8000:8000 and add printers manually by IP.
  • Two volumes: bamdude_data (SQLite + 3MFs + thumbnails) and bamdude_logs. Keep them - they hold every print you've ever done.
Step 2

Docker Compose (from source)

Build the image yourself, easier to extend.

git clone https://github.com/kainpl/bamdude.git
cd bamdude
docker compose up -d --build
  • Uses the docker-compose.yml shipped in the repo. Two overrides sit next to it: docker-compose.postgres.yml for PostgreSQL in its own container and docker-compose.signal.yml for a signal-cli-rest-api that feeds Signal notifications; MQTT or Spoolman can be added as siblings the same way.
  • Subsequent rebuilds: docker compose pull && docker compose up -d --build.
Step 3

Windows installer (.exe)

No Python or Node — one self-contained setup for Windows.

Download bamdude-windows-x64-setup.exe and run it. It bundles an embedded Python, the pre-built frontend and ffmpeg, installs to C:\Program Files\BamDude, keeps your data and logs in C:\ProgramData\BamDude, and registers BamDude as a Windows Service that serves http://localhost:8000 on boot. A Start Menu shortcut opens the web UI.

  • To update, download the newer installer and re-run it — your data, settings and printers are preserved.
Step 4

Manual install (Python venv)

For developers or environments where Docker is not an option.

git clone https://github.com/kainpl/bamdude.git
cd bamdude
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
uvicorn backend.app.main:app --host 0.0.0.0 --port 8000 --loop asyncio --timeout-graceful-shutdown 15
  • Python 3.12+ (only for this manual route — Docker and the Windows installer bundle their own).
  • For the frontend: cd frontend && npm install && npm run dev in a second terminal.
  • STEP thumbnails need a separate CAD component that pip install does not bring: with the same venv, python -m backend.app.step_runtime choose enabled --by cli, then install and status --check — see STEP previews. Docker and the Windows installer carry it already.
Step 5

Choose your database

SQLite by default. One variable switches to PostgreSQL - bundled or your own.

DATABASE_URL picks the storage: leave it empty for SQLite (the default, one file, fine for most farms), set it to embedded for the PostgreSQL 18 that ships with BamDude and that BamDude runs for you, or give a postgresql+asyncpg:// URL for your own server. Switching from SQLite imports your existing database automatically on the next start.

  • Every installer asks: install.sh has --db sqlite|embedded|external, the Windows setup has a Database page, and docker-install.sh offers the same choice.
  • The bundled server listens on 127.0.0.1 only and keeps its own generated password; pin EMBEDDED_PG_PORT=6432 if you want to reach it with psql or DBeaver.
  • For full diagnostics on your own PostgreSQL, enable pg_stat_statements. Updating the BamDude image does not configure that server; follow the PostgreSQL documentation.
Step 6

First login + admin setup

Open the web UI and create the initial admin.

Browse to http://localhost:8000 (or the host IP). The setup gate refuses every API call except /auth/setup until the first admin exists - pick a username, set a password (≥8 chars, upper + lower + digit), and you're in. After that the login form takes over and the gate disengages forever.

  • Forgot the admin password? python -m backend.app.cli reset_admin clears the setup flags so the next boot re-enters this flow.
  • Behind a reverse proxy? Set TRUSTED_PROXY_IPS so rate-limit and refresh-cookie code can read X-Forwarded-Proto correctly.
Step 7

Add your first printer

Auto-discovery via SSDP or paste the IP.

Settings → Printers → Add Printer. SSDP picks up Bambu printers on the same subnet automatically; otherwise paste the IP. Then enter the access code (printer screen → Settings → Information). Hit Save - BamDude opens the MQTT/FTPS connection and the dashboard starts streaming live status.

Step 8

Optional: Telegram bot

Control the farm from chat.

Create a bot via @BotFather and copy the token. Settings → Notifications → New Telegram provider → paste the token. Enable Registration Mode, send /start to your bot. Settings → Telegram Chats → assign your chat a role (Operator works for most). The reply keyboard and inline menus are now wired up.

Get started in 5 minutes

Free, open source, AGPL-3.0 licensed. No cloud lock-in. Ever.