UNPKG

@fdm-monster/server

Version:

FDM Monster is a bulk OctoPrint manager to set up, configure and monitor 3D printers. Our aim is to provide extremely optimized websocket performance and reliability.

176 lines (136 loc) 15.8 kB
<p align="center" style="margin-bottom: 0"> <a href="https://docs.fdm-monster.net/" target="_blank" rel="noopener noreferrer"> <img width="150" src="https://github.com/fdm-monster/fdm-monster-client/blob/main/public/img/logo.png?raw=true" alt="FDM Monster"> </a> </p> <h1 align="center" style="padding-top: 0; margin-top: 10px">FDM Monster</h1> <p align="center"> <a href="https://discord.gg/mwA8uP8CMc"><img src="https://img.shields.io/discord/864835453773807686?label=Discord&logo=discord"/></a> <a href="https://github.com/fdm-monster/fdm-monster/releases/latest"> <img src="https://img.shields.io/github/release/fdm-monster/fdm-monster"/></a> <a href="https://github.com/fdm-monster/fdm-monster/stargazers"> <img src="https://img.shields.io/github/stars/fdm-monster/fdmonster"/></a> <a href="https://github.com/fdm-monster/fdm-monster/issues"> <img src="https://img.shields.io/github/issues/fdm-monster/fdm-monster"/></a> <a href="https://app.codecov.io/gh/fdm-monster/fdm-monster"> <img src="https://codecov.io/gh/fdm-monster/fdm-monster/branch/develop/graph/badge.svg?flag=server-nodejs&precision=0"/></a> <br/> <a href="https://unraid.net/community/apps?q=fdm+monster"> <img src="https://img.shields.io/badge/Unraid%20Community%20Application-fc832e"/> </a> </p> FDM Monster is a server for managing your 3D printer farm through [OctoPrint](https://octoprint.org/) as well as [Klipper](https://www.klipper3d.org/) using [Moonraker](https://github.com/Arksine/moonraker) and [Prusa-Link](https://github.com/prusa3d/Prusa-Link). ## Check out our [documentation](https://docs.fdm-monster.net) ![fdm-monster-main-grid](https://github.com/user-attachments/assets/4137d8d6-0365-44db-b9a9-53e3820a4cb3) ## Features 🖨️ Here is a list of features that make FDM Monster stand out: - Adding OctoPrint, Moonraker and Prusa-Link instances - Dragging or creating new printers on a customizable grid - Drag n drop GCode to print - Select printers and print one GCode file in batch - Marking printers as 'under maintenance' - Import printers from software like OctoFarm - YAML backup and import - Thumbnail support - SQLite as well as MongoDB support ## Installation methods ⚙️ - [Docker image](https://hub.docker.com/r/fdmmonster/fdm-monster) - [Raspberry Pi image MonsterPi](https://docs.fdm-monster.net/guides/monsterpi) - [Unraid Community App](https://unraid.net/community/apps?q=fdm+monster) Would you like to add a method of running FDM Monster? Please reach out or create an issue/pull-request! ## Getting started 😎 Check out the [documentation](https://docs.fdm-monster.net) to install or deploy FDM Monster for your farm. Are you interested in running the Raspberry Pi image? Please jump ahead [MonsterPi Section](https://docs.fdm-monster.net/guides/monsterpi). ## Reach out for questions or ideas ❔ Please join the discord, but stay professional and proactive! - Discord server: https://discord.gg/mwA8uP8CMc - Website: [https://fdm-monster.net](https://fdm-monster.net) ## Support the project 💸 Is the project helping you? Please consider these options. FDM Monster would not exist without all your support! ![GitHub Sponsor](https://img.shields.io/github/sponsors/fdm-monster?label=Sponsor&logo=GitHub) [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/V7V6XFWY0) ## Sponsors 🤩 Please consider sponsoring FDM Monster to help this project! You can find the [GitHub Sponsorship Tiers here](https://github.com/sponsors/fdm-monster). Thanks to the following parties for their financial support: | Tier 1 | Tier 2 | Tier 3 | Tier 4 | One time | |--------|--------|--------|--------|-----------| | | [thatguymendel](https://github.com/thatguymendel) | | [doucettom](https://github.com/doucettom) | [th3dstudio](https://github.com/th3dstudio) | ## Contributors ✨ These are the people involved in the project. Find the meaning of the emoji keys [here](https://allcontributors.org/docs/en/emoji-key). <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> [![All Contributors](https://img.shields.io/badge/all_contributors-23-orange.svg?style=flat-square)](#contributors-) <!-- ALL-CONTRIBUTORS-BADGE:END --> <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <table> <tbody> <tr> <td align="center" valign="top" width="10%"><a href="https://github.com/davidzwa"><img src="https://avatars.githubusercontent.com/u/6005355?v=4?s=40" width="40px;" alt="David Zwart"/><br /><sub><b>David Zwart</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Adavidzwa" title="Bug reports">🐛</a> <a href="https://github.com/fdm-monster/fdm-monster/commits?author=davidzwa" title="Code">💻</a> <a href="#maintenance-davidzwa" title="Maintenance">🚧</a> <a href="#userTesting-davidzwa" title="User Testing">📓</a></td> <td align="center" valign="top" width="10%"><a href="https://kevenaar.name"><img src="https://avatars.githubusercontent.com/u/834643?v=4?s=40" width="40px;" alt="Maurice Kevenaar"/><br /><sub><b>Maurice Kevenaar</b></sub></a><br /><a href="#security-mkevenaar" title="Security">🛡️</a> <a href="#maintenance-mkevenaar" title="Maintenance">🚧</a> <a href="#ideas-mkevenaar" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Amkevenaar" title="Bug reports">🐛</a> <a href="https://github.com/fdm-monster/fdm-monster/pulls?q=is%3Apr+reviewed-by%3Amkevenaar" title="Reviewed Pull Requests">👀</a> <a href="#infra-mkevenaar" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/Tobikisss"><img src="https://avatars.githubusercontent.com/u/45754890?v=4?s=40" width="40px;" alt="Tobias"/><br /><sub><b>Tobias</b></sub></a><br /><a href="#ideas-Tobikisss" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-Tobikisss" title="Maintenance">🚧</a> <a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3ATobikisss" title="Bug reports">🐛</a></td> <td align="center" valign="top" width="10%"><a href="https://tideline3d.com"><img src="https://avatars.githubusercontent.com/u/12903320?v=4?s=40" width="40px;" alt="tideline3d"/><br /><sub><b>tideline3d</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Atideline3d" title="Bug reports">🐛</a> <a href="#ideas-tideline3d" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/windarrow3d"><img src="https://avatars.githubusercontent.com/u/91099282?v=4?s=40" width="40px;" alt="WindArrow3d"/><br /><sub><b>WindArrow3d</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Awindarrow3d" title="Bug reports">🐛</a> <a href="#financial-windarrow3d" title="Financial">💵</a> <a href="#ideas-windarrow3d" title="Ideas, Planning, & Feedback">🤔</a> <a href="#userTesting-windarrow3d" title="User Testing">📓</a> <a href="#platform-windarrow3d" title="Packaging/porting to new platform">📦</a></td> <td align="center" valign="top" width="10%"><a href="http://lucianchapar.com"><img src="https://avatars.githubusercontent.com/u/33263520?v=4?s=40" width="40px;" alt="Lucian Chapar"/><br /><sub><b>Lucian Chapar</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Alucian151" title="Bug reports">🐛</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/Dumnersm580"><img src="https://avatars.githubusercontent.com/u/80608783?v=4?s=40" width="40px;" alt="Dumnersm580"/><br /><sub><b>Dumnersm580</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/commits?author=Dumnersm580" title="Documentation">📖</a> <a href="#ideas-Dumnersm580" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="10%"><a href="http://www.tophattwaffle.com"><img src="https://avatars.githubusercontent.com/u/6774125?v=4?s=40" width="40px;" alt="tophattwaffle"/><br /><sub><b>tophattwaffle</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Atophattwaffle" title="Bug reports">🐛</a> <a href="#ideas-tophattwaffle" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/rmhenn"><img src="https://avatars.githubusercontent.com/u/22482801?v=4?s=40" width="40px;" alt="rmhenn"/><br /><sub><b>rmhenn</b></sub></a><br /><a href="#ideas-rmhenn" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Armhenn" title="Bug reports">🐛</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/cyrixdx4"><img src="https://avatars.githubusercontent.com/u/62126724?v=4?s=40" width="40px;" alt="cyrixdx4"/><br /><sub><b>cyrixdx4</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Acyrixdx4" title="Bug reports">🐛</a></td> </tr> <tr> <td align="center" valign="top" width="10%"><a href="https://github.com/doucettom"><img src="https://avatars.githubusercontent.com/u/6595645?v=4?s=40" width="40px;" alt="doucettom"/><br /><sub><b>doucettom</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Adoucettom" title="Bug reports">🐛</a> <a href="#ideas-doucettom" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/ZombiesLoveMe"><img src="https://avatars.githubusercontent.com/u/35661391?v=4?s=40" width="40px;" alt="Callum"/><br /><sub><b>Callum</b></sub></a><br /><a href="#ideas-ZombiesLoveMe" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/bharvey88"><img src="https://avatars.githubusercontent.com/u/8107750?v=4?s=40" width="40px;" alt="bharvey88"/><br /><sub><b>bharvey88</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Abharvey88" title="Bug reports">🐛</a> <a href="#infra-bharvey88" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#platform-bharvey88" title="Packaging/porting to new platform">📦</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/Mikec78660"><img src="https://avatars.githubusercontent.com/u/108021920?v=4?s=40" width="40px;" alt="Mikec78660"/><br /><sub><b>Mikec78660</b></sub></a><br /><a href="#ideas-Mikec78660" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="10%"><a href="https://techinterview.guide"><img src="https://avatars.githubusercontent.com/u/168030?v=4?s=40" width="40px;" alt="w. ian douglas"/><br /><sub><b>w. ian douglas</b></sub></a><br /><a href="#ideas-iandouglas" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="10%"><a href="http://insanityautomation.com/"><img src="https://avatars.githubusercontent.com/u/38436470?v=4?s=40" width="40px;" alt="InsanityAutomation"/><br /><sub><b>InsanityAutomation</b></sub></a><br /><a href="#ideas-InsanityAutomation" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3AInsanityAutomation" title="Bug reports">🐛</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/LyfeOnEdge"><img src="https://avatars.githubusercontent.com/u/26140376?v=4?s=40" width="40px;" alt="Andrew (LyfeOnEdge) (ArcticGentoo)"/><br /><sub><b>Andrew (LyfeOnEdge) (ArcticGentoo)</b></sub></a><br /><a href="#ideas-LyfeOnEdge" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/callanova"><img src="https://avatars.githubusercontent.com/u/175639705?v=4?s=40" width="40px;" alt="callanova"/><br /><sub><b>callanova</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Acallanova" title="Bug reports">🐛</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/thatguymendel"><img src="https://avatars.githubusercontent.com/u/67444998?v=4?s=40" width="40px;" alt="thatguymendel"/><br /><sub><b>thatguymendel</b></sub></a><br /><a href="#ideas-thatguymendel" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/julien-printerbox"><img src="https://avatars.githubusercontent.com/u/134132189?v=4?s=40" width="40px;" alt="julien-printerbox"/><br /><sub><b>julien-printerbox</b></sub></a><br /><a href="#ideas-julien-printerbox" title="Ideas, Planning, & Feedback">🤔</a></td> </tr> <tr> <td align="center" valign="top" width="10%"><a href="https://github.com/Tbwan"><img src="https://avatars.githubusercontent.com/u/44231748?v=4?s=40" width="40px;" alt="Tbwan"/><br /><sub><b>Tbwan</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3ATbwan" title="Bug reports">🐛</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/nuvious"><img src="https://avatars.githubusercontent.com/u/5287736?v=4?s=40" width="40px;" alt="David Cheeseman"/><br /><sub><b>David Cheeseman</b></sub></a><br /><a href="#ideas-nuvious" title="Ideas, Planning, & Feedback">🤔</a> <a href="#platform-nuvious" title="Packaging/porting to new platform">📦</a> <a href="#infra-nuvious" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td> <td align="center" valign="top" width="10%"><a href="https://github.com/thatguy-jaysenodell"><img src="https://avatars.githubusercontent.com/u/118288184?v=4?s=40" width="40px;" alt="That Guy Jaysen"/><br /><sub><b>That Guy Jaysen</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Athatguy-jaysenodell" title="Bug reports">🐛</a></td> </tr> </tbody> </table> <!-- markdownlint-restore --> <!-- prettier-ignore-end --> <!-- ALL-CONTRIBUTORS-LIST:END --> <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <!-- markdownlint-restore --> <!-- prettier-ignore-end --> <table></table> <!-- ALL-CONTRIBUTORS-LIST:END --> ## Contribute Feel like joining in as a developer or do you have a quick fix? Great! Please read the [CONTRIBUTING](CONTRIBUTING.md) file. ### Development Progress - [x] :rocket: Docker amd64 image - [x] 🛡️ MongoDB 5 & 6 support - [x] :rocket: Quick copy paste of FDM Monster printers - [x] 🛡️ Complete API test coverage - [x] :rocket: Floor management - [x] Auto-clean old OctoPrint files (opt-in and configurable) - [x] :rocket: Windows and Linux Service - [x] Printer completion/failure tracking (with statistics page) - [x] Printer placement using drag n drop - [x] 🔌 Raspberry Pi image (https://github.com/fdm-monster/MonsterPi) - [x] :rocket: Documentation (https://docs.fdm-monster.net) - [x] 🛡️ Login and user management - [x] OctoFarm export - [x] Klipper and Moonraker API integration - [x] GCode Thumbnail support - [x] `.bgcode` support - [x] Modernized UI layout and tile design - [ ] History and statistics - [ ] Extended webcam integration - [ ] Spoolman integration ## License FDM Monster is licensed with [AGPL-3.0](LICENSE). For details, please consult the [LICENSE](LICENSE) file. ## Historical Note This project has been forked from OctoFarm at September 2021 when I ended as a contributor to this project.