最近話題のn8nをEC2上にインストールしてセルフホストしてみました。
はじめに
n8nとは?
n8nはAIエージェントが構築できるノーコード/ローコードなワークフロー自動化ツールです。
ZapierやIFTTTのように「サービス同士をつなげる」事ができ、例えば次のようなワークフローがコーディング不要で構築できたりします。
-
Gmail で受信したメールを Slack に転送
-
Google Sheets に入力されたデータをトリガーに API を実行
-
定期的に外部サービスからデータを取得して保存
n8nを利用するには、2つの方法があります。
クラウド版n8n
1つはn8nのクラウド版を利用する方法です。
こちらは、n8nの公式サイトから利用登録すればすぐに使用可能です。
月額利用料金はかかりますが、非常に手軽にスタートすることができます。また、最初の2週間は無料でお試しで使うことができます。
セルフホスト版n8n
もう一つは今回紹介するセルフホストという方法です。
こちらは、自前で準備したインフラ環境にn8nをインストールする方法です。インフラ環境はAWSでもローカルのDockerでも何でも構いません。
インフラの運用コストはかかりますが、n8nの利用は無料。
またクラウド版ではエンタープライズ版以外では制限されているワークフロー数上限やワークフロー処理数上限が、セルフホスト版では存在せず無制限で利用できるという所も利点です。
ただし、実運用で使用する場合はインフラやn8n自体のメンテナンスコストが必要となるため、注意が必要です。
今回はエンジニアブログらしくセルフホスト版を試してみます。
今回のロードマップと下準備
今回実施すること
1. EC2インスタンスの準備
2. Dockerインストール
3. n8n のインストールと起動
4. ブラザからn8nにアクセス
準備するEC2インスタンス
・AMI:AlmaLinux 9
・セキュリティグループで 22番(SSH)と5678番(n8n Web UI)を開放
・インスタンスタイプは t3.microでもひとまずOK
・ストレージは 8GB程度あればOK
※AWS環境の準備については今回は割愛します。
Dockerインストール
Dockerのインストールはrootユーザで実施する必要があるため、ec2-userのsudoではなく、rootユーザに切り替えておきます。
[ec2-user@ip-xx.xx.xx.xx]# sudo su
最初に、Dockerリポジトリをインストールします。
[root@ip-xx.xx.xx.xx]# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Dockerをインストールします。
[root@ip-xx.xx.xx.xx]# dnf -y install docker-ce docker-ce-cli
インストールができたらDockerを起動し、ついでに自動起動を有効にしておきます。
[root@ip-xx.xx.xx.xx]# systemctl start docker
[root@ip-xx.xx.xx.xx]# systemctl enable docker
これでDocker環境が準備できました。
n8nのインストールと起動
公式ドキュメントを参考に、Dockerでn8nを立ち上げていきます。
公式ドキュメントはローカルPCでのインストールを想定しているようですが、AWS上でも問題ないはずなので、同様のインストール手順で行けるはずです。
インストールと起動
まずは、データ保管用ボリューム n8n_dataを作成します。
[root@ip-xx.xx.xx.xx]# docker volume create n8n_data
続いてn8nを起動します。
[root@ip-xx.xx.xx.xx]# docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e N8N_SECURE_COOKIE=false \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e GENERIC_TIMEZONE="Asia/Tokyo" \
-e TZ="Asia/Tokyo" \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
今回はお試し的な立ち上げのためお手軽にhttp接続をするため、N8N_SECURE_COOKIEはfalseで指定しておきます。
なお、初めての起動を想定しているため、dockerは -it --rm オプションで起動しています。こうしておくことで、n8nのプロセスがバックエンドに回らず、何かあればすぐに終わらせる事ができ、そして 終了時にコンテナが自動的に消えてくれます。
実行すると色々と表示された後、下記のような表示がでればOKです。
Version: 1.108.2
Editor is now accessible via:
http://localhost:5678
Press "o" to open in Browser.
ブラウザからn8nにアクセス
ブラウザにアクセスしてみましょう。
今回はローカル構築ではなく、AWS上で構築しているので
http://[AWS-ec2インスタンスのIP]:5678
こちらのURLでブラウザからアクセスします。
このような初期設定画面が表示されていればインストール成功です。
実際に利用していく場合には、dockerの起動オプションを -r にしてデタッチに回して永続化するなどの対応や、セキュアな設定などが必要ですが、今回はお試しなのでシンプルにしています。
ともかく、これで n8n の利用を開始することができます。
まとめ
n8nのセルフホスト版の立ち上げは、非エンジニアにとってはそれなりのハードルがありますが、EC2やdockerを扱うことができるITエンジニアにとっては、手軽にできるものです。
実運用となるとメンテナスコストが発生しますが、セルフホスト版は利用制限がなく、クラウド版ではエンタープライズ版に相当するワークフロー数・ワークフロー処理数を無料で使うことができます。
今回は、n8nをインストールするところまでですが、次回以降は実際に n8n のワークフロー作成に触れてみたいと思います。