Raspberry Piがないのでx64なLinuxサーバにOctoPrintを導入する

ようやく組みあがったPrusaですが、以前所有していたAdventurer3より不便なポイントがひとつ。

データを入れたSDカードを挿さないと印刷ができないのです。

この課題を解決するために、Prusaやほかの3Dプリンタユーザーが使っているのがOctoPrint。

Raspberry PiにOctoPrint(OctoPi)を導入している情報はいくらでも出てくるのですが、現在は高性能なRaspberry Pi 3B+や4を推奨とのこと。

我が家の引き出しをあけてもRaspberry Pi Zero Wしか在庫がありませんでした。

しかも、Raspberry Piは性能の向上に伴って価格も上がっています。SDカード運用をやめるために払う金額じゃないんですよねぇ。

結局、Pythonが動いて、シリアル通信で3Dプリンタと話ができればええんじゃろ?

ということで、どこのご家庭にもある常時稼働のLinuxサーバにOctoPrintを導入し、3Dプリンタと接続することにします。

インストールめも

インストール環境

以下、公式サイトに書いてあるまんまです。

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

インストールの流れ

インストールするディレクトリを用意する。

$ mkdir ~/path/to/install
$ cd ~/path/to/install

OctoPrintをインストールする。

$ python3 -m venv OctoPrint
$ OctoPrint/bin/pip install --upgrade pip
$ OctoPrint/bin/pip install OctoPrint

実行するユーザーにシリアルコンソールの許可を与える。

# id YOUR_USERNAME
uid=1000(YOUR_USERNAME) gid=1000(YOUR_USERNAME) groups=1000(YOUR_USERNAME),986(docker)
# usermod -a -G tty YOUR_USERNAME
# usermod -a -G dialout YOUR_USERNAME
# id YOUR_USERNAME
uid=1000(YOUR_USERNAME) gid=1000(YOUR_USERNAME) groups=1000(YOUR_USERNAME),5(tty),18(dialout),986(docker)

octoprint.serviceを作成してsystemdで自動起動させる。

[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=YOUR_USERNAME
ExecStart=/path/to/install/OctoPrint/bin/octoprint

[Install]
WantedBy=multi-user.target
# /etc/systemd/system
# systemctl daemon-reload
# systemctl start octoprint.service

ファイアウォールで5000/tcpを開ける。

# firewall-cmd --zone=public --permanent --add-port 5000/tcp
# firewall-cmd --reload

あとはプリンタとUSBで接続するだけ。

OctoPrintの設定

公式見ながら雰囲気でやった。

https://help.prusa3d.com/en/article/octoprint-configuration-and-install_2182#launching-and-configuring-octoprint