e.currentTarget.style.transform = 'scale(1.05)'}
46 | onMouseOut={(e) => e.currentTarget.style.transform = 'scale(1)'}
47 | onClick={onThemeToggle}
48 | />
49 |
10 |
17 |
18 | _Left to right: Home screen, Add printer, Monitoring view with multiple printers_
19 |
20 | ## Table of Contents
21 | - [What is BambuCAM?](#what-is-bambucam)
22 | - [Features](#features)
23 | - [Installation](#installation)
24 | - [Requirements](#requirements)
25 | - [Troubleshooting](#troubleshooting)
26 | - [Support](#support)
27 |
28 | ## What is BambuCAM?
29 | 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.
30 |
31 | ### Features
32 | - 🎥 Enhanced live camera feeds with [go2rtc](https://github.com/AlexxIT/go2rtc) integration
33 | - 🖱️ Drag & drop interface for camera arrangement
34 | - 🖥️ Fullscreen mode for each printer
35 | - ➕ Easy adding and removing of printers
36 | - 🔄 Improved stream stability and auto-reconnection
37 | - 🌐 Support for Bambu Cloud printers ( no videostreaming on Cloud Mode yet )
38 | - 🔔 Status notifications and monitoring
39 | - 🚀 Optimized performance with nginx
40 | - 📱 Responsive design for all devices
41 |
42 | ## Installation
43 |
44 | ### 🐳 Quick Docker Installation
45 |
46 | The fastest way to get started is using our pre-built Docker images:
47 |
48 | 1. Create a Folder: `sudo mkdir BambuCAM`
49 | 2. Jump into the folder: `cd BambuCAM`
50 | 3. Create a `docker-compose.yml`:
51 | ```yaml
52 |
53 | services:
54 | frontend:
55 | image: bangertech/bambucam-frontend:latest
56 | restart: unless-stopped
57 | network_mode: "host"
58 |
59 | backend:
60 | image: bangertech/bambucam-backend:latest
61 | restart: unless-stopped
62 | volumes:
63 | - type: bind
64 | source: ./data
65 | target: /app/data
66 | bind:
67 | create_host_path: true
68 | - type: bind
69 | source: ./logs
70 | target: /app/logs
71 | bind:
72 | create_host_path: true
73 | - type: bind
74 | source: ./data/go2rtc
75 | target: /app/data/go2rtc
76 | bind:
77 | create_host_path: true
78 | environment:
79 | - LOG_LEVEL=DEBUG
80 | network_mode: "host"
81 |
82 | nginx:
83 | image: nginx:alpine
84 | network_mode: "host"
85 | restart: unless-stopped
86 | command: >
87 | /bin/sh -c "echo 'worker_processes auto;
88 | events {
89 | worker_connections 1024;
90 | }
91 | http {
92 | include /etc/nginx/mime.types;
93 | default_type application/octet-stream;
94 | sendfile on;
95 | keepalive_timeout 65;
96 |
97 | server {
98 | listen 80;
99 |
100 | location / {
101 | proxy_pass http://localhost:3000;
102 | proxy_http_version 1.1;
103 | proxy_set_header Upgrade $$http_upgrade;
104 | proxy_set_header Connection \"upgrade\";
105 | proxy_set_header Host $$host;
106 | }
107 |
108 | location /api {
109 | proxy_pass http://localhost:4000;
110 | proxy_http_version 1.1;
111 | proxy_set_header Host $$host;
112 | }
113 |
114 | location /go2rtc/ {
115 | proxy_pass http://localhost:1984/;
116 | proxy_http_version 1.1;
117 | proxy_set_header Upgrade $$http_upgrade;
118 | proxy_set_header Connection \"upgrade\";
119 | proxy_set_header Host $$host;
120 | }
121 | }
122 | }' > /etc/nginx/nginx.conf && nginx -g 'daemon off;'"
123 | depends_on:
124 | - frontend
125 | - backend
126 | - go2rtc
127 |
128 | go2rtc:
129 | image: alexxit/go2rtc
130 | container_name: go2rtc
131 | restart: unless-stopped
132 | network_mode: host
133 | volumes:
134 | - type: bind
135 | source: ./data/go2rtc
136 | target: /config
137 | bind:
138 | create_host_path: true
139 | environment:
140 | - GO2RTC_CONFIG=/config/go2rtc.yaml
141 | - GO2RTC_API=listen=:1984
142 | - GO2RTC_API_BASE=/go2rtc
143 | - GO2RTC_LOG_LEVEL=debug
144 | command: >
145 | /bin/sh -c "
146 | mkdir -p /config &&
147 | touch /config/go2rtc.yaml &&
148 | chmod 777 /config/go2rtc.yaml &&
149 | echo 'api:' > /config/go2rtc.yaml &&
150 | echo ' listen: :1984' >> /config/go2rtc.yaml &&
151 | echo ' base: /go2rtc' >> /config/go2rtc.yaml &&
152 | echo 'webrtc:' >> /config/go2rtc.yaml &&
153 | echo ' listen: :8555' >> /config/go2rtc.yaml &&
154 | echo 'rtsp:' >> /config/go2rtc.yaml &&
155 | echo ' listen: :8554' >> /config/go2rtc.yaml &&
156 | go2rtc
157 | "
158 | depends_on:
159 | - backend
160 | ```
161 |
162 | 4. Start BambuCAM:
163 | ```bash
164 | docker compose up -d
165 | ```
166 |
167 | 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.
168 |
169 | ### Windows Users
170 |
171 | For Windows users who prefer a guided installation:
172 |
173 | #### 🚀 Quick Start
174 |
175 | 1. Download the [BambuCAM Installer](https://github.com/BangerTech/BambuCAM/releases/latest)
176 | 2. Run the installer as administrator
177 | 3. Open BambuCAM via desktop shortcut or at http://localhost
178 |
179 | The installer will automatically:
180 | - Install Docker Desktop if needed
181 | - Configure WSL2 and port forwarding
182 | - Pull the latest Docker images
183 | - Create a desktop shortcut
184 |
185 | #### 📋 System Requirements
186 |
187 | - Windows 10/11
188 | - 4 GB RAM
189 | - 2 GB free disk space
190 | - Available Ports:
191 | - 80 (Web Interface)
192 | - 1984 (go2rtc)
193 | - 4000 (Backend API)
194 |
195 |
196 | #### 🔧 Uninstallation
197 |
198 | 1. Run `docker compose down` in the installation directory
199 | 2. Delete the folder `%LOCALAPPDATA%\BambuCAM`
200 | 3. Remove the desktop shortcut
201 |
202 | #### ❓ Troubleshooting
203 |
204 | If you encounter issues:
205 | 1. Make sure Docker Desktop is running
206 | 2. Check if port 3000 is not in use by another application
207 | 3. Open an issue on GitHub
208 |
209 | ### Method 3: Manual Installation (Linux)
210 |
211 | For users who want to build from source:
212 |
213 | #### Quick Start Installation
214 | 1. Clone repository:
215 | ```bash
216 | git clone https://github.com/BangerTech/BambuCAM.git
217 | cd BambuCAM
218 | ```
219 |
220 | 2. Start Docker Compose:
221 | ```bash
222 | docker compose -f docker-compose.dev.yml up --build
223 | ```
224 |
225 | 3. Open in browser:
226 | ```bash
227 | http://localhost:3000
228 | ```
229 |
230 | ## Printer Setup
231 |
232 | ### Requirements
233 | - BambuLab printer (local network or cloud)
234 | - Camera enabled in printer settings
235 |
236 | ### Adding a Printer
237 | #### Local Printer
238 | 1. Click "Add Printer" in the app
239 | 2. Enter a name for the printer
240 | 3. Enter the printer's IP address
241 | 4. Enter Access Code (found in printer settings under "Network")
242 | 5. Click "Add"
243 |
244 | #### Cloud Printer
245 | 1. Click "Add Printer" and select "Cloud Printer"
246 | 2. Log in with your Bambu Lab account
247 | 3. Select your printer from the list
248 | 4. Click "Add"
249 |
250 | ## Technologies
251 | - React.js Frontend
252 | - Node.js Backend
253 | - Docker & Docker Compose
254 | - go2rtc Stream Processing
255 | - nginx Reverse Proxy
256 |
257 | ## Troubleshooting
258 |
259 | If you cannot connect to the printer:
260 | 1. Check if the printer is powered on and connected to the network
261 | 2. Verify you are using the correct IP address
262 | 3. Verify the Access Code is correct
263 | 4. Check if "LAN Only Mode" is enabled
264 | 5. Restart the printer
265 |
266 | ## Support
267 |
268 | For issues or questions, please create a [GitHub Issue](https://github.com/BangerTech/BambuCAM/issues).
269 |
270 |
271 | ## Sponsorship
272 |
273 |