Spoolman is a self-hosted web service designed to help you efficiently manage your 3D printer filament spools and monitor their usage. It acts as a centralized database that seamlessly integrates with popular 3D printing software like OctoPrint and Klipper/Moonraker. When connected, it automatically updates spool weights as printing progresses, giving you real-time insights into filament usage.
I just discovered Spoolman the other day by pure accident. Read about it quickly in a comment on some social media platform and instantly had to look it up. It looks pretty sweet. In the past I have never really needed much organization for my filament. I only had a few rolls of a few colors and did not print very heavily. Since getting the Elegoo Neptune 4 Max I have dumped rolls into the printer. I now find myself with a bunch of half used rolls of filament and if I want to use them I have to eyeball how much is left. Yes my spools have meter and gram indicators but that’s still a rough guess. Spoolman takes the guesswork out of it all.
If you have a printer running Klipper you can probably install and use Spoolman. If you have a printer like an Elegoo Neptune 4 with Klipper – you can’t. Elegoo did something to the firmware that makes it so you cannot update with the current versions out there. Nor can you update the boards OS without breaking things I have read. Moonraker needs to be updated to use Spoolman. There is a procedure I have found for updating Moonraker on the Neptune but I HAVE NOT TRIED IT. I posted it over here on my other post but I will reference it here also. This was my push to install OpenNept4une.
This is my guide/what I did to get Spoolman on my Neptune 4 Max with OpenNept4une.
[https://github.com/Donkie/Spoolman]
Index
- Install Docker
- Install Docker Compose
- Install Spoolman
- Modify Klipper
- Modify Moonraker
- Update Moonraker on an Elegoo (without OpenNept4une)
Install Docker
[https://docs.docker.com/engine/install/debian/] [https://docs.docker.com/engine/install/debian/#install-using-the-repository]
Install the prerequisites for Docker
1 2 3 4 |
sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc |
1 2 3 4 |
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
Run an update
sudo apt update
Install Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginVerify your Docker was installed, run this test:
sudo docker run hello-world
Install Docker Compose
Time to install Docker Compose.
We need to know what system and architechture we are using. Most times it is Linux X86_64, but in our case withthe Neptune and its stock motherboard it is not. run the following commands to confirm your system.
This should display “Linux”
uname -sThis should display “aarch64”
uname -m
Check the releases to see if there is an update, as of this writing we are using v2.27.1 .
[https://github.com/docker/compose/releases/]Install with this
1 |
sudo curl -L https://github.com/docker/compose/releases/download/v2.27.1/docker-compose-linux-aarch64 -o /usr/local/bin/docker-compose |
Then run
sudo chmod +x /usr/local/bin/docker-compose
Everything should now be installed for Docker and Docker Compose. To check your install run:
docker-compose --versionGood to go right?
Install Spoolman
Time to install Spoolman with Docker Compose for our Neptune.
1 2 3 4 5 |
cd ~ mkdir spoolman cd spoolman sudo mkdir data sudo nano docker-compose.yml |
That last line will open up a a Nano editor window to create a new Docker Compose file.
In the new blank window that opened up in your terminal paste the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
version: '3.8' services: spoolman: image: ghcr.io/donkie/spoolman:latest restart: unless-stopped volumes: # Mount the host machine's ./data directory into the container's /home/app/.local/share/spoolman directory - type: bind source: /home/mks/spoolman/data # This is where the data will be stored locally. Could also be set to for example `source: /home/pi/printer_data/spoolman`. target: /home/app/.local/share/spoolman # Do NOT modify this line ports: # Map the host machine's port 7912 to the container's port 8000 - "7912:8000" environment: - TZ=America/Chicago # Optional, defaults to UTC |
Press CTRL+O to save and CTRL+X to quit.
Now we have to run a few more commands before we can start Spoolman.
We need to add our mks user to the Docker group:
sudo usermod -aG docker $USERRefresh the groups for the current session
newgrp dockerNow we need to change the ownership of the data folder.
sudo chown -R 1000:1000 /home/mks/spoolman/data
We can now start Spoolman with:
docker compose up -d (you need to be in the Spoolman directory where we saved the docker-compose.yml file)To stop Spoolman:
docker compose stop
To view the Docker Compose logs if you are having issues
docker compose logs
Modify Klipper
Now we need to edit user_settings.conf to add a couple of macros to Klipper/Fluidd.
From the same configuration tab in Klipper select and edit the user_settings.conf file. Paste the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Spoolman [gcode_macro SET_ACTIVE_SPOOL] gcode: {% if params.ID %} {% set id = params.ID|int %} {action_call_remote_method( "spoolman_set_active_spool", spool_id=id )} {% else %} {action_respond_info("Parameter 'ID' is required")} {% endif %} [gcode_macro CLEAR_ACTIVE_SPOOL] gcode: {action_call_remote_method( "spoolman_set_active_spool", spool_id=None )} |
Save the file.
With the above configuration it is possible to run the SET_ACTIVE_SPOOL ID=1 command to set the currently tracked spool ID to 1, and the CLEAR_ACTIVE_SPOOL to clear spool tracking (useful when unloading filament for example).
Modify Moonraker
[https://moonraker.readthedocs.io/en/latest/configuration/#spoolman]We need to add a new configuration file. From the configuration tab in Klipper click the + sign on the menu bar and select Add File . It will now ask for a file name, name it moonraker-spoolman.conf .
Paste the following into the new file:
1 2 3 4 5 6 7 8 |
# moonraker-spoolman.conf [spoolman] server: http://localhost:7912 # URL to the Spoolman instance. This parameter must be provided. sync_rate: 5 # The interval, in seconds, between sync requests with the # Spoolman server. The default is 5. |
Save the file.
Now we need to edit the Moonraker configuration to tell it to connect to the Spoolman server we created. Via the Klipper configuration menu we can access and edit/save all of the configuration files.
Select the moonraker.conf file and scroll to the bottom and add:
1 2 3 |
# moonraker.conf [include moonraker-spoolman.conf] |
Save and restart.
That’s it!
You can now connect your browser to http://your_printer_IP:7912 and start setting up your Vendors, Filament and then Spools. You can also refresh your browser window with Klipper in it, if it has been open all this time, and you should see the Spoolman window on the Klipper/Fluidd screen.
Update Moonraker on the Neptune 4
If you would like to try the Moonraker update method below feel free, just be warned I have not tried it so I cannot attest to weather it works or not without breaking anything. Follow at your own risk.
To update Moonraker on the Elegoo Neptune 4 (UNTESTED):
SSH into the printer ssh mks@your_printers_IP_address , password makerbase .
- Delete moonraker and mooonraker-env folders (in /home/mks )
1 2 |
sudo rm -f /home/mks/moonraker sudo rm -f /home/mks/moonraker-env |
1 2 3 |
sudo rm /etc/systemd/system/moonraker.service # then run the command ./kiauh/kiauh.sh |
- Install Moonraker by selecting 1 install then 2 Moonraker .
- Choose 8 to go back and the Q to quit back to the prompt
- Now run cd ~/moonraker
- Then run ./scripts/data-path-fix.sh
Instruction found on Reddit
[https://www.reddit.com/r/ElegooNeptune4/comments/1791tac/comment/k7wpu88/]
Useful links
[https://github.com/Donkie/Spoolman] [https://docs.fluidd.xyz/features/spoolman] [https://www.youtube.com/watch?v=GlgM1HcyFIo&t=230s]I found this great tutorial but it is in German. Use a browser translator and you’re set.
[https://blog.disane.dev/en/spoolman-your-filament-reel-management/]
Discover more from Its_All.Lost
Subscribe to get the latest posts sent to your email.