n8n はノードを線でつないでワークフローを組み立てるオープンソースの自動化ツールです。SaaS 版も提供されていますが、自前のサーバーに導入すればデータを手元に置いたまま無制限に実行でき、ランニングコストも抑えられます。
この記事では、Ubuntu 26.04 Server の minimal 構成に対して、Docker を使わず npm から n8n を導入する手順を解説します。Node.js のセットアップから systemd による常駐化、起動確認までを一通りカバーします。
minimal 構成は GUI を持たない CLI 環境のため、作業はすべて SSH 接続またはコンソールからのコマンド操作で進めます。
前提条件
作業を始める前に、以下の環境が整っていることを確認してください。
- Ubuntu 26.04 Server (minimal) がインストール済みであること
sudo権限を持つユーザーでログインできること- サーバーがインターネットに接続されていること
- メモリは最低 1GB、推奨 2GB 以上
本記事では一般ユーザー名を ubuntu、n8n の動作用ポートを 5678(既定値)として説明します。環境に合わせて適宜読み替えてください。
1. システムを最新化する
まずパッケージインデックスを更新し、インストール済みのパッケージを最新の状態にします。
sudo apt update
sudo apt upgrade -y

minimal 構成では基本的なコマンドが入っていないことがあるため、後の手順で使うツールもこの段階で入れておきます。
sudo apt install -y curl ca-certificates gnupg build-essential
build-essential は、n8n が依存する一部のネイティブモジュールをビルドする際に必要になります。

2. Node.js をインストールする
n8n は Node.js 上で動作します。Ubuntu の標準リポジトリに含まれる Node.js はバージョンが古いことがあるため、NodeSource が提供するリポジトリを使って LTS 版を導入します。
n8n が対応している Node.js のバージョンは時期によって変わります。導入前に n8n の公式ドキュメント で対応バージョンを確認しておくと安全です。本記事では LTS 版(記事執筆時点で対応している系統)を使います。
NodeSource のセットアップスクリプトを取得して実行します。
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo bash -

続いて Node.js をインストールします。npm も同時に入ります。
sudo apt install -y nodejs

インストールが終わったら、バージョンを確認します。
node -v
npm -v
node と npm のバージョン番号が表示されれば成功です。

3. n8n 専用ユーザーを作成する
n8n をルート権限や個人ユーザーの権限で常時動かすのはセキュリティ上望ましくありません。専用のシステムユーザーを作り、その権限で動作させます。
sudo useradd --system --create-home --shell /usr/sbin/nologin n8n

このユーザーはログインできないシステム専用ユーザーとして作成されます。ホームディレクトリは /home/n8n になり、n8n の設定ファイルや認証情報がここに保存されます。
id n8n

上記のコマンドでユーザが登録されているか確認できます
n8n をインストールする前に:Takumi Guard を導入する
n8n を npm でインストールすると、本体だけでなく多数の依存パッケージが芋づる式に取得されます。npm エコシステムでは、タイポスクワッティング(正規パッケージに似せた名前で公開する手口)や、アカウント乗っ取りによる正規パッケージへの不正コード注入といったサプライチェーン攻撃が年々増えています。インストールするパッケージ数が多いほど、こうした悪性パッケージを踏むリスクも高まります。
そこで、n8n を入れる前に Takumi Guard を導入しておきます。Takumi Guard は GMO Flatt Security が提供する、npm のサプライチェーンセキュリティを強化するレジストリプロキシです。開発環境と公開 npm レジストリの間にプロキシとして入り、npm install のたびに各パッケージをブロックリストと照合して、既知の悪性パッケージを tarball のダウンロード前に拒否します。
システム全体に適用したい場合は、以下のコマンドで設定が可能です
npm config set registry https://npm.flatt.tech
設定が反映されたか確認します。
npm config list
https://npm.flatt.tech/ と表示されれば、以降の npm install はすべて Takumi Guard を経由します。

なお、メールアドレスを登録するとダウンロード追跡や感染可能性の通知(過去にインストールしたパッケージに後からアドバイザリが出た際の通知)も利用できます。ブロック機能のみであれば登録なしで使えます。
5. n8n をインストールする
npm を使って n8n をグローバルにインストールします。
sudo npm install -g n8n


インストールには数分かかることがあります。ネイティブモジュールのビルドが走るため、ここで build-essential が役立ちます。
完了したら、コマンドが認識されるか確認します。
n8n --version
バージョン番号が表示されれば、n8n 本体のインストールは完了です。

6. 動作確認(手動起動)
systemd に登録する前に、一度手動で起動して正しく動くか確認します。専用ユーザーの権限で起動します。
sudo -u n8n -H n8n start
-H はユーザーのホームディレクトリを正しく参照させるためのオプションです。起動すると、待ち受けている URL がログに表示されます。
Editor is now accessible via:
http://localhost:5678/
minimal 構成のサーバーにはブラウザがないため、別の PC からアクセスして確認します。サーバーの IP アドレスを調べるには次のコマンドを使います。
ip a
表示された IP アドレスを使い、手元の PC のブラウザから http://<サーバーのIPアドレス>:5678/ を開きます。初回アクセス時はアカウント作成画面が表示されます。

