π₯ A modern web application for monitoring multiple 3D Printer (BambuLab X1C, Creality / Fluidd / Moonraker, OctoPrint) through their camera feeds
Left to right: Home screen, Add printer, Monitoring view with multiple printers
BambuCAM is a user-friendly web application for monitoring different 3D printers (Bambulab X1C, Creality / Moonraker, OctoPrint). It supports both local and cloud printers, offering enhanced video streaming through go2rtc integration and a clean, modern interface.
- π₯ Enhanced live camera feeds with go2rtc integration
- π±οΈ Drag & drop interface for camera arrangement
- π₯οΈ Fullscreen mode for each printer
- β Easy adding and removing of printers
- π Improved stream stability and auto-reconnection
- π Support for Bambu Cloud printers ( no videostreaming on Cloud Mode yet )
- π Status notifications and monitoring
- π Optimized performance with nginx
- π± Responsive design for all devices
The fastest way to get started is using our pre-built Docker images:
- Create a Folder:
sudo mkdir BambuCAM
- Jump into the folder:
cd BambuCAM
- Create a
docker-compose.yml
:
services:
frontend:
image: bangertech/bambucam-frontend:latest
restart: unless-stopped
network_mode: "host"
backend:
image: bangertech/bambucam-backend:latest
restart: unless-stopped
volumes:
- type: bind
source: ./data
target: /app/data
bind:
create_host_path: true
- type: bind
source: ./logs
target: /app/logs
bind:
create_host_path: true
- type: bind
source: ./data/go2rtc
target: /app/data/go2rtc
bind:
create_host_path: true
environment:
- LOG_LEVEL=DEBUG
network_mode: "host"
nginx:
image: nginx:alpine
network_mode: "host"
restart: unless-stopped
command: >
/bin/sh -c "echo 'worker_processes auto;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $$http_upgrade;
proxy_set_header Connection \"upgrade\";
proxy_set_header Host $$host;
}
location /api {
proxy_pass http://localhost:4000;
proxy_http_version 1.1;
proxy_set_header Host $$host;
}
location /go2rtc/ {
proxy_pass http://localhost:1984/;
proxy_http_version 1.1;
proxy_set_header Upgrade $$http_upgrade;
proxy_set_header Connection \"upgrade\";
proxy_set_header Host $$host;
}
}
}' > /etc/nginx/nginx.conf && nginx -g 'daemon off;'"
depends_on:
- frontend
- backend
- go2rtc
go2rtc:
image: alexxit/go2rtc
container_name: go2rtc
restart: unless-stopped
network_mode: host
volumes:
- type: bind
source: ./data/go2rtc
target: /config
bind:
create_host_path: true
environment:
- GO2RTC_CONFIG=/config/go2rtc.yaml
- GO2RTC_API=listen=:1984
- GO2RTC_API_BASE=/go2rtc
- GO2RTC_LOG_LEVEL=debug
command: >
/bin/sh -c "
mkdir -p /config &&
touch /config/go2rtc.yaml &&
chmod 777 /config/go2rtc.yaml &&
echo 'api:' > /config/go2rtc.yaml &&
echo ' listen: :1984' >> /config/go2rtc.yaml &&
echo ' base: /go2rtc' >> /config/go2rtc.yaml &&
echo 'webrtc:' >> /config/go2rtc.yaml &&
echo ' listen: :8555' >> /config/go2rtc.yaml &&
echo 'rtsp:' >> /config/go2rtc.yaml &&
echo ' listen: :8554' >> /config/go2rtc.yaml &&
go2rtc
"
depends_on:
- backend
- Start BambuCAM:
docker compose up -d
That's it! The application will be available at http://localhost. Your data will be stored in the ./data
and ./logs
directories, making it easy to access and backup.
For Windows users who prefer a guided installation:
- Download the BambuCAM Installer
- Run the installer as administrator
- Open BambuCAM via desktop shortcut or at http://localhost
The installer will automatically:
- Install Docker Desktop if needed
- Configure WSL2 and port forwarding
- Pull the latest Docker images
- Create a desktop shortcut
- Windows 10/11
- 4 GB RAM
- 2 GB free disk space
- Available Ports:
- 80 (Web Interface)
- 1984 (go2rtc)
- 4000 (Backend API)
- Run
docker compose down
in the installation directory - Delete the folder
%LOCALAPPDATA%\BambuCAM
- Remove the desktop shortcut
If you encounter issues:
- Make sure Docker Desktop is running
- Check if port 3000 is not in use by another application
- Open an issue on GitHub
For users who want to build from source:
- Clone repository:
git clone https://github.com/BangerTech/BambuCAM.git
cd BambuCAM
- Start Docker Compose:
docker compose -f docker-compose.dev.yml up --build
- Open in browser:
http://localhost:3000
- BambuLab printer (local network or cloud)
- Camera enabled in printer settings
- Click "Add Printer" in the app
- Enter a name for the printer
- Enter the printer's IP address
- Enter Access Code (found in printer settings under "Network")
- Click "Add"
- Click "Add Printer" and select "Cloud Printer"
- Log in with your Bambu Lab account
- Select your printer from the list
- Click "Add"
- React.js Frontend
- Node.js Backend
- Docker & Docker Compose
- go2rtc Stream Processing
- nginx Reverse Proxy
If you cannot connect to the printer:
- Check if the printer is powered on and connected to the network
- Verify you are using the correct IP address
- Verify the Access Code is correct
- Check if "LAN Only Mode" is enabled
- Restart the printer
For issues or questions, please create a GitHub Issue.
bambulab
3d-printer
camera-viewer
monitoring
docker
react
rtsp-stream
printer-management
web-interface
live-stream
temperature-monitoring
print-progress
open-source
The stream quality is automatically optimized. For manual adjustments, you can edit the go2rtc configuration in backend/data/go2rtc/go2rtc.yaml
.
Make sure the required ports (80, 1984, 4000) are available and not blocked by your firewall.