====== Octoprint ======
\\
The problem with installing manually is if you want to use the Arducam motorized focus camera.
**Installing manually**
\\
The generic setup instructions boil down to \\
- Installing Python 3, including pip.
- Creating a virtual environment somewhere: python -m venv OctoPrint
- Installing OctoPrint into that virtual environment: OctoPrint/bin/pip install OctoPrint
- 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
This will make OctoPrint accessible under http:/// and make mjpg-streamer accessible under http:///webcam/. You'll also need to modify /etc/default/haproxy and enable HAProxy by setting ENABLED to 1. After that you can start HAProxy by issuing the following command
\\
sudo service haproxy start
Pointing your browser to http:// should greet you with OctoPrint's UI. Now open the settings and switch to the webcam tab or alternatively open ~/.octoprint/config.yaml. Set the webcam's stream URL from http://:8080/?action=stream to /webcam/?action=stream (leave the snapshotUrl at http://127.0.0.1:8080/?action=snapshot!) and reload the page.
\\
If everything works you can add the following lines to ~/.octoprint/config.yaml (just create it if it doesn't exist yet) to make the server bind only to the loopback interface:
\\
server:
host: 127.0.0.1
Restart the server. OctoPrint should still be available on port 80, including the webcam feed (if enabled).
\\
**Updating & changing release channels & rolling back**
\\
OctoPrint should offer to update itself automatically and also allow you to switch to other Release Channels out of the box.\\
If for whatever reason you want or need to perform any of this manually however, perform the following commands to install of OctoPrint\\
source ~/OctoPrint/venv/bin/activate
pip install octoprint==
e.g.
source ~/OctoPrint/venv/bin/activate
pip install octoprint==1.4.0
\\
**Support restart/shutdown through OctoPrint's system menu**
\\
In the UI, under Settings > Commands, configure the following commands:
* Restart OctoPrint: //sudo service octoprint restart//
* Restart system: //sudo shutdown -r now//
* Shutdown system: //sudo shutdown -h now//
**Optional: Webcam**\\
If you also want webcam and timelapse support, you'll need to download and compile MJPG-Streamer:
\\
cd ~
sudo apt install subversion libjpeg62-turbo-dev imagemagick ffmpeg libv4l-dev cmake
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
export LD_LIBRARY_PATH=.
make
\\
Heads-up
The required packages depend on the underlying version of Debian! The above is what should work on the current Debian Stretch or Buster based images of Raspbian.
For Jessie use:
sudo apt install subversion libjpeg62-turbo-dev imagemagick libav-tools libv4l-dev cmake
For Wheezy or older (you should update...) use:
sudo apt install subversion libjpeg8-dev imagemagick libav-tools libv4l-dev cmake
This should hopefully run through without any compilation errors. You should then be able to start the webcam server using:\\
./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so"
For some webcams (including the PS3 Eye) you'll need to force the YUV mode by using the following start command:\\
./mjpg_streamer -i "./input_uvc.so -y" -o "./output_http.so"