0
0

Docker を使わずに n8n を Amazon Lightsail にセルフホストする

Posted at

はじめに

オープンソースのワークフロー自動化ツールである n8n を Amazon Lightsail にセルフホストする機会がありましたのでご紹介します。

Dockerは使わずに

公式ドキュメントでは Docker を使用してセルフホストする方法が紹介されていますが、今回は Docker を使わずに行いました。

セットアップ

Amazon Lightsail のインスタンス作成

Amazon Lightsail のコンソールで、LightSailの新規インスタンスを以下のスペックで作成します。

  • Node.js
  • 4GB以上のMemory

メモリは4GB以上でないとメモリ不足で正常に動作しない可能性があります。

Lightsailセットアップ

作成したインスタンスのコンソール画面から、SSHでログインします。

ProxyPassの設定

以下のファイルに下記のとおり追記します。

/opt/bitnami/apache2/conf/httpd.conf
# 末尾に以下を追加
ProxyPass / http://localhost:5678/
ProxyPassReverse / http://localhost:5678/

apacheを再起動します

sudo /opt/bitnami/ctlscript.sh restart apache

n8n インストール

以下のディレクトリに移動します

cd /opt/bitnami/apache2/htdocs/

n8nをインストールします

sudo npm install n8n -g

pm2 インストール

sudo npm install pm2 -g

pm2 で n8n を永続化します

$ pm2 start n8n --name "n8n"
$ pm2 save
$ pm2 startup

IPアドレスを固定化する

Lightsailのインスタンスは起動のたびにIPアドレスが変わってしまうため、固定化します。

  • LightSail管理画面のNetworkingを開く
  • Attach Static IP をクリック
  • 適当な名前(Staticip-1とかのデフォルト名でもOK)で作成する
  • IPアドレスが固定される

ここまで完了すると、表示されたIPアドレスをブラウザに入力するとn8nのホーム画面が表示されると思います。

追加の設定

ドメイン設定とSSL化

今回はAWSの Route53 を使用します。
以下を参考にしてください。

WEBソケットの設定

n8nはWEBソケットを使ってブラウザとサーバで双方向通信をします。
この設定をしなくてもn8nは動作しますが、ブラウザ上の見た目や表示を正常にしたい場合は以下の設定を行います。

bitnami-ssl.conf を編集する

<VirtualHost _default_:443> の内容を以下のように書き換えます。

/opt/bitnami/apache2/conf/bitnami/bitnami-ssl.conf
 <VirtualHost _default_:443>
     DocumentRoot "/opt/bitnami/apache/htdocs"
     SSLEngine on
     SSLCertificateFile "/opt/bitnami/apache/conf/n8n-selfhost-8gb.nakamura.trial-sandbox.com.crt"
     SSLCertificateKeyFile "/opt/bitnami/apache/conf/n8n-selfhost-8gb.nakamura.trial-sandbox.com.key"
 
     # BEGIN: Configuration for letsencrypt
     Include "/opt/bitnami/apps/letsencrypt/conf/httpd-prefix.conf"
     # END: Configuration for letsencrypt
 
     # BEGIN: Support domain renewal when using mod_proxy without Location
     <IfModule mod_proxy.c>
     ProxyPass /.well-known !
     </IfModule>
     # END: Support domain renewal when using mod_proxy without Location
 
     <Directory "/opt/bitnami/apache/htdocs">
         Options Indexes FollowSymLinks
         AllowOverride All
         Require all granted
     </Directory>
 
     # Error Documents
     ErrorDocument 503 /503.html
 
     # BEGIN: Support domain renewal when using mod_proxy within Location
     <Location /.well-known>
         <IfModule mod_proxy.c>
         ProxyPass !
         </IfModule>
     </Location>
     # END: Support domain renewal when using mod_proxy within Location
 
     # WebSocket Setting
     RewriteEngine On
     RewriteCond %{HTTP:Upgrade} =websocket [NC]
     RewriteRule /(.*) ws://localhost:5678/$1 [P,L]
 
     # HTTP Request Setting
     ProxyPass / http://localhost:5678/
     ProxyPassReverse / http://localhost:5678/
 
     ErrorLog /opt/bitnami/apache2/logs/error_log
     CustomLog /opt/bitnami/apache2/logs/access_log combined
 </VirtualHost>

保存して、Apacheを再起動します。

sudo /opt/bitnami/ctlscript.sh restart apache

まとめ

以上、Docker を使わずに n8n を Amazon Lightsail にセルフホストする方法をまとめました。
参考になりましたら幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0