DebianにOctoPrintを入れる

Raspberry PI ではなく普通のDebianに入れます

TL;DR

  • pip install で octoprint を入れて、systemd起動するようにサービス定義を書いて起動
  • ustreamer を入れて、systemd起動するようにサービス定義を書いて起動
  • FUN!

1. OctoPrintを入れる

ここを参考にしました
How to Install OctoPrint on Linux/Ubuntu | All3DP

1. 前提パッケージを入れる

sudo apt install python3 python3-pip python3-dev python3-setuptools python3-venv git libyaml-dev build-essential

2. OctoPrint起動ユーザーを作ってそこに準備する

# octo ユーザーを作って
sudo useradd -m octo
sudo usermod -a -G tty,dialout octo

# そこへ移動して
sudo su octo -c /bin/bash
cd ~
mkdir OctoPrint && cd OctoPrint

# OctoPrintを入れる
python3 -m venv venv
source venv/bin/activate
pip install --no-cache-dir octoprint

3. /etc/systemd/system/octoprint.service を作る

cat <<__EOF__ > octoprint.service
[Unit]
Description=The snappy web interface for your 3D printer
After=network-online.target
Wants=network-online.target

[Service]
Environment="LC_ALL=C.UTF-8"
Environment="LANG=C.UTF-8"
Type=exec
User=octo
ExecStart=/home/octo/OctoPrint/venv/bin/octoprint

[Install]
WantedBy=multi-user.target
__EOF__

sudo cp octoprint.service /etc/systemd/system/

4. 起動する

sudo systemctl enable octoprint.service
sudo systemctl start octoprint.service

ブラウザから http://your-host-name:5000 で開ける筈です

ustreamer を入れる

OctoPrint の Control でWebCam表示するための準備です

1. ustreamerを入れる

# 入れて
sudo apt install ustreamer

# video を octo ユーザーから使えるようにする
sudo usermod -a -G video octo

2. /etc/systemd/system/ustreamer.service を作る

/dev/video0 は他の名前になっているかもしれません

cat <<__EOF__ > ustreamer.service
[Unit]
Description=MJPEG Streaming
After=network-online.target
Wants=network-online.target

[Service]
Environment="LC_ALL=C.UTF-8"
Environment="LANG=C.UTF-8"
Type=exec
User=octo
ExecStart=/usr/bin/ustreamer -d /dev/video0 -s 0.0.0.0 -m MJPEG -r 640x480 -f 5 -p 8001 --device-timeout 8 --device-error-delay 8

[Install]
WantedBy=multi-user.target
__EOF__

sudo cp ustreamer.service /etc/systemd/system/

3. 起動する

sudo systemctl enable ustreamer.service
sudo systemctl start ustreamer.service

4. OctoPrint に設定する

OctoPrint の OctoPrint Settings - Classic WebCam から以下を設定します

  • Stream
    • Stream URL : http://your-host-name:8001/stream
  • Snapshots & Timelapse
    • Snapshot URL : http://your-host-name:8001/snapshot

おまけ : http://your-host-name:5000 ではなく http://your-host-name で開けるようにする

nginx でリバースプロキシするならこんなかんじで

# いれて
sudo apt install nginx

# リバースプロキシのconfigを書いて
cat <<__EOF__ > octoprint.conf
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {
  listen  80;

  location / {
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_pass http://localhost:5000;
  }
}
___EOF__

sudo cp octoprint.conf  /etc/nginx/conf.d/

# sites-enabled/default が邪魔になるので消して
sudo rm /etc/nginx/sites-enabled/default

# リロード
sudo systemctl reload nginx.service

ショボン玉( ´・ω・)y━。 o ○(´・ω・) 。 O​ (´・ω・)

Canonical Snapcraft - OctoPrint ... snap による OctoPrint なのですが

sudo apt update
sudo apt install snapd
sudo snap install core
sudo snap install octoprint-pfs --edge

プリンタに接続できませんでした。

Changing monitoring state from "Offline" to "Detecting serial port"
Serial port list: ['/dev/ttyUSB0', '/dev/ttyS3', '/dev/ttyS2', '/dev/ttyS1', '/dev/ttyS0']
Trying /dev/ttyUSB0
Could not connect to or enter programming mode on /dev/ttyUSB0, might not be a printer or just not allow programming mode
Trying /dev/ttyS3
Could not connect to or enter programming mode on /dev/ttyS3, might not be a printer or just not allow programming mode
Trying /dev/ttyS2
Could not connect to or enter programming mode on /dev/ttyS2, might not be a printer or just not allow programming mode
Trying /dev/ttyS1
Could not connect to or enter programming mode on /dev/ttyS1, might not be a printer or just not allow programming mode
Trying /dev/ttyS0
Could not connect to or enter programming mode on /dev/ttyS0, might not be a printer or just not allow programming mode
Changing monitoring state from "Detecting serial port" to "Error: Failed to autodetect serial port, please set it manually."
Failed to autodetect serial port, please set it manually.