n8nのセルフホスト手順|Docker・Docker Composeでのインストールとアップデート・バックアップ

n8nのセルフホスト。Docker・ローカル環境を紹介する記事のアイキャッチ

n8nは、n8nが運用する「n8n Cloud」のほかに、自分のパソコンやサーバーにインストールして使う「セルフホスト」に対応しています。セルフホストの無料版(Community Edition)は、公式ドキュメントではほぼすべての機能を使えると案内されています。一方で、インストールから更新、バックアップ、セキュリティ対策までを自分で行う必要があります。

この記事では、n8nをセルフホストする方法を、2026年10月時点の公式ドキュメントの手順をもとに説明します。コマンドは公式ドキュメントに載っているものです。

  • セルフホストとn8n Cloudの違い、ライセンス(Sustainable Use License)の条件
  • 必要な環境と、ワンラインセットアップ・Docker Compose・docker runの3つのインストール方法
  • データの永続化(ボリューム)と主な環境変数
  • アップデートとバックアップの方法、外部に公開するときの注意点、VPSで動かす場合の考え方

n8nでできることは「n8nとは?」で説明しています。

目次

n8nのセルフホストとn8n Cloudの違い

公式ドキュメントでは、セルフホストとn8n Cloudの違いを次のように説明しています。

スクロールできます
項目n8n Cloudセルフホスト
インストール不要Dockerなどで自分で行う
必要な知識不要インストールと設定に技術的な知識が必要
サーバーの用意と保守n8nが行う自分で行う
設定の自由度用意された設定の範囲動かす環境と設定を自分で決められる
無料で使う方法無料トライアル(14日間)Community Edition(無料)
有料の選択肢Starter・Pro・EnterpriseBusiness・Enterprise

公式ドキュメントは、セルフホストをサーバー管理に慣れた人向けとしています。設定を誤るとデータの消失、セキュリティの問題、停止につながるおそれがあり、サーバーを管理した経験がなければn8n Cloudをすすめています。セルフホストに必要な知識として挙げられているのは、サーバーとコンテナの構築・設定、リソースの管理、サーバーとアプリケーションのセキュリティ対策、n8nの設定です。

セルフホストのエディション

セルフホストのn8nは、どのエディションも同じソフトウェアで、ライセンスキーによって使える機能が変わります。

スクロールできます
エディション費用内容
Community無料ライセンスキーなしで動く版。機能のほぼすべてを使える
Registered Community無料メールアドレスを登録して受け取る無料のキーで、フォルダー、エディターでのデバッグ、実行データのカスタマイズが追加される
Business・Enterprise有料契約で受け取るライセンスキーで、SSOや複数の環境の管理などが使える

Community Editionで使えない主な機能は、プロジェクト、ワークフローと認証情報の共有、SSO(SAML・LDAP)、外部のシークレット管理、ログの外部送信、Gitによるバージョン管理などです。Community Editionでは、ワークフローと認証情報を見られるのはインスタンスのオーナーと作成者だけです。有料プランの料金と機能の一覧は、n8nの料金ページで確認してください。

n8n Cloudの各プランの料金は「n8nの料金プラン」で説明しています。

n8nのライセンス(Sustainable Use License)の条件

セルフホストのn8nには、n8nが作った「Sustainable Use License」が適用されます。ソースコードは公開されていますが利用目的に制限があるため、n8nは自らをオープンソースとは呼ばず、「fair-code」と説明しています。ライセンスでは、使用・変更・配布を無料で認めたうえで、次の3つの制限を設けています。

  • 使用・変更は、自社の社内業務の目的か、非商用・個人での利用に限る
  • 他者への配布・提供は、非商用の目的で無料で行う場合に限る
  • ライセンスや著作権などの表示を変更・削除しない

公式のライセンスFAQでは、「ワークフローを作ったり変更したりするのが自分か自分の組織の人だけなら、無料で使える」と説明されています。できることとできないことの例は次のとおりです。

