【Tool】n8n インストール手順 (セルフホスティング版)

Other
スポンサーリンク

今回は、ワークフロー自動化ツールの一種であるn8nのセルフホスティング版をUbuntu Server 22.04上に構築していきたいと思います。

n8nとは

n8nはワークフローの自動化ツールの一種で、Webサービス同士をつなぎ、便利にするようなサービスです。
例えば、毎朝Slackに天気予報を通知したり、特定のブログが更新されたらSlackに通知を送るなど様々なサービス同士を連携させることができます。
一般的に知られているサービスとしてはIFTTTなどがあります。
n8nはIFTTTのオープンソース版となるため、基本的にはフリーで使うことができます。

前提条件

本環境で使用する環境は以下の通りです。

  • CPU : 2vCPU
  • MEM : 4GB
  • DISK : 60GB
  • OS : Ubuntu Server 22.04

n8nはDocker版もありますが、今回はnode.js版を使用して勧めていきます。

node.jsのインストール

Ubuntu Serverに対し、node.jsをインストールしていきます。
この時点での注意点は、Ubuntu 22.04の標準レポジトリに登録されているnode.jsはv12.22台のため、node.jsのサポートが終了しています。
また、n8nではv16 or v18あたりが推奨になってくるため、何も設定せずにaptを行うと古いバージョンが入ってしまい、n8nの起動に失敗します。

willserver@dev-n8n:~$ sudo n8n
Your Node.js version (12.22.9) is currently not supported by n8n.
Please use Node.js v16 (recommended), or v18 instead!

Ubuntu Serverに新しいバージョンのnode.jsをインストールするには、以下のコマンドを実行してnode.jsのレポジトリに追加してからインストールを行います。

willserver@dev-n8n:~$ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

## Installing the NodeSource Node.js 18.x repo...


## Populating apt-get cache...

+ apt-get update
Hit:1 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:3 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease [108 kB]
Get:4 http://jp.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Fetched 337 kB in 3s (98.3 kB/s)
Reading package lists... Done

## Confirming "jammy" is supported...

+ curl -sLf -o /dev/null 'https://deb.nodesource.com/node_18.x/dists/jammy/Release'

## Adding the NodeSource signing key to your keyring...

+ curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | tee /usr/share/keyrings/nodesource.gpg >/dev/null

## Creating apt sources list file for the NodeSource Node.js 18.x repo...

+ echo 'deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x jammy main' > /etc/apt/sources.list.d/nodesource.list
+ echo 'deb-src [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x jammy main' >> /etc/apt/sources.list.d/nodesource.list

## Running `apt-get update` for you...

+ apt-get update
Get:1 https://deb.nodesource.com/node_18.x jammy InRelease [4,563 B]
Get:2 https://deb.nodesource.com/node_18.x jammy/main amd64 Packages [776 B]
Hit:3 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
Get:4 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:5 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease [108 kB]
Get:6 http://jp.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Fetched 342 kB in 5s (69.2 kB/s)
Reading package lists... Done

## Run `sudo apt-get install -y nodejs` to install Node.js 18.x and npm
## You may also need development tools to build native addons:
     sudo apt-get install gcc g++ make
## To install the Yarn package manager, run:
     curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
     echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
     sudo apt-get update && sudo apt-get install yarn

レポジトリへの追加が完了したら、以下のコマンドを実行してnode.jsをインストールします。

willserver@dev-n8n:~$ sudo apt-get install -y nodejs

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  nodejs
0 upgraded, 1 newly installed, 0 to remove and 91 not upgraded.
Need to get 28.7 MB of archives.
After this operation, 187 MB of additional disk space will be used.
Get:1 https://deb.nodesource.com/node_18.x jammy/main amd64 nodejs amd64 18.16.0-deb-1nodesource1 [28.7 MB]
Fetched 28.7 MB in 3s (11.1 MB/s)
Selecting previously unselected package nodejs.
(Reading database ... 79016 files and directories currently installed.)
Preparing to unpack .../nodejs_18.16.0-deb-1nodesource1_amd64.deb ...
Unpacking nodejs (18.16.0-deb-1nodesource1) ...
Setting up nodejs (18.16.0-deb-1nodesource1) ...
Processing triggers for man-db (2.10.2-1) ...

インストール完了後、インストールされたnode.jsのバージョンを確認し、v16 or v18になっていることを確認します。

willserver@dev-n8n:~$ node -v
v18.16.0
willserver@dev-n8n:~$ npm -v
9.5.1

