OctoPrint is most commonly used in a Raspbery Pi using an specific-purpose OS called OctoPi (nothing more than a Raspbian with OctoPrint installed out-of-the-box) [Link].

Although it can run on any Linux distribution, running on a RPi is much more convenient because it is compact, low-power consumption, and there are camera modules like this:

To deploy OctoPi in a Reaspberry Pi using official Imager go to Choose OS > Other Specific-Purpose OS > 3D Printing > then, select OctoPi.

To install on a Linux host:

sudo apt install git -y
git clone https://github.com/paukstelis/octoprint_deploy.git
sudo octoprint_deploy/octoprint_deploy.sh

To install as a Docker container:

sudo apt install git docker.io docker-compose -y 
git clone https://github.com/OctoPrint/octoprint-docker.git
cd octoprint-docker
docker-compose up -d

Then, navigate to or

Note: change the loopback IP address accordingly. Port 5000 is to access it directly or default port if using a reverse proxy. Check the official documentation to see how to allow the Docker container to get access to the webcam or the USB-Serial port.


OctoPrint is more than just an application but it is a framework where developers can build their Plugins (extension like applications) on top.

Most popular Plugins:

  • Bed Visualizer
    • Allow one to visualise and read the values of the misalignment and distortion of the printing bad for best adjustment.
  • Octolapse
    • It replaces the native timelapse feature enhancing the existing feature with much more control and capabilities for a great image stabilisation and tailored parameters.

There are two ways of printing through Octoprint. From SD (memory card inserted to the printed) or Local (internal storage of the Octopi or Linux host).

  • Printing from SD
    • Does not require to be connected during the whole process because it instructs the printer to work autonomously while it simple supervise the metrics.
    • Many features are not allowed on this mode because Octoprint hands over the control to the printer.
    • When transferring files to the SD via Octoprint, the bandwidth of the USB connection is limited to the 115,200 of the serial connection (extremely slow).
  • Printing from Local
    • It requires the Octoprint to be connected and operating all time while printing.
    • Octoprint will be send each position command to the printer via USB as it does its job.
    • When transferring files to the local memory it works as fast as the host’s hardware is capable of.

There is a section in the configuration called Event Manager that allows executing shell commands when specific events happen.

In my case I have a PiHat that has RGB LEDs that I use to visually inform what is the current status of the printer or the printing process plus sending me email when it completes or fails (virtually, anything you want):


In Octolapse, this is the profile parameters that worked for me for an Ender 3 V2 Neo with PLA to stop drooping and strings when travelling for image stabilisation:


3D Printing Tips and Tricks [Link]

Motorizing Pan Tilt on Celestron Telescope [Link]