This is an old revision of the document!
Installing manually
The generic setup instructions boil down to
This starts it up manually
/path/to/OctoPrint/bin/octoprint serve
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:
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