Raspberry Pi に n8n-pi をインストールする

Mac にワークフロー自動化ツールの n8n をインストールしたことを書いた。

Docker 版の n8n をインストールしたと書いているが、実際はデスクトップ版を運用している。Docker 版はポート開放の関係か Webhook がうまく動かなかったりしたからだ。

しかしデスクトップ版にも問題があることに気付いた。時々ワークフローがうまく動作しないことがある。再起動しても変わらない(n8n 以外の問題かもしれない)。数時間待てば動くようになるが、理由はよく分からない。

一番の問題は Webhook node の Production URL が勝手に変わってしまうことだ。アプリや Mac を再起動したタイミングで変わってしまうんだろうか。いずれにせよ、Production URL が変わってしまうと、僕の場合はトリガー元となる FileMaker アプリのスクリプトも書き換える必要があり手間がかかる。

そういうわけで、試しに Raspberry Pi に n8n をインストールして使ってみることにした。

n8n を Raspberry Pi にインストールするには、自分で n8n をインストールしたり、Docker を使ったりする方法があるが、一番簡単なのは n8n-pi というツールを使う方法だ。

n8n-pi はインストールが簡単とはいえ、いろいろとトリッキーな問題があり、かなり苦労した。試した結果は以下のようになった。

i) n8n がインストールされた Raspberry Pi 用イメージを使う方法:インストールしても n8n にアクセスできず。

ii) 自分で Raspberry Pi OS(bullseye 32-bit)をインストール、n8n-pi の自動インストールスクリプトを使う:インストール途中でエラーが出る。

iii) 自分で Raspberry Pi OS(buster 32-bit)をインストール、n8n-pi の自動インストールスクリプトを使う:インストール途中で「pi ユーザーがないので削除できない」と表示され、その時点で止まってしまう。(Raspberry Pi Imager のオプションでユーザーを設定しておくと、pi ユーザーが作成されないため。)

iv) 自分で Raspberry Pi OS(buster 32-bit)をインストール。その際、あえて pi ユーザーが作成されるようにする。そして、n8n-pi を自動インストールスクリプトを使う:成功。

iv でやっとうまくいった(これだけ苦労するなら n8n-pi など使わずに、普通に n8n をインストールすればよかったような)。

環境:macOS Catalina Version 10.15.6(英語環境、作業環境)、Raspberry Pi Model B(32-bit)

(1)以下のダウンロードアーカイブから、2020-02-13-raspbian-buster-lite.zip をダウンロード。n8n-pi の Raspberry Pi OS は Full ではなく Lite でなければ n8n-pi のインストールができない。

Index of /raspbian_lite/images
http://downloads.raspberrypi.org/raspbian_lite/images/

(2)balenaEtcher で microSD カードに1を焼き付ける。

balenaEtcher - Flash OS images to SD cards & USB drives
https://www.balena.io/etcher/

完了後に自動的にアンマウントされるので一旦 microSD カードをパソコンから抜いて挿し直す。

(3)SSH 接続をするため、Terminal で以下のコマンドを実行し、ssh という空ファイルを作成する。

$ touch /Volumes/boot/ssh

(4)microSD カードのルートディレクトリに、wpa_supplicant.conf というファイル名で、以下の内容のファイルを作成する。SSID、PASSWORD は自分の環境に合わせて変更する。これで WiFi の設定ができる。

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
   ssid="SSID"
   psk="PASSWORD"
}

(5)microSD カードを Raspberry Pi に入れて電源を入れる。

(7)数分待ってから Mac の Terminal で以下のコマンドで SSH 接続する。パスワードは raspberry。

$ ssh pi@raspberrypi.local

(8)OS のアップデート(この作業を省略しようとしたら、n8n-pi のインストールができなかった)。

$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt dist-upgrade
$ sudo apt autoremove -y

(9)以下のコマンドを実行して、n8n をインストールする。

$ wget --no-cache -O - https://raw.githubusercontent.com/TephlonDude/n8n-pi/master/scripts/build-n8n-pi-1.sh | bash

画面に従っていけばいい。最初にホスト名を設定する。デフォルトは n8n-pi だ。

その後リブートが行われるがその前にユーザー名とパスワードが表示される(n8n/n8n-gr8!)のでメモ。そして以下のコマンドで SSH ログインする。

$ ssh n8n@n8n-pi.local

パスワードでログインするとスクリプトの続きがすぐに実行される。

途中、tunnel オプションを付けるかと聞かれるが、とりあえずオフにした。

問題なく n8n-pi のインストールが完了した。


この記事が気に入ったらサポートをしてみませんか?