Docker インストール
n8n は、ほとんどのセルフホスト(自前でサーバーを運用する)シナリオにおいて Docker の使用を推奨しています。Docker を利用することで、クリーンかつ隔離された環境を提供し、OS やツールチェーンの互換性問題を回避でき、データベースや環境の管理も容易になります。
また、Docker Compose を使って Docker 上で n8n を実行することも可能です。さまざまなアーキテクチャ向けの Docker Compose 設定ファイルは、n8n-hosting リポジトリ で確認できます。
セルフホストに必要な前提知識
n8n をセルフホストするには、以下の技術的知識が必要です:
- サーバーおよびコンテナのセットアップと設定
- アプリケーションのリソース管理とスケーリング
- サーバーおよびアプリケーションのセキュリティ強化
- n8n の設定管理
n8n は、経験豊富なユーザーによるセルフホストを推奨しています。操作ミスにより、データ損失・セキュリティリスク・サービス停止が発生する可能性があります。サーバー管理の経験がない場合は、n8n Cloud の利用をおすすめします。
以下の動画ガイドも参考にしてください:
前提条件
開始する前に、まず Docker をインストールしてください:
- Docker Desktop:Mac、Windows、Linux 向け。Docker Engine および Docker Compose が含まれています。
- Docker Engine および Docker Compose:Linux 上で個別にインストール可能。GUI のない Linux サーバーや、Docker Desktop の UI を使いたくない場合に適しています。
安定版(Stable)とベータ版(Beta)
n8n はほぼ毎週新しいマイナーバージョンをリリースしています。
stable版は本番環境での使用に適しています。beta版は最新リリースですが、安定性が保証されていない可能性があります。
問題を報告する場合は、コミュニティフォーラム をご利用ください。
現在の stable バージョン:2.10.2 現在の beta バージョン:2.11.1
n8n の起動
以下のコマンドをターミナルで実行し、<YOUR_TIMEZONE> プレースホルダーをあなたのタイムゾーンに置き換えてください:
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 \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
このコマンドは以下の処理を行います:
- 永続データを保存するためのボリューム(
n8n_data)を作成 - 必要な n8n イメージをダウンロード
- 以下の設定でコンテナを起動:
- コンテナのポート
5678をホストマシンにマッピングして公開 - コンテナのタイムゾーンを設定:
TZ環境変数: システムのタイムゾーンを設定(dateコマンドなどの出力に影響)GENERIC_TIMEZONE環境変数: Schedule Trigger ノードなど、スケジュール駆動型のノードに正しいタイムゾーンを適用
- n8n 設定ファイルに対して安全なファイル権限を強制適用
- Runners(タスク実行機能)を有効化(n8n でのタスク実行の推奨方式)
n8n_data永続ボリュームを/home/node/.n8nディレクトリにマウントし、コンテナ再起動時にもデータを保持
- コンテナのポート
起動後、ブラウザで http://localhost:5678 にアクセスすると n8n を利用できます。
PostgreSQL の使用
デフォルトでは、n8n は SQLite を使用してクレデンシャル、実行履歴、ワークフローを保存します。PostgreSQL もサポートしており、環境変数で設定可能です。
.n8n ディレクトリの永続化は引き続き推奨
PostgreSQL を使用する場合、SQLite データベースファイルを .n8n ディレクトリに保存する必要はありません。ただし、このディレクトリには暗号化キー、インスタンスログ、ソースコード管理機能のアセットなど、他の重要なデータが含まれています。一部の要件は回避可能(例:N8N_ENCRYPTION_KEY 環境変数を設定)ですが、潜在的な問題を避けるため、引き続きこのディレクトリに永続ボリュームをマウントすることを推奨します。
PostgreSQL と連携して n8n を使用するには、以下のコマンドを実行し、<データベース名> などのプレースホルダーを実際の値に置き換えてください:
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 \
-e N8N_RUNNERS_ENABLED=true \
-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="<パスワード>" \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
PostgreSQL 用の完全な docker-compose ファイルは、n8n hosting リポジトリ で確認できます。
更新方法
n8n を更新するには、Docker Desktop で Images タブを開き、コンテキストメニューから Pull を選択して最新の n8n イメージをダウンロードします:

または、コマンドラインで最新版または特定バージョンをプルすることも可能です:
# 最新(stable)バージョンをプル
docker pull docker.n8n.io/n8nio/n8n
# 特定バージョンをプル
docker pull docker.n8n.io/n8nio/n8n:1.81.0
# next(開発版)バージョンをプル
docker pull docker.n8n.io/n8nio/n8n:next
更新されたイメージをプルした後、n8n コンテナを停止して再起動してください。コマンドラインでも操作可能です。以下のコマンドで <コンテナID> を、最初のコマンドで取得したコンテナ ID に置き換えてください:
# コンテナ ID を確認
docker ps -a
# <コンテナID> のコンテナを停止
docker stop <コンテナID>
# <コンテナID> のコンテナを削除
docker rm <コンテナID>
# コンテナを起動
docker run --name=<コンテナ名> [オプション] -d docker.n8n.io/n8nio/n8n
Docker Compose を使った更新
Docker Compose ファイルで n8n を実行している場合、以下の手順で更新します:
# docker-compose ファイルのあるディレクトリに移動
cd <あなたのディレクトリ>
# 最新版をプル
docker compose pull
# 古いバージョンを停止・削除
docker compose down
# コンテナを起動
docker compose up -d
トンネル付き n8n の使用
⚠️ 注意
ローカル開発およびテスト専用であり、本番環境での使用は推奨されません。
💡 このセクションは、n8n をソースコードからビルド・実行している開発者向けです。通常の Docker ユーザーはこの機能を使用しません。
開発ツールとしてのトンネル機能
トンネル機能はローカル開発を便利にするツールですが、その内部実装は n8n のバージョンアップに伴って変更される可能性があります。
GitHub などの外部サービスのトリガーノードで Webhook を使用するには、n8n がインターネットからアクセス可能である必要があります。n8n は cloudflared を使ってトンネルサービスを提供し、ネットワークリクエストをローカルの n8n インスタンスにリダイレクトします。この機能には Docker のインストールが必要です。
n8n の実行方法に応じて、トンネルの使用方法は以下の2通りあります:
フルスタック(Full stack)方式
n8n と cloudflared を同じコンテナ内で実行します。起動時にトンネル URL が表示され、すべて自動的に接続されます:
pnpm stack --tunnel
サービスのみ(Services only)方式
pnpm dev や pnpm start でローカルに n8n を実行したい場合は、cloudflared を独立したサービスとして起動できます:
# ターミナル 1:cloudflared トンネルサービスを起動
pnpm --filter n8n-containers services --services cloudflared
# ターミナル 2:ローカルで n8n を起動
pnpm dev
services コマンドの動作:
- cloudflared を起動し、
host.docker.internal:5678(ローカルの n8n)を指すように設定 - cloudflared のメトリクスエンドポイントからパブリックトンネル URL を取得
WEBHOOK_URLとN8N_PROXY_HOPS=1を含む.envファイルをpackages/cli/bin/.envに書き込みpnpm devおよびpnpm startは dotenv 経由で自動的にこの.envファイルを読み込み
終了後は以下でクリーンアップ:
pnpm --filter n8n-containers services:clean
次のステップ
- Docker イメージ の README で、より詳しい Docker 設定情報を確認
- n8n の設定方法やスケーリング方法を学ぶ
- または、クイックスタートガイドで n8n の使い方を試す