ファイアウォール(後述)やネットワークの設定によってはアクセスできないことがあります。その場合は手順 7 のファイアウォール設定を先に済ませてください。
動作を確認できたら、ターミナルで Ctrl + C を押して n8n をいったん停止します。
エラーが表示される
以下のエラーが表示される場合があります。これは、HTTPの非暗号化通信での接続のときに表示されます(n8nは、Secure Cookieを要求しておりHTTP通信ではSecure Cookieが送信されないため)
これを解消するにはHTTPSの暗号化通信にすることで解消されます

ただし、ローカル環境でしか使わないのであれば、以下のコマンドで一時的に
sudo -u n8n -H N8N_SECURE_COOKIE=false n8n start
7. systemd サービスとして常駐化する
手動起動のままだと、SSH を切断したりサーバーを再起動したりすると n8n が止まってしまいます。systemd に登録して、バックグラウンドで常時稼働し、再起動後も自動で立ち上がるようにします。
サービス定義ファイルを作成します。
sudo nano /etc/systemd/system/n8n.service
エディタが開いたら、以下の内容を貼り付けます。
[Unit]
Description=n8n workflow automation
After=network.target
[Service]
Type=simple
User=n8n
Environment=N8N_HOST=0.0.0.0
Environment=N8N_PORT=5678
Environment=N8N_PROTOCOL=http
Environment=NODE_ENV=production
ExecStart=/usr/bin/n8n start
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
ExecStart のパスは環境によって異なる場合があります。次のコマンドで実際のパスを確認し、必要なら書き換えてください。
which n8n
保存してエディタを閉じます(nano の場合は Ctrl + O → Enter → Ctrl + X)。
設定を反映し、サービスを有効化して起動します。
sudo systemctl daemon-reload
sudo systemctl enable n8n
sudo systemctl start n8n
状態を確認します。
sudo systemctl status n8n
active (running) と表示されていれば、常駐化に成功しています。
ログをリアルタイムで確認したい場合は次のコマンドを使います。
sudo journalctl -u n8n -f
8. ファイアウォールの設定
外部からアクセスできるようにするため、使用するポートを開放します。Ubuntu では ufw が標準で利用できます。
sudo ufw allow 22/tcp
sudo ufw allow 5678/tcp
sudo ufw enable
最初に SSH のポートを開けておかないと、ufw 有効化後に SSH 接続ごと締め出されてしまうため、OpenSSH の許可を忘れないようにしてください。
設定状況を確認します。
sudo ufw status
なお、5678 ポートを直接インターネットに公開するのはセキュリティ上推奨されません。本番運用ではこのポートを外部に開けず、次の手順のリバースプロキシ経由でアクセスするのが安全です。検証目的であればこのまま進めてかまいません。
9. (任意)リバースプロキシと HTTPS
本番運用を想定する場合は、Nginx などのリバースプロキシを前段に置き、ドメイン経由の HTTPS 接続にすることを推奨します。これにより通信が暗号化され、ポート番号を意識せずにアクセスできるようになります。
Nginx をインストールします。
sudo apt install -y nginx
サイト設定ファイルを作成します。
sudo nano /etc/nginx/sites-available/n8n
以下を貼り付け、n8n.example.com を自分のドメインに置き換えます。
server {
listen 80;
server_name n8n.example.com;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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-Proto $scheme;
}
}
Upgrade と Connection のヘッダーは、n8n が使う WebSocket 通信を通すために必要です。
設定を有効化して Nginx を再読み込みします。
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
nginx -t で構文エラーがないことを確認してから reload してください。
続いて Let’s Encrypt で証明書を取得し、HTTPS 化します。
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d n8n.example.com
対話形式でメールアドレスの入力などを求められます。完了すると Nginx の設定が自動で書き換えられ、HTTPS でアクセスできるようになります。
HTTPS 化したあとは、n8n 側にも正しい URL を伝える必要があります。systemd のサービスファイルを編集し、環境変数を追加します。
Environment=N8N_PROTOCOL=https
Environment=N8N_HOST=n8n.example.com
Environment=WEBHOOK_URL=https://n8n.example.com/
編集後はサービスを再起動します。
sudo systemctl daemon-reload
sudo systemctl restart n8n
最後に、ufw で開けていた 5678 ポートは外部公開が不要になるため閉じておきます。
sudo ufw delete allow 5678/tcp
sudo ufw allow 'Nginx Full'
10. アップデートとメンテナンス
n8n は更新が頻繁です。新しいバージョンに上げるには、サービスを止めてから npm で更新し、再度起動します。
sudo systemctl stop n8n
sudo npm update -g n8n
sudo systemctl start n8n
アップデート前には、設定や認証情報が保存されている /home/n8n/.n8n ディレクトリをバックアップしておくと安心です。
sudo cp -r /home/n8n/.n8n /home/n8n/.n8n.backup
まとめ
Ubuntu 26.04 Server (minimal) への n8n 導入手順を、Node.js のセットアップから systemd による常駐化、HTTPS 化まで解説しました。
Docker を使わない npm 構成は、システムの仕組みが見えやすく、リソースの消費も抑えられるのが利点です。一方で Node.js のバージョン管理やアップデートは自分で面倒を見る必要があります。長期運用ではこの点を意識しておくとよいでしょう。
導入後はワークフローのバックアップ体制を整え、定期的なアップデートを習慣にしておくことをおすすめします。

コメント