今回は、v18.16.0が入りました。
この方法でインストールを実行すると、npmも同時にインストールされます。
npmはnode.jsのパッケージマネージャーで、Ubuntu のAPTのJavaScript版のようなものになります。
n8nもnpmでインストールを行うため、npmが必要になります。

n8n インストール

node.jsのインストールが完了したら、npmを使用してn8nを構成していきます。
以下のコマンドを実行してn8nをインストールします。

willserver@dev-n8n:~$ sudo npm install n8n -g

npm WARN deprecated @npmcli/move-file@1.1.2: This functionality has been moved to @npmcli/fs
npm WARN deprecated lodash.isarray@4.0.0: This package is deprecated. Use Array.isArray.
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated @oclif/screen@3.0.4: Deprecated in favor of @oclif/core
npm WARN deprecated string-similarity@4.0.4: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated json-schema-ref-parser@9.0.9: Please switch to @apidevtools/json-schema-ref-parser
npm WARN deprecated formidable@1.2.6: Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau
npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.

added 1449 packages in 2m

160 packages are looking for funding
  run `npm fund` for details

いろいろとWARNは出てきますが、ERRORが出ていないため、とりあえずのインストールは完了したようです。
次に、n8nの構成を行っていきます。
これもコマンド1つで完了です。

willserver@dev-n8n:~$ sudo npm install -g n8n@next

npm WARN deprecated @npmcli/move-file@1.1.2: This functionality has been moved to @npmcli/fs
npm WARN deprecated lodash.isarray@4.0.0: This package is deprecated. Use Array.isArray.
npm WARN deprecated @oclif/screen@3.0.4: Deprecated in favor of @oclif/core
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated string-similarity@4.0.4: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated json-schema-ref-parser@9.0.9: Please switch to @apidevtools/json-schema-ref-parser
npm WARN deprecated formidable@1.2.6: Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau
npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.

added 4 packages, and changed 1449 packages in 47s

160 packages are looking for funding
  run `npm fund` for details

インストール後の構成でもWARNが出ていますが、とりあえずERRORが出ていないので大丈夫だと思います。
ここまで来たら、n8nを起動していきます。

willserver@dev-n8n:~$ sudo n8n

UserSettings were generated and saved to: /root/.n8n/config
n8n ready on 0.0.0.0, port 5678
Migrations in progress, please do NOT stop the process.
Initializing n8n process
Migrations finished.
Version: 0.228.2

Editor is now accessible via:
http://localhost:5678/

Press "o" to open in Browser.

バックグラウンド起動をしていないので、コンソール上に残り続けてしまいますが、とりあえず起動したようです。

n8n 初期設定

n8nの起動時にURLが表示されているので、ブラウザよりアクセスしてみます。
表示上、localhostになっていますが、URLをサーバのFQDNやIPアドレスに変更することでアクセスができます。
URL : http://<n8nのサーバIP or FQDN>:5678

アカウントの作成
アカウントの作成

初回アクセス時にアカウントを作成画面が表示されるため、以下の設定を行います。

  • Email : 自身のメールアドレスを入力
  • First Name : 自身の名前を入力
  • Last Name : 自身の名字を入力
  • Password : 自身のパスワードを入力
  • Inform me about security vulnerabilities if they aries : □ (任意)

設定が完了したら、[Next]を押下します。

Customize n8n to you
Customize n8n to you

[Customize n8n to you]より、自身の環境に合わせた質問を選択します。
設定が完了したら、[Get started]を押下します。

n8nトップ画面
n8nトップ画面

すべての設定が完了したら、n8nのトップページが表示されます。
以上でn8nのインストールが完了です。

まとめ

今回はワークフロー自動化ツールであるn8nをUbuntu Server 22.04上にインストールしました。
インストールまで行ったものの、ローカル環境のみで使用する分にはこの環境で良いのですが、外部からアクセスできるようにするには、もう少し設定が必要だと思いました。
運用の部分に関しては自宅で運用するとなると電気代も手間もかかるので、本当はホスティングサービスを使用したほうが手間という観点では良いと思います。
しかし、最近のサービスの傾向的に初めのうちは無料で使用できて、どこかのタイミングで有料プランを設けて無料プランに制限をかけるといったビジネスモデルを採用することが多いため、できる部分があるのであれば、OSSを使用して自宅環境に構築しておきたいような気もします。

おまけ

本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
willserverのnoteも開設したのでフォローお願いします。

コメント

タイトルとURLをコピーしました