見出し画像

n8nのセルフホスティングをAWS上で行う(ゼロから構築編)

マーケットプレイス利用料を節約するべくゼロから構築してみます。

基本的にはn8nのドキュメントを参考に進めていきます。


構築方針について

公式ドキュメントには様々な手法が記載されていますが、今回はDockerのみを利用して構築します。

  • npmでの構築

    • npmなんもわからん

  • Docker Composeでの構築

    • スケールする見込みが限りなく低い

    • いざとなったらEC2インスタンス作り直せばよい

    • 散々やったがよくわからなかった

  • AWS EKS

    • EC2と比較して価格が高そう

    • EKSのメリットとしてスケーリングしやすいとあるので、上記にある通りスケールする見込みが限りなく低い分Too muchと判断

  • DBは標準のものを利用

    • PostgreSQLも使えるらしいがそこまで拡張性は必要ない

インスタンスの起動

スペックなどはマーケットプレイスのAMIで構築したインスタンスを参考に設定していきます。

ほぼデフォルトのままです

Dockerのインストール

インスタンスが起動したらSSH接続してDockerをインストールしていきます。
インストール方法は以下の記事を参考にコピペで完結したので楽ちんでした。

1. SSHで接続してパッケージのアップデート

sudo dnf update

2. Dockerインストール

sudo dnf install -y docker

3. Dockerデーモン起動

sudo systemctl start docker

4. sudoなしで実行できるように、ユーザーグループの追加

sudo gpasswd -a $(whoami) docker

5. 一度インスタンス再起動後Dockerデーモンの自動起動設定

sudo systemctl enable docker

n8nのインストールと起動

Dockerがインストール出来たらn8nをインストールします。
公式ドキュメントはローカルでインストールする想定ですが、コマンドだけつまんでいけば問題ないですね。

1. データ保管用のボリューム n8n_data を作成

docker volume create n8n_data

2. n8nを起動

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

N8N_SECURE_COOKIE はhttpで接続するために設定しています。
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS は指定しないと「To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.」と表示されるので指定しています。
GENERIC_TIMEZONE と TZ はタイムゾーンですね。

他にも初回起動時は「Permissions 0644 for n8n settings file /home/node/.n8n/config are too wide. Changing permissions to 0600..」と書かれていますが、これはただのお知らせなので無視してOK。

起動後はこのまま画面がログ表示モードになります

アカウント作成したりするとちょろっとログが見えるのですが、特に気にならない人はControl+P,Qで抜けてください。

n8nのバージョンアップと再起動

必要に応じて適宜アップデートと再起動を行えばOK。

いいなと思ったら応援しよう!