スクロールできます
できることできないこと
自社の業務や個人のプロジェクト、学習に使うn8nをサービスとして提供し、顧客にワークフローを作らせる
自分のインスタンスで顧客向けの自動化を作る(顧客が作成・編集できない場合)自社製品の画面・API・MCP・AIエージェントなどを通じて、外部の利用者に自分のワークフローを作らせる
ワークフローの作成・設定・保守、研修やコンサルティングで料金を受け取るn8nのコードを元に自社の自動化製品を立ち上げる
自社製品の裏側でn8nを使い、利用者は作られた自動化を使うだけにするn8nのロゴなどを外して自社の製品として提供する
Community Editionのインスタンスを複数動かすライセンスキーが必要な有料機能をライセンスなしで使う

判断の基準は、利用者が誰の認証情報を使うかではなく、ワークフローの処理内容を誰が決めるかだと説明されています。自分の使い方が当てはまるか分からない場合は、公式の問い合わせ先(license@n8n.io)で確認できます。なお、このライセンスの説明はセルフホスト版が対象で、n8n Cloudには別の利用規約が適用されます。

n8nのセルフホストに必要な環境

  • Docker:Docker EngineとDocker Compose(v2)が必要です。Docker Desktopには両方が含まれます。画面のないLinuxサーバーでは、Docker EngineとDocker Composeを個別にインストールできます
  • メモリとCPU:公式のDocker Composeの手順では、メモリ4GB以上・2vCPU以上を必要条件としています。n8n Assistant(文章の指示でワークフローを作るプレビュー版の機能)用に、AIが書いたコードを動かす隔離環境(サンドボックス)も一緒に起動するためです
  • OS:ワンラインセットアップはLinuxかmacOSで動かします。Windowsでは、WSL(Windows Subsystem for Linux)とDocker Desktopを組み合わせる方法が案内されています

n8nはほぼ毎週、新しいマイナーバージョンを公開しています。本番で使うのは「stable」で、「beta」は最新の不安定な場合があるバージョンです。2026年10月28日時点の公式ドキュメントでは、stableが2.45.5、betaが2.46.1と表示されています。また、npmでのインストールはn8n 3.0から非推奨になり、3.0以降はDockerでの配布だけになると案内されています。

n8nをDockerでインストールする3つの方法

スクロールできます
方法向いている用途特徴
ワンラインセットアップ新しく始める場合1つのコマンドで設定ファイルの作成から起動までを行う
Docker Compose設定を自分で管理したい場合、本番環境設定ファイルを自分で作る。データベースなどのサービスを組み合わせられる
docker run手元で短時間試す場合コマンド1つで1つのコンテナを起動する。公式ページには内容が古いとの注意書きがある

ワンラインセットアップでインストールする

Dockerを起動した状態でターミナルを開き、次のコマンドを実行します。

curl -fsSL https://get.n8n.io | sh

