Raspberry Pi に Raspberry Pi OS Lite (64-bit) をインストールし、Docker 上で n8n を起動するまでの手順をまとめます。
同じLAN内の端末から SSH 接続できるところまでできている前提です。
実行環境
今回の構成例は以下です。
- 本体: Raspberry Pi3 Model B (RS Components)
- microSD: KIOXIA 32GB UHS-I Class10
- OS:
Raspberry Pi OS Lite (64-bit) - 接続方法: 同一LAN内の別端末から
SSH - コンテナ実行環境:
Docker Engine - コンテナ管理:
Docker Compose Plugin - アプリケーション:
n8n - タイムゾーン:
Asia/Tokyo
※ Raspberry Pi の機種差やOSバージョン差で細かい挙動が変わる可能性はありますが、基本的な流れは同じです。
前提条件
SDカードへ Raspberry Pi OS Lite (64-bit) を書き込む際に、以下の設定を入れておきます。
- Hostname: 自分で決めたもの
- User: 自分で決めたもの
- Password: 自分で決めたもの
- SSH: 有効
- Wi-Fi: 必要なら設定
- Timezone:
Asia/Tokyo
同じLAN内の端末から、以下のように接続できれば準備完了です。
ssh User@Hostname
n8n を Docker で動かす
SSH で入れたら、次はこの3段階です。
1. OSを更新する
2. Dockerを入れる
3. n8nを起動する
余計な説明は抜きで、そのまま順番に進めます。
1. まずOSを更新する
ラズパイ側で以下を実行します。
sudo apt update
sudo apt full-upgrade -y
sudo reboot
再起動したら、Macなどからもう一度 SSH で入り直します。
ssh admin_n8n@n8npi.local
2. Docker 用の古い設定を消す
前回の残骸があると邪魔なので、先に掃除します。
sudo rm -f /etc/apt/sources.list.d/docker.list
sudo rm -f /etc/apt/sources.list.d/docker.sources
sudo apt update
3. Docker の準備
以下を上から順に実行します。
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
4. Docker のリポジトリを追加する
以下を実行して、Docker 用のリポジトリ設定を追加します。
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: trixie
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
5. Docker をインストールする
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
6. Docker が動くか確認する
sudo docker run hello-world
Hello from Docker! が出れば成功です。
7. 自分のユーザーで docker を使えるようにする
毎回 sudo を付けるのは面倒なので、自分のユーザーを docker グループに追加します。
sudo usermod -aG docker $USER
newgrp docker
確認:
docker run hello-world
ここでも Hello from Docker! が出ればOKです。
8. n8n 用フォルダを作る
mkdir -p ~/n8n
cd ~/n8n
mkdir -p n8n_data
9. docker-compose.yml を作る
まずファイルを作成します。
nano docker-compose.yml
開いたら、以下をそのまま貼り付けます。
services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- TZ=Asia/Tokyo
- N8N_HOST=0.0.0.0
- N8N_PORT=5678
- N8N_PROTOCOL=http
- N8N_SECURE_COOKIE=false
volumes:
- ./n8n_data:/home/node/.n8n
保存方法は以下です。
• Ctrl + O
• Enter
• Ctrl + X
10. n8n を起動する
docker compose up -d
確認:
docker compose ps
docker compose logs --tail=50
11. ラズパイのIPアドレスを確認する
hostname -I
たとえば 192.168.1.26 が出たら、Mac のブラウザで以下を開きます。
http://192.168.1.26:5678
n8n の初期画面が出れば成功です。
番外編: ラズベリーパイを再起動したら自動で Docker を起動させる方法
結論から言うと、できます。しかも今回の構成だと、かなり既にできています。
docker-compose.yml に以下が入っています。
restart: unless-stopped
これがあるので、Dockerサービス自体が起動すれば、n8nコンテナも自動で再起動します。
つまり必要なのは次の2段階です。
1. ラズパイ起動時に Docker が自動起動すること
2. Docker 起動後に n8n コンテナが自動復帰すること
このうち 2 はすでに restart: unless-stopped で対応済み です。
なので今確認すべきは、Docker サービスが自動起動設定になっているか です。
Docker の自動起動設定を確認する
SSH でラズパイに入って、以下を実行します。
sudo systemctl is-enabled docker
結果の見方
- enabled → OK
- disabled → 自動起動していない
Docker の自動起動を有効化する
もし disabled なら、以下を実行します。
sudo systemctl enable docker
sudo systemctl start docker
念のため状態確認する
sudo systemctl status docker --no-pager
active (running) ならOKです。
実際に再起動して確認する
sudo reboot
ラズパイ再起動後、少し待ってから Mac で以下にアクセスします。
http://192.168.1.26:5678
または SSH で入って確認します。
docker ps
n8n コンテナが Up になっていれば成功です。
補足
今の構成なら、毎回 docker compose up -d を手で打つ必要はありません。
一度コンテナを作って restart: unless-stopped にしておけば、Docker が起動した時に自動で戻ってきます。
ただし、過去に自分で以下を実行した場合は別です。
docker compose down
down は単なる停止ではなく、コンテナ自体を削除する動作です。
この場合は再度、以下の実行が必要です。
docker compose up -d
まとめ
Raspberry Pi OS Lite (64-bit) を使えば、Raspberry Pi 上で n8n をシンプルに動かせます。
Docker と docker compose を使えば、構成も分かりやすく、再起動時の自動復帰も簡単です。
特に再起動後の自動復帰については、以下だけ確認しておけばかなり安心です。
sudo systemctl is-enabled docker
enabled ならOKです。
Qiita向けとしては、次にやるなら `タグ候補` と `冒頭の一文` も付けた版にすると公開しやすいです。