User Tools

Site Tools


bdev:octoprint_setup

This is an old revision of the document!


Octoprint

Installing manually
The generic setup instructions boil down to

  1. Installing Python 3, including pip.
  2. Creating a virtual environment somewhere: python -m venv OctoPrint
  3. Installing OctoPrint into that virtual environment: OctoPrint/bin/pip install OctoPrint
  4. OctoPrint may then be started through ./OctoPrint/bin/octoprint serve or with an absolute path /path/to/OctoPrint/bin/octoprint serve

This starts it up manually

/path/to/OctoPrint/bin/octoprint serve

https://community.octoprint.org/t/setting-up-octoprint-on-a-raspberry-pi-running-raspbian-or-raspberry-pi-os/2337

Basic Installation

cd ~
sudo apt update
sudo apt install python3-pip python3-dev python3-setuptools python3-venv git libyaml-dev build-essential
mkdir OctoPrint && cd OctoPrint
python3 -m venv venv
source venv/bin/activate

OctoPrint and it's Python dependencies can then be installed using pip:

pip install pip --upgrade
pip install octoprint

Note

If this installs an old version of OctoPrint, pip probably still has something cached. In that case add --no-cache-dir to the install command, e.g.

pip install --no-cache-dir octoprint
To make this permanent, clean pip's cache:

rm -r ~/.cache/pip

Starting the server for the first time

pi@raspberrypi:~ $ ~/OctoPrint/venv/bin/octoprint serve
2020-11-03 17:39:17,979 - octoprint.startup - INFO - ***************************
2020-11-03 17:39:17,980 - octoprint.startup - INFO - Starting OctoPrint 1.4.2
2020-11-03 17:39:17,980 - octoprint.startup - INFO - ***************************

Automatic start up

Download the init script files from OctoPrint's repository, move them to their respective folders and make the init script executable:

wget https://github.com/OctoPrint/OctoPrint/raw/master/scripts/octoprint.service && sudo mv octoprint.service /etc/systemd/system/octoprint.service

Adjust the paths to your octoprint binary in /etc/systemd/system/octoprint.service. If you set it up in a virtualenv as described above make sure your
/etc/systemd/system/octoprint.service looks like this:

ExecStart=/home/pi/OctoPrint/venv/bin/octoprint

Then add the script to autostart using sudo systemctl enable octoprint.service.

This will also allow you to start/stop/restart the OctoPrint daemon via

sudo service octoprint {start|stop|restart}


Make everything accessible on port 80

If you want to have nicer URLs or simply need OctoPrint to run on port 80 (http's default port) due to some network restrictions, I recommend using HAProxy 593 as a reverse proxy instead of configuring OctoPrint to run on port 80. This has the following advantages:

  • OctoPrint does not need to run with root privileges, which it would need to to be able to bind to port 80 thanks to Linux privileged port restrictions
  • You can make mjpg-streamer accessible on port 80 as well
  • You can add authentication to OctoPrint
  • Depending on the HAProxy version you can also use SSL to access OctoPrint

Setup on Raspbian is as follows:

pi@raspberrypi ~ $ sudo apt install haproxy

I'm using the following configuration in /etc/haproxy/haproxy.cfg, for further examples take a look at the post here 385:

global
        maxconn 4096
        user haproxy
        group haproxy
        daemon
        log 127.0.0.1 local0 debug

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        option http-server-close
        option forwardfor
        maxconn 2000
        timeout connect 5s
        timeout client  15min
        timeout server  15min

frontend public
        bind :::80 v4v6
        use_backend webcam if { path_beg /webcam/ }
        default_backend octoprint

backend octoprint
        reqrep ^([^\ :]*)\ /(.*)     \1\ /\2
        option forwardfor
        server octoprint1 127.0.0.1:5000

backend webcam
        reqrep ^([^\ :]*)\ /webcam/(.*)     \1\ /\2
        server webcam1  127.0.0.1:8080
bdev/octoprint_setup.1632845311.txt.gz · Last modified: 2021/09/28 16:08 by richard