n8nセルフホストとは、ワークフロー自動化ツールのn8nを、自社のPCやサーバーに入れて動かす使い方です。Dockerを使えば、コマンドを2つ打つだけで手元のPCで起動でき、ソフトウェアの利用料はかかりません。業務で使うなら、Docker Composeで構成をファイルに書き、VPSにドメインとSSLを設定して公開し、暗号化キーとバックアップを誰が管理するかを決めてから載せます。
この記事は、n8nの全体像を扱った記事のうち「セルフホストの始め方」の節を詳しく書いたものです。n8nが何をするツールかを先に知りたい方は、中心の記事から読むと流れがつかめます。
2026年9月時点の情報です。料金はn8nの料金ページ、手順はn8nの公式ドキュメント(n8n Docs)で最新の内容をご確認ください。
n8nセルフホストとは|クラウド版との違い
n8nには、n8nの会社がサーバーを運用するクラウド版と、自社で用意した環境に入れるセルフホストの2つの使い方があります。画面の操作やワークフローの作り方はどちらも同じで、違うのはサーバーを誰が持ち、更新や復旧を誰が担うかです。
セルフホストでは、n8nの本体、ワークフローの定義、実行の記録、外部サービスにつなぐための認証情報がすべて自社の環境に置かれます。データの置き場所を自社で決められる代わりに、止まったときに直すのも自社です。
セルフホストは無料で使えるか
セルフホストの無料版(Community Edition)は、ソフトウェアの利用料がかかりません。かかるのは、サーバー代と、更新やバックアップを担う人の手間です。手元のPCで試すだけなら、サーバー代もかかりません。
無料版で使えないのは、社内アカウントでのログイン(SSO)、Gitでのワークフローの版管理、本番と検証の環境を分ける機能など、組織で運用するための機能です。これらはセルフホスト向けの有償プラン(BusinessとEnterprise)に含まれます。
ライセンスの注意|社内の自動化は無料、再販売はできない
n8nは「Sustainable Use License」という独自の利用条件を採っています。ソースコードは公開されていますが、一般的なオープンソースとは条件が違います。
自社の業務を自動化するために使う範囲では、無料版をそのまま使えます。顧客のためにワークフローを作って保守する仕事を有償で請け負うことも認められています。一方で、n8nを自社のサービスとして顧客に提供し、顧客にワークフローを組ませる使い方や、n8nの名前を外して自社製品として売る使い方は認められていません。顧客向けの製品に組み込む計画があるなら、構築の前にn8nの「License FAQ」で条件を確かめます。
クラウド版とセルフホストの比較|費用・手間・データの置き場所
どちらを選ぶかは、費用だけでなく、準備にかかる時間と、保守を担える人がいるかで決まります。
| 比べる項目 | クラウド版 | セルフホスト(無料版) |
|---|---|---|
| 利用料 | 有償プランは年払いでStarterが月20ユーロから。実行回数でプランが分かれる | ソフトウェアは無料。実行回数の上限もない |
| サーバー代 | 利用料に含まれる | VPSやクラウドのサーバー代が別にかかる。手元のPCなら不要 |
| 使い始めるまでの手間 | アカウントを作ればその日に使える | Dockerが入っていればすぐ試せる。公開するならドメインとSSLの設定が加わる |
| 更新と復旧 | n8nの会社が行う | 自社で行う。版を上げる作業も、止まったときの復旧も含む |
| データの置き場所 | n8nの会社のサーバー | 自社が選んだサーバー |
| 困ったときの問い合わせ先 | n8nの会社(受けられる範囲はプランで違う) | 公式ドキュメントと利用者のコミュニティ。有償プランならサポートが付く |
表の利用料は、2026年9月時点でn8nの料金ページに載っている金額です。月払いにすると金額が変わります。
セルフホストの無料版は実行回数で課金されないため、毎日何百回も動くワークフローがある会社ほど、費用の差が大きくなります。反対に、実行が月数百回程度で、保守を担える人が社内にいないなら、クラウド版のほうが手間を含めた費用は小さくなりやすいです。
ローカルPCとVPSのどちらで始めるか
セルフホストの置き場所は、大きく分けて手元のPCとVPS(月額で借りる仮想のサーバー)です。
| 置き場所 | 向いている使い方 | 気をつけること |
|---|---|---|
| 手元のPC | 画面の操作を覚える、社内で試しに使ってみる | PCの電源を切ると止まる。そのままでは社外からの通知(Webhook)を受けられない |
| VPS | 決まった時刻に動かす業務、外部サービスからの通知を受ける業務 | ドメイン、SSL、ログインの保護を自分で設定する。OSの更新も自社で持つ |
| 社内のサーバーやクラウドの仮想マシン | データを社外に出せない規程がある業務 | 社内のネットワークの規程に合わせて、外からの通信をどこまで通すかを決める |
最初は手元のPCで画面の操作を覚え、動かす業務が決まってからVPSへ移す順番が、無駄な出費が少なく済みます。作ったワークフローは書き出して別の環境で読み込めるため、試した分が無駄になることはありません。ただし、認証情報は移した先で入れ直します。
n8n Dockerでの起動手順|docker runで試す
公式ドキュメントが勧めているのは、Dockerを使う方法です。n8nの実行に要るものがまとめて入ったイメージ(n8nio/n8n)が公開されており、サーバーに入っている他のソフトの影響を受けずに動かせます。
前提|Docker DesktopかDocker Engineを入れる
先にDockerを入れます。WindowsとMacなら、Docker EngineとDocker Composeが一緒に入るDocker Desktopを使います。画面の無いLinuxのサーバーなら、Docker EngineとDocker Composeを別々に入れます。入ったかどうかは docker --version と docker compose version の2つで確かめます。
データを残す場所を作って起動する
次の順に進めます。
- データを残す場所(ボリューム)を作る
- 使う番号(ポート)、タイムゾーン、保存先を指定してn8nを起動する
- ブラウザで
http://localhost:5678を開き、最初の管理者のアカウントを作る
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="Asia/Tokyo" \
-e TZ="Asia/Tokyo" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-v n8n_data:/home/node/.n8n \
n8nio/n8n
-p 5678:5678 は、PCの5678番をn8nにつなぐ指定です。GENERIC_TIMEZONE はn8nの中で決まった時刻に動かす処理の基準に、TZ はコンテナ全体の時刻に使われます。どちらかを省くと、毎朝9時に動かすつもりの処理が日本時間とずれて動きます。
--rm を付けているため、止めるとコンテナは消えますが、データはボリュームに残ります。
起動できたかは、別のターミナルで docker ps を打って確かめます。一覧に n8n という名前の行があり、STATUSの列が Up で始まっていれば動いています。一覧に出てこない、またはブラウザで開けないときは、docker logs n8n でn8nが出した記録(ログ)を見ます。Docker Composeで動かしている場合は docker compose logs n8n です。止まった理由は、たいていログの最後のほうに書かれています。
docker ps
docker logs n8n
ボリュームを消すと認証情報が読めなくなる
-v n8n_data:/home/node/.n8n は、作ったボリュームをn8nの保存先につなぐ指定です。この保存先には、ワークフローや実行の記録に加えて、認証情報を暗号化するキー(暗号化キー)が入ります。
ボリュームを消すと、ワークフローが消えるうえに、暗号化キーも失われます。キーが無いと、データベースだけをバックアップから戻しても、認証情報は読めません。ボリュームは消さず、暗号化キーはボリュームとは別の場所にも控えておきます。コンテナは作り直してもかまいませんが、ボリュームはそのまま残します。
PostgreSQLに切り替えるときの環境変数
保存先のデータベースは、初期設定では1つのファイルにまとめる形(SQLite)です。実行の数が増えてきたら、PostgreSQLに切り替えられます。切り替えるには、起動のコマンドに次の環境変数を足します。
-e DB_TYPE=postgresdb \
-e DB_POSTGRESDB_DATABASE=<データベース名> \
-e DB_POSTGRESDB_HOST=<接続先> \
-e DB_POSTGRESDB_PORT=<ポート番号> \
-e DB_POSTGRESDB_USER=<ユーザー名> \
-e DB_POSTGRESDB_SCHEMA=<スキーマ名> \
-e DB_POSTGRESDB_PASSWORD=<パスワード> \
PostgreSQLに切り替えたあとも、/home/node/.n8n のボリュームは外しません。暗号化キーはこちらに残るためです。
手元のPCでWebhookを試すならトンネルを使う
外部サービスからの通知は、社外からn8nに届かないと受けられません。手元のPCは社外から直接届かないため、試すときは、外からの通信を手元のPCへ中継する「トンネル」を使う方法があります。n8nの公式ドキュメントでは、Cloudflareのcloudflaredを使ってn8nへ中継する構成が紹介されています。ただし公式ドキュメントも、トンネルは開発中の確認用で、本番で使うのは安全ではないとしており、仕組みが版によって変わることもあります。業務で通知を受けるなら、この後の「VPSで公開する」の節の手順で、ドメインとSSLを設定したサーバーに置きます。
n8n Docker Composeの書き方|バージョンの固定と暗号化キー
業務で使うなら、起動の条件を毎回コマンドで打つのではなく、Docker Composeの設定ファイルに書いておきます。公式ドキュメントも、docker run の手順よりDocker Composeでの構築を勧めています。
設定ファイルの書き方
作業用のフォルダを作り、その中に環境変数のファイル(.env)と設定ファイル(compose.yaml)を置きます。
mkdir n8n-compose
cd n8n-compose
openssl rand -hex 32
最後のコマンドで出てきた長い文字列を、暗号化キーとして .env に書きます。
N8N_ENCRYPTION_KEY=<openssl rand -hex 32 で作った文字列>
GENERIC_TIMEZONE=Asia/Tokyo
services:
n8n:
image: n8nio/n8n:2.40.7
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- TZ=${GENERIC_TIMEZONE}
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
書いたら、docker compose up -d で起動し、docker compose stop で止めます。
イメージのバージョンを固定する理由
設定ファイルでは、n8nio/n8n の後ろに :2.40.7 のようにバージョンを付けています。付けないと、作り直すたびにその時点の最新版が入り、知らないうちにバージョンが上がって、動いていたワークフローが止まることがあります。上げるときはバージョンの数字を書き換え、いつ上げたかが分かるようにしておきます。2.40.7 は2026年9月時点の安定版で、使える番号はDocker Hubの n8nio/n8n のページで確かめます。
暗号化キーを自分で作って控える
N8N_ENCRYPTION_KEY を指定しない場合、n8nは初回の起動時にキーを自動で作ってボリュームに保存します。自分で作って指定しておくと、サーバーを移すときも、ボリュームが壊れたときも、同じキーで認証情報を読み戻せます。
作ったキーは、パスワード管理のツールのような、サーバーとは別の場所に控えます。.env はGitなどの版管理に入れず、見られる人を運用の担当者に絞ります。
VPSで公開する|ドメイン・SSL・リバースプロキシ
社外から使う、あるいは外部サービスからの通知を受けるなら、VPSに置いてドメインで公開します。そのとき、n8nを直接インターネットに出すのではなく、手前にリバースプロキシ(外からの通信を受けて中のサービスへ渡す入口)を置き、そこでSSLの証明書を扱います。公式ドキュメントの手順では、リバースプロキシにTraefikを使い、証明書を自動で取得します。
n8nが止まったことは、n8nの外の見張りで気づくようにします。
ボリュームはサーバーの外へバックアップします。
公開までの手順
DNSの向け先が切り替わってから起動しないと、証明書の取得に失敗します。公式ドキュメントの手順を順番に並べると、次のとおりです。
- VPSを借り、Docker EngineとDocker Composeを入れる
- 使うドメインのDNSで、
n8n.example.comのようなサブドメインのAレコードをVPSのIPアドレスに向ける - 作業用のフォルダに
.envを作り、ドメイン名、サブドメイン、タイムゾーン、証明書の連絡先のメールアドレスを書く compose.yamlに、Traefikとn8nの2つのサービスを書くsudo docker compose up -dで起動し、https://n8n.example.comを開く
.env には、先ほどの暗号化キーに加えて次の値を書きます。
DOMAIN_NAME=example.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Asia/Tokyo
SSL_EMAIL=user@example.com
n8n側で足す環境変数
公開するときは、n8nのサービスに次の環境変数を足します。特に WEBHOOK_URL を入れ忘れると、外部サービスに登録する通知の受け口のURLが localhost のままになり、通知が届きません。
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
設定ファイルでn8nのポートを 127.0.0.1:5678:5678 と書いているのは、5678番をサーバーの中からしか開けないようにするためです。外からの通信は、80番と443番で待つTraefikだけが受けます。Traefikのサービスの書き方と、HTTPSへの転送やセキュリティ用のヘッダーの設定は、公式ドキュメントの「Use Docker Compose」に全文が載っています。
ログインの保護とサーバーの守り
n8nの画面は、管理者のアカウントを持つ人なら、つないだすべてのサービスの認証情報を使ってワークフローを動かせます。公開したら、管理者のパスワードを長くし、2段階認証を有効にします。VPSの側でも、使わないポートを閉じ、OSの更新を定期的に当てます。社内の人しか使わないなら、会社のネットワークからだけ開けるように接続元を絞る方法もあります。
アップデートとバックアップの手順
セルフホストでは、n8nのアップデートもバックアップも自社の仕事です。どちらも、手順を決めて書き残しておかないと、担当者が替わったときに誰も触れなくなります。
アップデートは新しいイメージを取ってコンテナを作り直す
docker run で起動している場合は、新しいイメージを取り、今のコンテナを止めて消し、同じ指定で起動し直します。ボリュームは消えないため、データはそのまま引き継がれます。
docker pull n8nio/n8n
docker ps -a
docker stop <コンテナのID>
docker rm <コンテナのID>
最後に、最初に起動したときと同じ指定で docker run を実行します。
Docker Composeで動かしている場合は、compose.yaml のバージョンの数字を書き換えてから、次の3つを順に実行します。
docker compose pull
docker compose down
docker compose up -d
上げる前には、バックアップを取り、n8nのリリースノートで大きな変更が無いかを読みます。大きく版を上げると、使っていたノードの設定項目が変わっていることがあります。止めても困らない時間帯に上げ、主なワークフローを手で1回ずつ動かして確かめると安心です。
バックアップで残すもの
残すものは、次の3つです。
- n8nのボリューム。ワークフロー、実行の記録、暗号化キーが入っています。SQLiteのまま使っているなら、データベースもここに入ります
- PostgreSQLのデータ。PostgreSQLに切り替えているなら、データベースを別に書き出して残します
.envと暗号化キー。ボリュームとは別の場所に控えます。キーが無いと、戻したデータベースの認証情報を読めません
バックアップは、n8nを動かしているサーバーとは別の場所に置きます。同じサーバーに置くと、サーバーごと壊れたときに一緒に失われます。取るだけでなく、別の環境に戻して、ワークフローと認証情報が使えるかを一度は試しておきます。
業務で回す前に決めること|キー・見張り・担当者
n8nのセルフホストを本番の業務に載せる前に、次の3つを決めておきます。どれも技術の設定ではなく、誰が何を持つかの取り決めです。
| 決めること | 決めないまま始めると | 決めておく中身 |
|---|---|---|
| 暗号化キーと認証情報を誰が持つか | キーの置き場所を知る人がいなくなり、サーバーを移すときに全部つなぎ直しになる | キーの控えの置き場所、見られる人、担当者が替わるときの引き継ぎ方 |
| 止まったことにどう気づくか | n8nごと止まると失敗の通知も届かず、業務の遅れで初めて気づく | n8nの外で動かす見張り、知らせる相手、知らせを受けた人が最初にすること |
| 更新とバックアップを誰がいつやるか | 版が古いまま放置され、上げようとしたときに差が大きすぎて止まる | 更新の頻度、バックアップの取り方と置き場所、戻す手順の確認の頻度 |
認証情報は、止めたい処理だけを止められるように分ける
n8nでは、メールや会計ソフトなど、つなぐ先のサービスごとに認証情報を登録します。1つの認証情報を複数のワークフローで使い回すと、ある処理だけを止めたいときに、同じ認証情報を使う他の処理まで止まります。用途ごとに分け、分けられないものは、どのワークフローが使っているかを一覧にしておきます。それぞれの認証情報で触れる範囲も、必要な操作だけに絞ります。
見張りの仕組みはn8nの中に作らない
n8nの中に失敗を知らせるワークフローを作っても、n8nそのものやサーバーが止まれば、その知らせも届きません。見張りは、n8nとは別の場所で動かします。たとえば、外からn8nのURLに定期的にアクセスして応答を確かめるサービスを使う、大事な処理がその日に動いたかを別のツールの定時実行で確かめる、といった形です。知らせを受けた人が、まず何を確かめ、誰に連絡するかも書いておきます。
担当者は2人以上にして、手順を書き残す
構築した1人しか手順を知らない状態だと、その人の異動や休みで、更新も復旧も止まります。更新とバックアップの手順は文書にし、少なくとも2人が実際に手を動かして試しておきます。ワークフローの中で人が確認する箇所をどこに置くかも、あわせて決めておくと、どこまでを自動で流すかの説明がしやすくなります。
セルフホストとクラウド版のどちらを選ぶか
費用、保守の手間、データの置き場所で比べると、選び方は次のとおりです。
- 業務データを社外のサービスに置けない規程があるなら、セルフホストを選ぶ
- 実行回数が多く、回数で課金されると費用が読めないなら、セルフホストが向く
- サーバーの更新やバックアップを担える人が社内にいないなら、クラウド版で始める
- まだ何を自動化するかが決まっていないなら、手元のPCのDockerかクラウド版の無料トライアルで試してから決める
セルフホストを選ぶかどうかの分かれ目は、ソフトウェアの利用料ではなく、保守を担う人を2人用意できるかどうかです。用意できないまま始めると、無料で始めたはずの仕組みが、止まったときに誰も直せない負担になります。
まとめ:n8nセルフホストは、Docker Composeで構成を固定し、キーと保守の担当を決めてから本番に載せる
- n8nセルフホストは、無料版ならソフトウェアの利用料がかからない。かかるのはサーバー代と、更新やバックアップの手間
- 社内の業務の自動化には無料で使えるが、n8nを顧客に使わせるサービスや自社製品として売る使い方は認められていない
- 手元のPCなら、Dockerで
n8n_dataのボリュームを作り、n8nio/n8nを起動してhttp://localhost:5678を開けば試せる - 業務で使うなら、Docker Composeでイメージのバージョンを固定し、
N8N_ENCRYPTION_KEYを作ってサーバーとは別の場所に控える - VPSで公開するときは、DNSを向け、リバースプロキシでSSLを扱い、
WEBHOOK_URLを設定する - 本番の前に、暗号化キーの持ち主、n8nの外に置く見張り、更新とバックアップの担当者を決める
Augueでは、n8nのセルフホストでの構築から、見張りやバックアップを含めた本番の運用の設計、生成AIを組み込んだ業務の自動化までを支援しています。自社でセルフホストとクラウド版のどちらを選ぶか迷っている方や、本番に載せる前の準備を確かめたい方は、是非ご相談ください。
よくある質問
セルフホストのサーバーには、どれくらいの性能が要りますか?
一律の目安は出せません。必要なメモリやCPUは、同時に動かすワークフローの数と、1回に扱うデータの大きさでほぼ決まるためです。数人で試す段階なら小さめのプランで足ります。本番に移したら、実行が重なる時間帯のメモリの使用量を1〜2週間見て、足りなければプランを上げる順番にすると、最初から大きなサーバーを借りずに済みます。
Dockerを使わず、Node.jsで直接入れる方法とはどう違いますか?
n8nはnpmでも入れられますが、Node.jsの版をn8nの要件に合わせて自分で管理する必要があります。Dockerなら必要な実行環境ごとイメージに入っているため、サーバーに入っている他のソフトの影響を受けにくく、版を上げるときも戻すときもイメージを差し替えるだけで済みます。社内で保守するなら、手順の揃えやすさからDockerを選ぶ会社が多くなります。
構築から本番で使い始めるまで、どれくらいの期間と人手が要りますか?
試しに動かすだけなら、Dockerが入っていれば当日中に済みます。本番までの期間は、Dockerやサーバーの扱いに慣れた人が社内にいるかで大きく変わるため、一律には言えません。見積もるときは、ドメインと証明書の設定、バックアップを取って別の環境に戻す確認、止まったときの知らせ方の設定を作業として並べ、担当者に1つずつ日数を出してもらいます。つなぐ先のシステムの権限を払い出してもらう社内の手続きは別にかかるため、その日数も先に確かめておきます。
n8nはDockerで無料で使えますか?
使えます。公式のイメージは誰でも無料で取得でき、有償のライセンスキーを入れなければ無料版として動きます。お金がかかるのは、常に動かしておくためにサーバーを借りる場合のサーバー代です。社内アカウントでのログインのような組織向けの機能が必要になったときだけ、有償プランを別に契約します。
n8nの既定のポート番号は何番ですか?
5678番です。手元のPCで動かしたら、ブラウザで http://localhost:5678 を開きます。PCの5678番を別のソフトが使っているときは、`-p 5679:5678` のように左側の数字だけを変えると、別の番号から開けます。VPSで公開するときは5678番を外に開けず、リバースプロキシが443番で受けます。
WindowsやMacでもn8nをDockerで動かせますか?
動かせます。Docker Desktopを入れれば、Linuxのサーバーと同じイメージを同じコマンドで起動できます。ただし、PCがスリープしたり電源が切れたりするとn8nも止まります。決まった時刻に動かす業務は、試し終えたらVPSなど常に動いているサーバーへ移します。
n8nを更新すると、作ったワークフローは消えますか?
ボリュームを残したまま更新すれば消えません。ワークフローや認証情報はコンテナではなくボリュームに保存されているため、コンテナを作り直しても引き継がれます。消えるのは、`docker volume rm` や `docker compose down -v` のようにボリュームごと消す操作をしたときです。更新の前にワークフローを書き出しておくと、万一のときも読み込み直せます。
関連する記事
n8nとは?できること・料金・使い方と、業務自動化を本番で回す前に決めることn8nとは、ノードをつないで業務を自動化するツールです。無料で使える範囲、料金、使い方の手順、Dockerでの始め方、Zapier・Makeとの違い、商用利用、本番で回す前に決めることを解説します。
内製したAIエージェントの運用・保守|壊れたときに誰が直すかと、外部支援を外すタイミング内製したAIに起きる不具合を、指示の調整で済むもの、接続先の仕様変更、権限の問題に分けて一次対応者を決める方法から、月次点検の項目、精度低下への気づき方、外部支援を外す目安までを整理します。
AIエージェントを基幹システム・SaaSにつなぐ|連携方式の選び分けと、書き込みまで許す範囲の決め方社内の基幹システムやSaaSにAIエージェントをつなぐ方式を、APIで直接つなぐ形、ファイルや連携基盤を挟む形、画面操作を代行する形で比べます。読み取りから書き込みへ広げる順序と、承認・履歴の決め方も整理します。