公式ドキュメントによると、このコマンドはDockerが動いているかを確認し、今いるフォルダーに「n8n」フォルダーを作って設定ファイル(compose.yml・.env など)を書き込み、n8nをダウンロードして起動します。.envには、サンドボックスのサービス同士が通信するための秘密の値が自動で生成されます。準備ができると、ブラウザで開くURL(http://localhost:5678)が表示されます。すでに同じフォルダーにn8nがある場合は、何も変更せずにその旨を表示します。

インターネット上のスクリプトをそのまま実行したくない場合は、公式ドキュメントのとおり、いったんダウンロードして内容を読んでから実行できます。

curl -fsSL https://get.n8n.io -o get-n8n.sh
less get-n8n.sh   # review it
sh get-n8n.sh

インストール後の操作は、次のコマンドで行います。

スクロールできます
操作コマンド
停止docker compose -f ./n8n/compose.yml down
起動docker compose -f ./n8n/compose.yml up -d
最新バージョンへの更新curl -fsSL https://get.n8n.io | sh -s -- --upgrade
削除(データも消える)docker compose -f ./n8n/compose.yml down -v のあと rm -rf ./n8n

停止に使う「down」に「-v」を付けると、ワークフローや認証情報を保存しているボリュームまで削除されます。停止するだけなら「-v」は付けません。

Docker Composeで自分で構成する

設定ファイルを自分で管理したい場合や、既存のDocker Composeの構成にn8nを加えたい場合は、公式ドキュメントの「Install using Docker Compose」の手順で、ワンラインセットアップと同じ構成を手作業で作ります。

  1. 作業用のフォルダーを作って移動する(mkdir n8n && cd n8n)
  2. 「.env」を作り、使うn8nのバージョン(N8N_VERSION)、サンドボックスのバージョン、各サービスの秘密の値を書く。値は公式ドキュメントの項目ごとに自分で決め、このファイルはバージョン管理に含めない
  3. Web検索用のサービス(SearXNG)の設定ファイル「searxng-settings.yml」を作る
  4. 公式のGitHubにある構成ファイルの内容で「compose.yml」を作る
  5. docker compose up -d で起動し、docker compose ps で状態を確認する
  6. ブラウザで http://localhost:5678 を開く

この構成にはデータベースのサービスが含まれず、n8nに組み込まれたSQLiteを使います。公式ドキュメントでは、SQLiteは試すには十分としたうえで、複数の利用者やワークフローを常時動かす本番環境ではPostgreSQLに切り替えるよう案内しています。PostgreSQLに切り替える手順も同じページにありますが、既存のSQLiteのデータは自動では移行されず、新しく始める環境向けの手順です。また、この構成に同梱されるサンドボックスはローカルの開発・テスト向けです。n8n Assistantを本番で使う場合は、公式ドキュメントが推奨するDaytonaを使う構成も確認してください。

docker runで起動する

公式ドキュメントの「Install with Docker」には、docker runで起動するコマンドが載っています。このページには「内容が古いため、Docker Composeでのインストールを参照してほしい」という注意書きがあるため、手元で短時間試す用途にとどめるのが無難です。

docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
 -e TZ="<YOUR_TIMEZONE>" \
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -v n8n_data:/home/node/.n8n \
 n8nio/n8n

「<YOUR_TIMEZONE>」は、自分のタイムゾーンの名前に置き換えます。日本時間なら「Asia/Tokyo」です。このコマンドは、データを保存するボリューム「n8n_data」を作り、n8nのイメージをダウンロードして、5678番ポートでn8nを起動します。起動したら、ブラウザで http://localhost:5678 を開きます。

n8nのデータの永続化(ボリューム)

Dockerのコンテナは、作り直すと中のデータが消えます。n8nのデータを残すために、公式の手順ではコンテナ内の「/home/node/.n8n」フォルダーをDockerのボリューム(コンテナの外にデータを保存する場所)に割り当てています。ボリューム名は、docker runの手順では「n8n_data」、ワンラインセットアップとDocker Composeの手順では「n8n-data」です。

n8nコンテナからボリュームへデータと設定を保存する永続化の仕組み
コンテナを作り直しても必要なデータが残るよう、保存先をコンテナの外へ割り当てます。

「.n8n」フォルダーには、SQLiteのデータベースファイル(ワークフロー・認証情報・実行の履歴)と、認証情報を暗号化する鍵が入った設定ファイルが保存されます。PostgreSQLを使う場合もデータベース以外の重要なデータがこのフォルダーに残るため、公式ドキュメントはボリュームの割り当てを続けるようすすめています。

n8nのセルフホストで使う主な環境変数

n8nの設定は環境変数で変更します。docker runでは「-e」で、Docker Composeでは構成ファイルの「environment」や「.env」で指定します。主なものは次のとおりです。

スクロールできます
環境変数内容初期値
GENERIC_TIMEZONEn8nのタイムゾーン。Schedule Triggerなど時刻で動くノードが使うAmerica/New_York
TZコンテナのシステムのタイムゾーン—
N8N_ENCRYPTION_KEY認証情報を暗号化する鍵を自分で指定する初回起動時にランダムに生成
N8N_HOST・N8N_PORT・N8N_PROTOCOLn8nが動くホスト名・ポート・プロトコルlocalhost・5678・http
N8N_WEBHOOK_URL外部サービスに登録するWebhookのURL。リバースプロキシの後ろで動かすときに指定する—
N8N_PROXY_HOPSn8nの前にあるリバースプロキシの数0
N8N_EDITOR_BASE_URL利用者がエディターを開く公開URL—
DB_TYPE・DB_POSTGRESDB_~PostgreSQLを使う場合のデータベースの種類と接続先SQLite
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONStrueにすると、設定ファイルを所有者だけが読み書きできる権限にするfalse
N8N_DEFAULT_LOCALE画面の表示言語en
N8N_TEMPLATES_ENABLEDワークフローのテンプレートを使うかどうかtrue
N8N_DIAGNOSTICS_ENABLED匿名の利用状況のデータをn8nに送るかどうかtrue
N8N_PUBLIC_API_DISABLEDtrueにすると、n8nの公開APIを無効にするfalse

N8N_WEBHOOK_URLはn8n 2.30.0から使える変数で、以前の「WEBHOOK_URL」は2.35.0から非推奨になっています。パスワードなどの秘密の値は、変数名の末尾に「_FILE」を付けると、別のファイルから読み込ませることもできます。

画面の表示言語の変数はありますが、2026年10月28日時点で公式のGitHubリポジトリにある画面の翻訳ファイルは英語だけで、翻訳がない文字列は英語で表示されます。そのため、この設定をしても画面は日本語になりません。

n8nのアップデートの方法

公式ドキュメントでは、何バージョンも一度に上げると問題が起きやすいため、少なくとも月に1回は更新するようすすめています。更新の前には、リリースノートで互換性のない変更がないかを確認し、可能ならテスト用の環境で先に試します。また、更新の前にはデータのバックアップを取ることがすすめられています。

ワンラインセットアップで入れた場合

curl -fsSL https://get.n8n.io | sh -s -- --upgrade

このコマンドは、.envの「N8N_VERSION」と「N8N_SANDBOX_VERSION」の2行を書き換えて、n8nとサンドボックスのサービスを新しいバージョンにします。データや秘密の値、ほかの設定は変わりません。特定のバージョンにしたい場合は「–version 2.31.4」のようにバージョン番号を指定します。

Docker Composeで動かしている場合

公式ドキュメントでは、構成ファイルがあるフォルダーで次のコマンドを実行する手順が案内されています。

# Navigate to the directory containing your docker compose file
cd </path/to/your/compose/file/directory>

# Pull latest version
docker compose pull

# Stop and remove older version
docker compose down

# Start the container
docker compose up -d

公式のDocker Composeの構成ファイルは、使うn8nのイメージのバージョンを.envの「N8N_VERSION」から読み込みます。この構成では、新しいバージョンにするには先にN8N_VERSIONの値を変えてから、イメージを取得し直します。

docker runで動かしている場合

新しいイメージを取得し、古いコンテナを停止・削除してから、同じ設定で起動し直します。Docker Desktopの「Images」タブから最新のイメージを取得することもできます。

# Pull latest (stable) version
docker pull n8nio/n8n

# Find your container ID
docker ps -a

# Stop the container with the `<container_id>`
docker stop <container_id>

# Remove the container with the `<container_id>`
docker rm <container_id>

# Start the container
docker run --name=<container_name> [options] -d n8nio/n8n

コンテナを削除しても、ボリュームに保存したデータは残ります。起動し直すときは、最初と同じボリュームの割り当て(-v)と環境変数を指定します。

n8nのバックアップと復元

公式ドキュメントでは、セルフホストのn8nを完全に復元するためのバックアップの対象を次のように説明しています。

  • 「.n8n」フォルダー:認証情報を暗号化する鍵が入った設定ファイルと、SQLiteを使う場合はデータベースファイル。Dockerでは、ボリュームに保存されている
  • 外部のデータベース:PostgreSQLを使う場合は、データベースのツールでバックアップする
  • そのほか:ファイルなどのデータを外部のストレージや独自の保存先に置いている場合はその場所、独自のノードを読み込んでいる場合はそのフォルダー

SQLiteを使う場合は、n8nを停止してから「.n8n」フォルダーをコピーします。書き込み中のデータベースファイルをコピーすると、内容が食い違ったバックアップになるおそれがあるためです。また、認証情報はデータベースに暗号化して保存されているため、暗号化の鍵(設定ファイル、またはN8N_ENCRYPTION_KEYの値)がないと、データベースを復元しても認証情報を使えません。

ワークフローと認証情報だけなら、n8nのコマンド(Server CLI)でJSONファイルに書き出せます。

n8n export:workflow --backup --output=backups/workflows/
n8n export:credentials --backup --output=backups/credentials/

この書き出しには、利用者と権限、実行の履歴、変数、暗号化の鍵を含むインスタンスの設定は含まれません。別のインスタンスへワークフローを移すには使えますが、インスタンス全体の復元には「.n8n」フォルダーとデータベースのバックアップが必要です。Dockerで動かしている場合、コンテナ内の「backups/」フォルダーはボリュームに含まれないため、書き出したファイルはコンテナの外へコピーしておきます。

インスタンス全体を復元するときは、n8nを停止し、「.n8n」フォルダー、PostgreSQLのデータベース(使う場合)、データベースの接続先や暗号化の鍵などの環境変数の設定を元に戻してから、n8nを起動します。

n8nを外部に公開するときの注意点(HTTPS・認証)

ここまでの手順では、n8nは http://localhost:5678 で動き、通信は暗号化されていません。外部のサービスからWebhookを受け取る場合など、インターネットからn8nにアクセスできるようにするときは、次の点を確認します。

リバースプロキシでHTTPSにする

公式ドキュメントがすすめているのは、Traefikなどのリバースプロキシをn8nの前に置き、HTTPS(TLS)の処理と証明書の更新を任せる方法です。Linuxサーバー向けの公式の手順「Use Docker Compose」では、専用のサブドメインをサーバーのIPアドレスに向けるDNSのAレコードを作り、TraefikとLet’s Encryptの証明書でHTTPSにする構成例が紹介されています。n8nに証明書を直接読み込ませる方法(N8N_SSL_CERT・N8N_SSL_KEY)もありますが、その場合は証明書の更新を自分で行います。

リバースプロキシの後ろでn8nを動かすときは、WebhookのURLが正しく作られるように、次の設定が必要です。あわせて、最後のリバースプロキシで「X-Forwarded-For」「X-Forwarded-Host」「X-Forwarded-Proto」のヘッダーを渡します。

export N8N_WEBHOOK_URL=https://n8n.example.com/
export N8N_PROXY_HOPS=1

公開するポートを絞る

公式のDocker Composeの構成では、外部に開けてよいのはn8nのポートだけで、ほかのサービスはDockerの内部のネットワークでつながります。特に、サンドボックスを動かすコンテナ(sandbox-runner-1)は特権モードで動くため、公式ドキュメントはサーバーの管理者権限と同等に扱い、インターネットに公開しないよう求めています。サーバーのファイアウォールでも、必要なポート以外は閉じておきます。

公式のDockerの手順には、外部からのWebhookを手元のn8nに届ける「トンネル」の機能も載っていますが、ローカルでの開発・テスト用で、本番での利用は安全ではないと明記されています。

Webhookに認証を付ける

公開したWebhookのURLは、ログインしていない相手からも呼び出せます。Webhookノードでは、呼び出す側に認証を求める設定(Basic認証、ヘッダー認証、JWT認証、n8nのユーザー認証)と、呼び出せるIPアドレスを限定する設定(IP(s) Allowlist)が使えます。

セキュリティのために公式が挙げている対策

公式ドキュメントでは、セルフホストの利用者ができる対策として次のものを挙げています。

  • リバースプロキシで通信を暗号化する
  • 暗号化したディスクにn8nとデータベースを置き、保存するデータを暗号化する
  • n8nのセキュリティ監査(Security audit)の機能を実行する
  • コミュニティが作ったノードを入れるときのリスクを理解するか、無効にする
  • サーバー上でコマンドを実行するExecute CommandノードやSSHノードなど、使わないノードを無効にする
  • 実行の記録を数日ごとに自動で削除するよう設定する(環境変数EXECUTIONS_DATA_MAX_AGE)

なお、ログイン用のCookieは初期設定(N8N_SECURE_COOKIE=true)でHTTPSの通信でだけ送られます。外部から使う場合はHTTPSを前提に構成します。

n8nをVPSで動かす場合の考え方

n8nを24時間動かしたい場合、自分のパソコンではなく、VPS(仮想専用サーバー)やクラウドのサーバーで動かす方法があります。公式ドキュメントには、いくつかのクラウド事業者向けの手順も用意されています。どの事業者を使う場合でも、確認しておきたい点は次のとおりです。

  • 性能:公式のDocker Composeの構成をそのまま使うなら、メモリ4GB以上・2vCPU以上が必要です。動かすワークフローの数や扱うデータの量が増えると、必要な性能も変わります
  • OSとDocker:LinuxにDocker EngineとDocker Composeをインストールできること。OSの更新も自分で行います
  • ドメインとHTTPS:外部に公開するなら、サブドメインをサーバーに向けるDNSの設定と、HTTPSにするリバースプロキシが必要です
  • ファイアウォール:事業者の管理画面やサーバー側のファイアウォールで、必要なポートだけを開けられること
  • バックアップの保存先:「.n8n」フォルダーやデータベースのバックアップを、そのサーバーの外に保存する方法

サーバーの費用に加えて、更新・バックアップ・障害への対応にかかる手間も考えて、セルフホストにするか、n8nが運用するn8n Cloudにするかを選びます。サーバーの管理に慣れていない場合は、公式ドキュメントのとおり、まずn8n Cloudの無料トライアルや、手元のパソコンでのワンラインセットアップで試してみるのがおすすめです。

n8nのセルフホストに関するよくある質問

n8nのセルフホストは無料ですか?

Community Editionはライセンスキーなしで無料で使えます。ただし、サーバーの費用や、AIモデルなど外部サービスの利用料は自分で負担します。SSOやプロジェクトなどの機能を使うには、有料のBusinessプランかEnterpriseプランのライセンスキーが必要です。

セルフホストのn8nを仕事に使えますか?

自社の業務に使うことや、顧客向けに作った自動化の作成・保守で料金を受け取ることは、公式のライセンスFAQで認められています。一方、顧客や外部の利用者がワークフローを作ったり変更したりできる形で提供することはできません。判断に迷う場合は、license@n8n.io に問い合わせます。

セルフホストでn8n Assistantは使えますか?

ワンラインセットアップと公式のDocker Composeの構成には、n8n Assistant用のサンドボックスが含まれます。ただし、AIモデルのAPIキーを登録するまでn8n Assistantは有効になりません。APIキーは、起動後にn8nの画面のAIの設定から登録するか、.envの「N8N_INSTANCE_AI_MODEL_API_KEY」に書きます。n8n Assistantは2026年10月時点でプレビュー版の機能です。

Difyもセルフホストできますか?

Difyにも、自分のサーバーで動かすセルフホスト版があります。提供形態と条件は「Difyとは?読み方・できること・料金・始め方」で紹介しています。

Difyの導入手順は「Difyのセルフホスト方法」で説明しています。

まとめ

n8nのセルフホストは、Community Editionなら無料で、機能のほぼすべてを自分のサーバーで使えます(2026年10月時点)。

  • インストールは、1つのコマンドで済むワンラインセットアップか、設定ファイルを自分で作るDocker Composeが公式の方法
  • データは「.n8n」フォルダー(Dockerのボリューム)に保存され、認証情報を暗号化する鍵も含まれる
  • 更新は少なくとも月1回が目安。更新の前にバックアップを取り、リリースノートを確認する
  • 外部に公開するなら、リバースプロキシでHTTPSにし、公開するポートを絞り、Webhookに認証を付ける
  • ライセンスでは、社内業務での利用や顧客向けの自動化の作成は認められ、顧客にワークフローを作らせる提供はできない

まずは手元のパソコンでワンラインセットアップを使い、テスト用のデータでワークフローを動かしてみてください。外部への公開や本番での利用は、バックアップと更新の手順を一度試してから進めるのがおすすめです。

インストールしたあとのワークフローの作り方は「n8nの使い方」で説明しています。

Dify・n8n・Zapierの違いと料金の数え方は「AI自動化ツールの選び方」で比べています。

この記事を書いた人

AI-Riseの企画・編集を担当。日常業務のあらゆる場面でAIをフル活用。AIツールの活用や業務自動化をテーマに、使い方・選び方・利用時の注意点をわかりやすく紹介しています。公式情報と実際の活用経験をもとに、便利な点だけでなく、費用や手間、できることの範囲も整理。仕事や日々の作業に合うツール選びをお手伝いします。

目次