メインコンテンツまでスキップ

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 イメージをダウンロードします:

Docker Desktop

または、コマンドラインで最新版または特定バージョンをプルすることも可能です:

# 最新(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 devpnpm start でローカルに n8n を実行したい場合は、cloudflared を独立したサービスとして起動できます:

# ターミナル 1:cloudflared トンネルサービスを起動
pnpm --filter n8n-containers services --services cloudflared

# ターミナル 2:ローカルで n8n を起動
pnpm dev

services コマンドの動作:

  1. cloudflared を起動し、host.docker.internal:5678(ローカルの n8n)を指すように設定
  2. cloudflared のメトリクスエンドポイントからパブリックトンネル URL を取得
  3. WEBHOOK_URLN8N_PROXY_HOPS=1 を含む .env ファイルを packages/cli/bin/.env に書き込み
  4. pnpm dev および pnpm start は dotenv 経由で自動的にこの .env ファイルを読み込み

終了後は以下でクリーンアップ:

pnpm --filter n8n-containers services:clean

次のステップ

  • Docker イメージ の README で、より詳しい Docker 設定情報を確認
  • n8n の設定方法やスケーリング方法を学ぶ
  • または、クイックスタートガイドで n8n の使い方を試す