maziggy/bambuddy
GitHub: maziggy/bambuddy
面向拓竹 Bambu Lab 打印机的开源自托管控制中心,摆脱云端依赖,支持单机到四十台打印机的集中监控、调度与自动化管理。
Stars: 1882 | Forks: 239
Bambuddy
你的打印机。无需云端。你做主。
拓竹(Bambu Lab)的自托管控制中心 — 从单台 A1 到拥有 40 台打印机的农场。
🎮 体验在线演示 • 功能特性 • 应用截图 • 快速开始 • 官方文档 • 论坛 • Discord • 参与贡献
Spin up your own private Bambuddy in ~10 seconds — no install, no signup, 30-minute session.
| ### 📦 打印归档 - 自动归档带有元数据的 3MF 文件 - 3D 模型预览 (Three.js) - 重复检测与全文搜索 - 照片附件与失败分析 - 延时摄影编辑器(修剪、加速、配乐),支持 P1 系列打印机的自动 AVI 转 MP4,可手动上传与删除 - 使用 AMS 映射重新打印到任何已连接的打印机(自动匹配或手动选择槽位,多打印板支持,针对双喷嘴 H2D/H2D Pro 的喷嘴感知匹配,**支持耗材轨道切换 (FTS)** — 当安装了 FTS 附件时,每个喷嘴的过滤器会被禁用,因为 FTS 可以将任何 AMS 槽位路由到任一挤出机) - 多打印板归档的打印板缩略图浏览(鼠标悬停可在不同打印板之间导航) - 归档对比(并排差异对比) - 标签管理(在所有归档中重命名/删除) - **打印日志** — 所有打印活动的按时间顺序表视图,包含日期/时间、打印名称、打印机、用户、状态、时长和耗材列。支持按搜索内容、打印机、用户、状态和日期范围进行过滤。带有可配置页面大小的分页功能。清除按钮可删除日志条目而不影响归档。 ### 📊 监控与控制 - 通过 WebSocket 实时获取打印机状态 - 实时摄像头流 (MJPEG) 和快照,支持多查看者 — 大多数 Bambu 打印机只允许一个上游连接,因此 Bambuddy 将单一的共享流分发到所有浏览器标签页 / 卡片 / 覆盖层 - **长效摄像头令牌**,适用于 Home Assistant / Frigate / 信息亭 — 从 Settings → API Keys 铸造令牌,一次粘贴,有效期最长 365 天,随时可撤销(没有无限期令牌 — 泄露的永久令牌在设计上是不安全的) - **用于 OBS 的流媒体覆盖层** - 嵌入式页面,包含用于直播的摄像头和状态 (`/overlay/:printerId`),可配置 FPS (`?fps=30`),仅状态模式 (`?camera=false`) - 外部摄像头支持 (MJPEG, RTSP, HTTP 快照, USB/V4L2),支持基于层的延时摄影 - **空打印板检测** - 如果在打印板上检测到物体则自动暂停打印(多参考校准,ROI 调整) - 风扇状态监控(部件冷却、辅助、舱室) - 打印机控制(停止、暂停、恢复、舱室灯、打印速度、适用于 P2S/H2* 的**风道模式**、**打印板 Z 轴微调**,带有 Studio 风格的未回原点警告) - **打印机卡片上的状态徽章**:SD 卡(绿色/红色)、外壳门(绿色/黄色 — X1/P1S/P2S/H2*)、风道模式(冷却/加热) - **强制刷新** 菜单项 — 请求打印机推送完整状态而无需重新连接 - 批量打印机操作(多选卡片,然后全部停止/暂停/恢复/清除 — 按状态或位置选择) - 打印机搜索和过滤器 — 按名称/型号/位置/序列号实时搜索,以及状态和位置的下拉过滤器(WebSocket 响应式,对移动端友好) - 可调整大小的打印机卡片 (S/M/L/XL) - 在打印过程中跳过对象 - AMS 槽位 RFID 重新读取 - **从打印机卡片进行 AMS 槽位 Load / Unload** — 鼠标悬停在任何 AMS 槽位或外部料盘上,点击菜单按钮,即可加载该托盘或卸载当前已加载的料盘,无需去操作触摸屏;支持双挤出机 H2D(Ext-L / Ext-R 驱动各自的喷嘴) - AMS 槽位配置(按型号过滤的预设,K profiles,颜色选择器,为已配置的槽位预填充) - AMS 信息卡(鼠标悬停查看序列号、固件版本),带有可在不同打印机间保留的自定义友好名称 - **AMS 远程烘干** — 直接从打印机页面为 AMS 2 Pro 和 AMS-HT 启动、监控和停止烘干会话,提供基于耗材的温度/时长预设,可选料盘旋转;自动 PSU 检测和 HMS 电源错误报告 - **队列自动烘干** — 当湿度超过阈值时,在计划打印之间自动烘干耗材;每种耗材类型均可配置预设,可选阻塞模式 - **环境烘干** — 无论是否排队打印,根据湿度在空闲打印机上自动保持耗材干燥 - 每种耗材类型可配置的烘干预设(适用于 AMS 2 Pro 和 AMS-HT 的温度和时长) - H2D 的双外部料盘支持 (Ext-L / Ext-R) - HMS 错误监控,带有历史记录和一键清除错误功能 - 打印成功率与趋势 - 耗材使用量追踪 - 成本分析与失败分析 - **AI 打印失败检测** — 可选集成自托管的 [Obico](https://github.com/TheSpaghettiDetective/obico-server) ML API:监控每个正在运行的打印任务的摄像头画面,随时间平滑评分(30 帧预热 + EWM + 滚动平均),并在每次打印中触发一次可配置的操作(通知 / 暂停 / 暂停并关机) - 按用户过滤统计数据(需管理员权限) - 导出 CSV/Excel ### ⏰ 调度与自动化 - **后台打印调度** — FTP 上传和打印启动命令在后台运行,带有实时 WebSocket 进度 toast 提示(每个任务的上传进度条、状态徽章、取消按钮) - 支持拖拽的打印队列和时间轴计划视图 - 多打印机选择(同时发送到多台打印机) - 批量打印数量(打印多份 — 在打印/计划对话框中设置数量,第一份立即打印,其余加入队列) - 交错批量启动(按组启动打印机,具有可配置的间隔以避免功耗激增 — 在打印和队列对话框中均可使用) - 在 Settings → Workflow 中可配置的默认打印选项(热床调平、流量/振动校准、首层检测、延时摄影) - 基于型号的队列分配(发送至“任意 X1C”以实现负载均衡),支持位置过滤 - 基于型号的队列耗材覆盖(在计划前交换耗材颜色/类型) - 耗材验证(仅分配给具有所需耗材的打印机) - 优先使用剩余量最少的耗材(在多个匹配时优先消耗部分使用的料盘) - 每台打印机的 AMS 映射(针对打印农场的独立槽位配置) - 计划打印(/时间) - 最短作业优先调度(在队列页面开启 SJF 开关 — 调度器优先选择较短的打印,带有防止饿死机制) - 仅队列模式(暂存而不自动开始) - 排队打印之间的清理打印板确认(可在设置中禁用,以适应农场工作流) - 自动打印 G-code 注入(每种型号的起始/结束代码片段,适用于 Farmloop、SwapMod、AutoClear、Printflow 3D — 按队列项目切换) - 智能插座集成 (Tasmota, Home Assistant, MQTT, REST/Webhook) - REST 智能插座:通过 HTTP API 控制任何设备 (openHAB, ioBroker, FHEM, Node-RED),具有独立的电源/能耗 URL 和单位乘数 - MQTT 智能插座:订阅 Zigbee2MQTT、Shelly 或任何 MQTT 主题以进行能耗监控 - 能耗追踪(每次打印的 kWh 和成本) — 重启弹性:打印过程中的后端重启不再丢失单次打印的能耗数据 - 按日期范围统计能耗(今天 / 本周 / 本月 / …),通过每小时生命周期计数器快照在总消耗模式下显示 - 支持 HA 能耗传感器(适用于带有独立电源/能耗传感器的插座) - 打印前自动开机 - 冷却后自动关机 ### 📁 文件管理器 (库) - 上传并组织切片文件 (3MF, gcode, STL) - **挂载外部文件夹** - 挂载主机目录(NAS、USB、网络共享)而无需复制文件 - **STL 缩略图生成** - 上传时自动生成 STL 文件的预览,或为现有文件批量生成 - ZIP 文件解压,保留文件夹结构 - 提供从 ZIP 文件名创建文件夹的选项 - 支持拖拽的文件夹结构 - 通过上下文菜单重命名文件和文件夹 - 带有完整选项的直接打印到任何打印机 - 无需预先创建归档即可加入队列 - 多打印板 3MF 文件的打印板选择 - 通过文件哈希检测重复项 - 对移动端友好,带有始终可见的操作按钮 - **服务器端 Slice 按钮**(可选) — 当 [`slicer-api/` Compose stack](slicer-api/README.md) 运行时,无需桌面切片软件即可切片 STL/3MF;结果将作为新的 `.gcode.3mf` 文件保存在同一文件夹中,并通过跟踪任务直至完成的 toast 提示显示进度。支持导入 **Bambu Studio Printer Preset Bundles** (`.bbscfg`),从而可以在 Slice 对话框中挑选精心搭配的打印机 + 工艺 + 耗材组合,无需重新上传 JSON 配置文件([详情](https://wiki.bambuddy.cool/features/slicer-api/#slicer-bundles-bbscfg)) ### 🌍 MakerWorld 集成 - 粘贴任何 `makerworld.com/models/…` URL → 预览、打印板选择器,并在不离开 Bambuddy 的情况下导入 - 每个打印板可独立 **保存** 或 **在 Bambu Studio / OrcaSlicer 中保存并切片**(从设置中选择您偏好的切片软件) - 用于多打印板模型的 **导入所有打印板** 按钮 - 在文件管理器中自动创建“MakerWorld”文件夹;可通过选择器覆盖为任何现有文件夹 - 带有键盘导航灯箱效果的按打印板图像画廊 - 最近导入侧边栏 — 最近 10 次 MakerWorld 导入,可一键跳转到文件管理器或切片软件 - 针对已导入打印板的从库中删除功能,带有确认模态框(无需粘贴局域网 Cookie,无需浏览器扩展) - 复用您现有的 Bambu Cloud 登录 — 无需单独的 OAuth 流程或安装浏览器扩展 ### 📁 项目 - 将相关打印分组(例如,“Voron Build”) - 分别追踪打印板(打印任务)和部件 - 从 3MF 文件自动检测部件数量 - 带有颜色编码的项目徽章 - **项目 URL + 封面图片** — 粘贴 MakerWorld/Printables/Thingiverse 链接并上传一张主视觉图,让每张卡片一目了然;URL 渲染为项目名称旁的一键链接 - 通过多选工具栏批量分配归档 - 将项目导出/导入为 ZIP(包含文件)或 JSON - 直接在项目视图中从关联的库文件夹打印或排队文件(生成的归档会自动链接到该项目) | ### 🔔 通知 - WhatsApp, Telegram, Discord - Email, Pushover, ntfy(带有按事件设置的优先级 — Min / Low / Default / High / Urgent) - Home Assistant 持久通知 - 自定义 Webhooks - 免打扰时段与每日摘要 - 可自定义的消息模板,带有每种耗材的详细使用量 - 通知中包含打印完成照片 URL - 在打印失败/取消通知中包含耗材使用量和进度 - **料盘分配缺失警告** — 当使用未分配的 AMS 托盘开始打印时,弹出 Toast 和推送通知 - HMS 错误警报(AMS、喷嘴等) - 打印板检测警报 - 首层完成警报(附带摄像头快照) - 热床冷却警报(可配置阈值) - 队列事件(等待、跳过、失败) ### 🧵 耗材库存 - 内置料盘库存,带有 AMS 槽位分配、使用量追踪和剩余重量管理 - 自动耗材消耗追踪:所有料盘主要使用 3MF 切片估算,AMS 剩余百分比 delta 作为后备 - 支持打印中途重新分配料盘:如果在打印过程中更改,则使用实时分配,否则使用快照 - 针对部分打印(失败/取消)的逐层 gcode 精度,并带有线性缩放后备方案 - **每盘料成本追踪** — 在每个料盘上设置成本/kg;成本在打印完成时自动计算并汇总到归档中。打印模态框显示实时成本预览。可在设置中配置默认成本和货币。 - **批量添加料盘** — 通过单次表单提交一次添加多个相同的料盘(数量 1-100)。快速添加模式适用于只需要材料、颜色和重量的库存料盘。 - 料盘目录、颜色目录、PA profile 匹配和低库存警报 - **多色渐变、透明度和视觉效果** — 粘贴以逗号分隔的十六进制颜色列表(例如,来自 3dfilamentprofiles.com)以将料盘渲染为渐变或锥形色轮;透明度通过棋盘格背景显示,您设置的透明度即为所见即所得;为色块叠加层挑选视觉效果(闪光、木纹、大理石、夜光、哑光)。相同的字段可在颜色目录中编辑,因此组合可以在不同料盘中重用。 - **可打印的料盘标签** — 为任何选定的料盘生成四种预置尺寸的 PDF 标签:AMS 支架 (30×15 mm)、盒子标签 (62×29 mm)、Avery L7160 标签纸 (A4,每页 21 张) 和 Avery 5160 标签纸 (US Letter,每页 30 张)。每个标签显示颜色样块、品牌、材料、名称、**料盘 ID**(方便在许多相似料盘中一目了然地识别)以及一个二维码,用手机扫描后可直接深度链接回 Bambuddy 中的料盘行。从库存页面选择 — 搜索、按材料过滤、多选料盘,然后打印或保存为 PDF。 ### 🔧 集成 - [Spoolman](https://github.com/Donkie/Spoolman) 耗材同步,带有每种耗材的使用量追踪和填充水平显示 - 为 Home Assistant、Node-RED 等发布 MQTT - **Prometheus 指标** - 导出打印机遥测数据以用于 Grafana 仪表板 - Bambu Cloud 配置文件管理 - **本地配置** - 导入 OrcaSlicer 预设 (`.orca_filament`, `.bbscfg`, `.bbsflmt`, `.zip`, `.json`),无需 Bambu Cloud - K-profiles (压力提前量) - **GitHub 备份** - 计划自动将云配置文件、k profiles 和设置备份到 GitHub - **计划的本地备份** - 按每小时/每天/每周计划自动备份快照,带有保留期管理和可挂载 NAS 的输出 - 外部侧边栏链接 - Webhooks 和 API 密钥 - 按用户划分所有权 — 每个密钥代表其创建者行事 - 可选的 **cloud-access 范围** — 选择加入以允许 API 密钥读取其所有者的 Bambu Cloud 预设 / 耗材目录 / 设备列表(默认关闭) - 带有实时测试的交互式 API 浏览器 ### 🖨️ 虚拟打印机与远程打印 - **🌐 Proxy Mode(代理模式)** — 通过安全的 TLS 中继从任何地方进行远程打印 - **🪞 非 Proxy Mode 下的实时目标打印机镜像(全新!)** — Immediate / Review / Queue 虚拟打印机现在将其目标打印机的实时状态镜像到切片软件:AMS 槽位内容、FTS / 双挤出机路由、k-profiles、AMS 加载/烘干/校准命令以及摄像头流均通过虚拟打印机传输。将切片软件作为虚拟打印机背后打印机的全功能远程控制器使用,同时不放弃 Bambuddy 的队列 / 归档 / 调度功能。 - 在您的网络上模拟 Bambu Lab 打印机 - 直接从 Bambu Studio/Orca Slicer 发送打印任务 - 可配置的打印机型号 (X1C, P1S, A1, H2D 等) - 归档模式、审核模式、队列模式或 Proxy Mode - 队列模式:可选的**强制颜色匹配**,以便调度器拒绝将任务分配给装载了错误耗材的打印机 - SSDP 发现(同一局域网)或手动输入 IP(VPN/远程) - 针对多网卡/Docker/VPN 设置的网络接口覆盖 - 安全的 TLS/MQTT/FTP 通信 ### 🛠️ 维护与支持 - 维护计划与追踪 - 间隔提醒(小时/天) - 打印时间准确度统计 - 用于打印机存储的文件管理器 - 带有版本徽章的固件更新助手(仅限局域网打印机) — 列出所有已发布的版本,带有可用/不可用/已安装徽章,并支持回退到较旧的固件 - 带有实时指示器的调试日志开关 - 带有过滤功能的实时应用日志查看器 - 支持包生成器,带有全面的诊断信息(经隐私过滤) - **应用内错误报告** — 直接从 UI 提交错误报告,支持可选的屏幕截图(上传、粘贴或拖放)、交互式调试日志捕获(开始记录、按自己的节奏重现、停止并提交)以及系统信息。报告通过安全中继创建 GitHub Issues。隐私优先:所有日志均经过脱敏处理,绝不包含敏感数据(IP、序列号、凭证)。 ### 🔒 可选的身份验证 - 随时启用/禁用身份验证 - 基于组的权限(80 多项精细权限) - 默认组:管理员、操作员、查看者 - JWT 令牌与安全的密码哈希 - 全面的 API 保护(200 多个端点受保护) - 用户管理(创建、编辑、删除、分组) - 用户活动追踪(谁上传了归档、库文件、排队打印、开始打印) - **按用户划分的 Bambu Cloud 账户** — 每个用户都有自己独立的云登录以获取配置文件 - **通过电子邮件进行高级身份验证** — SMTP 集成,用于自动化用户引导和自助密码重置 - 管理员使用电子邮件创建用户 — 系统自动发送安全的随机密码 - 用户可以从登录屏幕重置自己的密码(无需管理员介入) - 可自定义的电子邮件模板(欢迎电子邮件、密码重置) - **双重身份验证 (TOTP + Email OTP)** — 按用户选择开启的 2FA,兼容 Google Authenticator、Authy、2FAS 和任何标准的 TOTP 应用,或通过电子邮件发送的 6 位数字代码。每个用户获得 10 个一次性备用代码。防暴力破解保护(按用户 + 按 IP 速率限制)、防重放攻击保护(同一代码不能在同一个 30 秒窗口内被接受两次),且预认证令牌为基于数据库的一次性质询,通过 HttpOnly cookie 绑定到浏览器会话。 - **单点登录 (OIDC / SSO)** — 通过 PocketID、Authentik、Keycloak 或任何符合标准的 OIDC 提供商登录。针对公共客户端的 PKCE (S256)、`email_verified` 门控、签发者与 `aud`/`nonce` 验证、通过已验证电子邮件的可选账户关联、BamBuddy 新账户的可选自动开通,以及对从 OIDC 发现文档中提取的每个 URL 的严格 SSRF固(协议 + 私有/环回/链路本地 IP 检查)。 - **按用户发送电子邮件通知** — 用户接收其自己打印任务的电子邮件警报(开始、完成、失败、停止),带有独立的切换控制 |
Spin up your own private Bambuddy with simulated printers and pre-loaded print history. Click around freely — it's your sandbox. ~10 seconds to spawn, 30-minute session, no signup.
更喜欢视频演示?
Click to watch the demo on YouTube
点击展开截图
Real-time printer monitoring with AMS status
Print archive with 3D preview and project assignment
Re-print with AMS filament mapping preview
Built-in timelapse editor with trim, speed, and music
Group related prints into projects
Project detail view with assigned archives
Project timeline and print history
Print scheduling and queue management
Schedule prints for specific date and time
Customizable statistics dashboard
Maintenance tracking per printer
Configure maintenance types and intervals
Bambu Cloud filament profiles
Edit filament preset settings
Pressure advance (K-factor) profiles
Edit K-factor profile settings
General configuration and integrations
Smart plug control and energy monitoring
Multi-provider notification system
API keys and webhook endpoints
Virtual printer configuration
Virtual printer appears in Bambu Studio/Orca Slicer
MQTT debug logging for troubleshooting
Quick power plug control in sidebar
Docker 配置与命令
**环境变量:** | Variable | Default | Description | |----------|---------|-------------| | `TZ` | `UTC` | 您的时区(例如,`America/New_York`,`Europe/Berlin`) | | `PORT` | `8000` | Bambuddy 运行的端口(使用主机网络模式时) | | `DEBUG` | `false` | 启用调试日志 | | `LOG_LEVEL` | `INFO` | 日志级别:`DEBUG`、`INFO`、`WARNING`、`ERROR` | **数据持久化:** | Volume | Purpose | |--------|---------| | `bambuddy.db` | 包含所有打印数据的 SQLite 数据库(使用 PostgreSQL 时无效) | | `archive/` | 归档的 3MF 文件和缩略图 | | `logs/` | 应用程序日志 | **更新:** ``` # 预构建镜像: 仅拉取最新版本 docker compose pull && docker compose up -d # 从源码构建: 拉取更改后重新构建 cd bambuddy && git pull && docker compose up -d --build ``` **每日 Beta 版本:** 带有最新修复的 Beta 版本会定期推送到相同的 beta 版本标签: ``` # 拉取当前 beta 版本 docker pull ghcr.io/maziggy/bambuddy:0.2.2b1 # 或从 Docker Hub docker pull maziggy/bambuddy:0.2.2b1 ``` 使用 [Watchtower](https://containrrr.dev/watchtower/) 在推送新的每日构建版本时自动更新。 **实用命令:** ``` # 查看日志 docker compose logs -f # 停止/启动 docker compose down docker compose up -d # Shell 访问 docker compose exec bambuddy /bin/bash ``` **自定义端口:** ``` ports: - "3000:8000" # Access on port 3000 ``` **反向代理 (Nginx):** ``` server { listen 443 ssl http2; server_name bambuddy.yourdomain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://localhost:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 86400; } } ``` **主机网络模式**(打印机发现和摄像头流所需): ``` services: bambuddy: build: . network_mode: host ```
用 ❤️ 为 3D 打印社区打造
论坛 •
加入我们的 Discord •
报告 Bug •
功能建议 •
官方文档