2.x 系となっており CVE-2025-6861 の影響は受けないバージョンとなっております。
初めに #
n8n は、業務自動化やワークフロー構築を柔軟に実現できる強力なオープンソースツールです。
近年では、LLMと外部ツールを繋ぐAIエージェントの実装基盤として注目を集めています。
公式が提供するクラウド版 n8n は、環境構築の手間が不要で手軽に利用できる一方、サブスクリプション費用が発生します。
そのため、学習目的での利用や個人開発、小規模な検証用途においては、コスト面で導入のハードルが高いのが現状です。
一方、セルフホスト版 n8n であれば、サーバーの用意は必要となるものの、ソフトウェア自体は無償で利用でき、実行回数やワークフロー数に制限はありません。
また、社内ネットワーク内でのクローズドな運用が可能なことから、社内システム連携や内部業務向けツールとして、クラウドサービスを利用しにくい環境にも適しています。
本記事では、AlmaLinux 10 環境で Node.js(npm)を用いて n8n をインストールし、systemd による自動起動と Nginx を使った HTTPS 対応のセルフホスト構成を解説します。
n8nとは? #
n8n は業務プロセスや各種サービス連携を視覚的に構築できるオープンソースのワークフロー自動化ツールです。
ノーコードやローコードで扱うことができプログラミングの専門知識がない初心者でも、API 連携や定型処理の自動化を実現する事ができます。
近年では、LLM と外部ツールを組み合わせたAIエージェントの実装基盤としても活用が進んでおり注目を集めています。
n8n はセルフホストに対応しており、オンプレミス環境や社内ネットワーク内に閉じた構成で運用することが可能です。
n8nのインストール形式 #
セルフホスト版 n8n のインストール方法としては、主に以下の2通りが存在します。
Dockerを利用する方法Node.jsのnpmを用いてインストールする方法
Docker を利用する方法は、環境差異を吸収しやすく複数環境への展開や将来的なスケールを見据えた構成に適しています。
一方で、Node.js を用いたインストール方法では、通常の Linux アプリケーションとして扱うことができます。
そのため、シンプルな構成で安定した運用を行いたい場合や、Linux の基本的な運用に沿って管理したいケースなどに適しています。
本記事では、後者である Node.js の npm を利用したインストール方法を解説します。
Node.jsの導入 #
要件と事前確認 #
n8n は Node.js 上で動作するアプリケーションとなっており、バージョン要件は以下の通りとなります。
- Node.js 20.19 以上
- Node.js 24.x 系まで対応
初めに以下のコマンドを実行し AlmaLinux 標準リポジトリで提供されている Node.js のバージョンを確認してください。
dnf info nodejs |fgrep "Version"
このコマンドにより、インストール可能な Node.js のバージョンが表示されます。
AlmaLinux 10環境では、以下のバージョンが提供されておりました。
Version : 22.19.0
そのため、標準リポジトリの Node.js をそのまま利用することが可能となっております。
一方で、環境によっては要件を満たさないバージョンしか利用できない場合も考えられます。
そのような場合は、外部リポジトリを有効化してインストールする、あるいは独自に Node.js を導入する といった回避策を検討する必要があります。
インストール #
次に以下のコマンドを実行しインストールを進めてください。
dnf install nodejs
実行すると、以下のようにインストールパッケージの確認画面が表示されます。
dnf install nodejs
Last metadata expiration check: 2:10:47 ago on Tue 23 Dec 2025 02:18:31 PM JST.
Dependencies resolved.
============================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================
Installing:
nodejs x86_64 1:22.19.0-2.el10_0 appstream 50 k
Installing dependencies:
libuv x86_64 1:1.51.0-1.el10_0 appstream 262 k
nodejs-libs x86_64 1:22.19.0-2.el10_0 appstream 20 M
Installing weak dependencies:
nodejs-docs noarch 1:22.19.0-2.el10_0 appstream 8.9 M
nodejs-full-i18n x86_64 1:22.19.0-2.el10_0 appstream 8.6 M
nodejs-npm x86_64 1:10.9.3-1.22.19.0.2.el10_0 appstream 2.0 M
Transaction Summary
============================================================================================================================================
Install 6 Packages
Total download size: 40 M
Installed size: 215 M
Is this ok [y/N]:
内容を確認し問題なければ y を入力してインストールを進めてください。
インストールが完了すると、次のメッセージが表示されます。
Complete!
以下のコマンドを実行することで、バージョンを確認することができます。
node -v
npm -v
以上で Node.js の導入は完了となります。
n8nの導入 #
Node.js のインストールが完了したら、次に npm を利用して n8n を導入します。
n8n は npm パッケージとして提供されているため、特別なビルド作業は不要となります。
以下のコマンドを実行しインストールを進めてください。
npm install -g n8n
インストールが完了すると、次のメッセージが表示されます。
added 1815 packages in 4m
241 packages are looking for funding
run `npm fund` for details
今回は約4分程度でインストールが完了しました。
表示される所要時間やパッケージ数は、サーバーの性能やネットワーク環境により前後する場合がございます。
正しくインストールされていることを確認するため、以下のコマンドを実行してください。
n8n --version
以下のように n8n のバージョン情報が表示されれば、インストールは正常に完了しています。
2.1.2
インストールされた n8n の実行コマンドおよび本体ファイルは、以下のシステム領域に配置されています。
/
├─ usr/
│ └─ local/
│ ├─ bin/
│ │ └─ n8n ← 実行コマンド
│ │
│ └─ lib/
│ └─ node_modules/
│ └─ n8n/ ← システム本体
専用ユーザーの作成 #
今回はセキュリティおよび運用管理の観点から管理者(root)ではなく専用ユーザーを作成し実行する構成とします。
n8n は実行ユーザーのホームディレクトリ配下に設定やワークフローなどのデータを保存するため、ホームディレクトリは必要となります。
一方で SSH 接続は不要なため、ログインシェルは無効化します。
以下のコマンドを実行し、n8n ユーザーを作成してください。
useradd -r -m -s /sbin/nologin n8n
この設定により、n8n は ログイン不可のサービス実行専用ユーザーとして、安全に運用することができます。
systemdサービスファイルの作成 #
次に n8n をサーバー起動時に自動で立ち上げるため、systemd のサービスファイル作成を進めていきます。
初めに認証情報(API キーやトークン等)を安全に保存するための暗号化鍵を作成します。
以下のコマンドを実行しランダムな文字列を生成してください。
head -c 32 /dev/urandom | base64
今回は以下の結果となりました。
この文字列は後ほどサービスファイルを作成する際に利用します。
ifxoq28NxSHi6eMuhiolGihIfo/ASk2ULLl+eKzZxrc=
次に以下のコマンドを実行し、ファイルを作成してください。
vi /etc/systemd/system/n8n.service
エディタが開いたら、以下の内容をファイルに書き込んで保存してください。
[Unit]
Description=n8n Workflow Automation
After=network.target
[Service]
Type=simple
User=n8n
Group=n8n
ExecStart=/usr/local/bin/n8n
Restart=always
RestartSec=10
Environment="HOME=/home/n8n"
Environment=NODE_ENV=production
Environment=WEBHOOK_URL=https://<サーバーのIPアドレス>/
Environment=N8N_PROTOCOL=https
Environment=N8N_PORT=5678
Environment=N8N_PROXY_HOPS=1
Environment=N8N_ENCRYPTION_KEY=<先ほど生成した暗号化鍵>
[Install]
WantedBy=multi-user.target
それぞれの設定内容は以下の通りとなります。
| 設定項目 | 説明 |
|---|---|
Type=simple |
ExecStart のコマンドをそのまま起動するように指定 |
User=n8n |
n8n 専用ユーザーで実行 |
Group=n8n |
実行グループを n8n に指定 |
ExecStart=/usr/local/bin/n8n |
n8n の実行コマンド |
Restart=always |
終了時に自動再起動 |
RestartSec=10 |
再起動までの待機時間 |
"HOME=/home/n8n" |
ホームディレクトリを指定 |
NODE_ENV=production |
本番モードで実行 |
WEBHOOK_URL=https://<サーバーのIPアドレス>/ |
Webhook の公開 URL を指定 |
N8N_PROTOCOL=https |
n8n が HTTPS 環境で動作していることを明示 |
N8N_PORT=5678 |
n8n が 5678 ポートで動作していることを明示 |
N8N_PROXY_HOPS=1 |
リバースプロキシ(Nginx)を 1 段挟んでいることを指定 |
N8N_ENCRYPTION_KEY=<先ほど生成した暗号化鍵> |
データベース内の認証情報を暗号化するために使用する暗号化文字列を指定 |
以上で systemd サービスの登録は完了となります。
n8n単体では利用できない理由 #
n8n は、ログインセッションの安全性を高めるために Secure Cookie を使用しています。
そのため、原則として SSL(HTTPS)通信が必須となります。
SSL が有効化されていない状態でアクセスした場合、以下のような警告画面が表示されます。
この問題への対策として本構成では、 Nginx をリバースプロキシとして利用し、HTTPS 接続を行います。
Nginxの導入 #
インストール #
以下のコマンドを実行し、Nginx をインストールしてください。
dnf install nginx
以下のコマンドを実行することで、パッケージの導入有無を確認することができます。
rpm -qa |grep "nginx"
nginx-filesystem-1.26.3-1.el10.noarch
nginx-core-1.26.3-1.el10.x86_64
nginx-1.26.3-1.el10.x86_64
自己証明書の作成 #
今回は動作確認および検証用途を想定し、自己署名証明書を使用します。
本番環境で運用する場合は、Let's Encrypt や各種認証局が発行する正式な SSL 証明書を利用してください。
初めに証明書を配置するディレクトリを作成してください。
mkdir -p /etc/nginx/ssl
次に以下のコマンドを実行し、証明書の作成を進めてください。
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/n8n.key -out /etc/nginx/ssl/n8n.crt
コマンドを実行すると対話形式での作成が始まります。
以下の内容を入力し作成を進めてください。
| 項目 | 内容 | 今回の入力 |
|---|---|---|
| Country Name (2 letter code) | 国コード(ISO 3166-1) | 未入力 |
| State or Province Name | 都道府県・州名 | 未入力 |
| Locality Name | 市区町村名 | 未入力 |
| Organization Name | 組織名 | 未入力 |
| Organizational Unit Name | 部署名 | 未入力 |
| Common Name (CN) | ホスト名または IP アドレス | サーバーの IP アドレス |
| Email Address | 管理者メールアドレス | 未入力 |
作成が完了すると、証明書および秘密鍵が /etc/nginx/ssl 配下に作成されます。
$ ls -al /etc/nginx/ssl
total 12
drwxr-xr-x. 2 root root 36 Dec 23 19:28 .
drwxr-xr-x. 5 root root 4096 Dec 23 19:22 ..
-rw-r--r--. 1 root root 1302 Dec 23 19:28 n8n.crt
-rw-------. 1 root root 1708 Dec 23 19:23 n8n.key
リバースプロキシ設定 #
次に作成した自己署名証明書を使用し、Nginx をリバースプロキシとして設定します。
以下のコマンドを実行しファイルを作成してください
vi /etc/nginx/conf.d/n8n.conf
続いて、作成したファイルに以下の内容を記述してください。
server {
listen 443 ssl;
server_name _;
ssl_certificate /etc/nginx/ssl/n8n.crt;
ssl_certificate_key /etc/nginx/ssl/n8n.key;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 25m;
}
}
本構成ではホスト名を使用しないため、server_name には _ を指定し、すべてのホスト名および IP アドレスにマッチする設定としています。
最後にシンタックスチェックを実行し記述した構文に問題がないことを確認してください。
nginx -t
SELinux有効時の注意点 #
AlmaLinux では、デフォルトで SELinux が有効になっています。
その場合、Nginx が n8n に接続する際に SELinux により通信がブロックされ以下のようなエラーが発生します。
502 Bad Gateway
この問題を解消するため以下のコマンドを実行しネットワーク接続を許可してください。
setsebool -P httpd_can_network_connect 1
なお、SELinux が 無効な環境では本設定は不要となりますのでスキップしてください。
ファイアウォールの設定 #
本構成では、n8n は Nginx の背後で動作し、外部からのアクセスは HTTPS(TCP ポート 443)経由で行います。
そのため、n8n が内部で使用する TCP ポート 5678 を外部に公開する必要はありません。
なお、本手順はサーバーのファイアウォール管理ツールとして firewalld が稼働している環境を前提としています。
利用環境に合わせて手順を調整し進めてください。
firewalld を利用している場合は以下のコマンドを実行し 443 ポートを解放してください。
firewall-cmd --add-service=https --permanent
実行結果が success と表示されれば成功となります。
変更した設定を反映させるため以下のコマンドを実行しリロードを行ってください。
firewall-cmd --reload
こちらも実行結果が success と表示されれば成功となります。
以上でファイアウォールの設定は完了となります。
サービスの起動 #
各種設定が完了したら、n8n と Nginx を起動する事ができます。
以下のコマンドを順に実行しそれぞれのサービスの起動と自動起動を有効化してください。
systemctl enable --now n8n
systemctl enable --now nginx
次に以下のコマンドを順に実行し、サービスの起動確認を行ってください。
systemctl is-active n8n
systemctl is-active nginx
いずれも以下のように表示されれば、サービスが正常に稼働しています。
active
failed となっている場合は、設定ファイルの記述ミスや環境変数の不足などが考えられます。
管理画面へアクセス #
すべての設定が完了したら、ブラウザから n8n の管理画面へアクセスを行なってください。
https://<サーバーのIPアドレス>/
アクセスを行うと以下のように初期セットアップ画面が表示されます。
以下の項目を入力して、管理者アカウントを作成してください。
なおパスワードは8文字以上とし数字1文字以上、大文字1文字以上を含める必要があります。
| 項目 | 入力内容 |
|---|---|
| ログインに使用するメールアドレス | |
| First Name | 名前 |
| Last Name | 苗字 |
| Password | パスワード |
管理者アカウントの作成が完了し、初めてログインすると、利用状況に関するアンケートが表示されます。
これらはすべて任意となっており空白で提出する事ができます。
次に機能アンロックのためのメールアドレス登録画面が表示されます。
これらも必須ではなく、画面下部にある 「Skip」を選択する事で登録せずに利用を開始することが可能です。
すべてのステップが完了すると 以下のように n8n のメイン画面であるダッシュボードが表示されます。
以上で構築は完了となります。