「PCを買い替えたらn8nの環境を作り直し…」「ローカル環境を汚したくない」「クライアントに渡す環境が毎回バラバラになる」
n8nをコピペ一発で構築できるDocker Compose設定ファイルがあれば、どこでも同じ環境を3分以内で再現できます。
私はランサーズ・ここナラ・クラウドワークスで累計200件以上の業務自動化案件を受注しています(ランサーズのプロフィールはこちら・残念評価ゼロ)。n8nは「GASより複雑な条件分岐が必要」「APIの繋ぎ込みを視覚的に管理したい」案件で特に重宝しており、現在も複数クライアントの環境として稼働中です。
n8nをはじめて案件に採用したとき、クライアントから「環境ごとそのまま納品してほしい」と言われました。以来、データ永続化・日本語設定(JST対応)・Webhook受信テストまで対応したDocker Compose構成が私のスタンダードになっています。この記事では、そのテンプレートをそのまま公開します。
この記事で分かること:
- コピペですぐ使えるdocker-compose.ymlの全コード(動作確認済み)
- データが消えない永続化設定の仕組みと落とし穴
- スケジュール実行がズレない日本語設定(JST対応)の正しい方法
- ローカルでWebhookをテストできるトンネル設定
- 実案件で遭遇したトラブルの解決策
> 設定手順で詰まった箇所があれば、コメントで気軽に質問してください。
> 環境構築の代行・ワークフロー設計のご依頼は記事末尾からも承っています。
> → 関連記事:n8n × ChatGPT API連携でAI自動化ワークフローを構築する方法
Zapier・Make・GASと比較——なぜn8n×Dockerを選ぶのか
「n8nって聞いたことあるけど、ZapierやMakeじゃダメなの?」とクライアントによく聞かれます。提案時に実際に使っている比較表を公開します。
| ツール | 月額コスト | 設定難易度 | 環境の可搬性 | データの自己管理 | タスク上限 |
|——–|———–|———–|————|—————-|———–|
| Zapier | $19.99〜 | 低(ノーコード) | × SaaSのみ | × Zapier管理 | あり |
| Make(旧Integromat) | $9〜 | 低(ノーコード) | × SaaSのみ | × Make管理 | あり |
| GAS | 無料 | 中(JS必須) | △ Googleに依存 | △ | 6分/実行 |
| n8n × Docker | 月500円〜(VPS代のみ) | 低(コピペでOK) | ◎ どこでも再現 | ◎ 完全自己管理 | なし |
n8n×Dockerを選ぶ理由は3つです:
1. コスト: SaaS版(月$20〜)と比べて年間約25,000円の削減
2. 制限なし: Zapier/Makeのタスク上限・GASの実行時間制限どちらも存在しない
3. 可搬性: docker-compose.yml 1ファイルでどこでも同じ環境を再現できる
複数クライアントに「環境ごと納品」する案件では、この可搬性が最大の決め手になっています。
n8nをコピペ一発で構築できるdocker-compose.yml
以下のコードをコピーして、docker-compose.yml という名前で保存してください。これが現在のベストプラクティスを詰め込んだ構成です。
yaml
version: “3.8”
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n-app
restart: always
ports:
– “5678:5678”
environment:
– GENERIC_TIMEZONE=Asia/Tokyo
– TZ=Asia/Tokyo
– N8N_BASIC_AUTH_ACTIVE=true # 簡易認証を有効化
– N8N_BASIC_AUTH_USER=admin
– N8N_BASIC_AUTH_PASSWORD=password # 任意のパスワードに変更
volumes:
– n8n_data:/home/node/.n8n
# ▼ローカルPCでWebhookをテストしたい場合のみコメントアウトを外す
# command: start –tunnel
volumes:
n8n_data:
コピペ時に注意すべき3点:
- イメージ名は n8nio/n8n(
n8n-ioではなくn8nio、ハイフンなし) - 環境変数 N8N_BASIC_AUTH_ACTIVE はスペースなし・全て大文字
- ポート指定は 5678:5678 とクォートで囲む(YAMLの数値誤解釈を防ぐ)
なぜこの設定なのか? 3つの技術的ポイント
1. データ永続化(Volumes)——消えないワークフローの作り方
Docker初心者がやりがちなミスが、コンテナを再起動したら「作ったワークフローが全部消えた」という悲劇です。
私も最初の案件でこれをやらかしました。volumes 設定を省いたままテスト用ワークフローを10本ほど作り込んだところ、docker compose down の一発で全部消滅。再現に約2時間かかりました。
volumes: n8n_data:/home/node/.n8n という名前付きボリュームの記述により、コンテナを削除してもデータはDocker内部の安全な場所に保管され続けます。
| 方式 | メリット | デメリット |
|------|---------|-----------|
| 名前付きボリューム(推奨) | 権限自動管理、ポータブル | パスが直感的でない |
| バインドマウント | パスが分かりやすい | Permission denied が頻発 |
初心者は名前付きボリュームの利用を強く推奨します。
2. 日本語設定——スケジュールのズレをゼロにする正しいタイムゾーン設定
n8nはデフォルトでUTC(世界協定時)で動きます。日本語設定(JST対応)を怠ると、Cronノードで「朝9時に送信」としたつもりが「夕方18時」に動いてしまいます。
実際にあるEC案件では、この日本語設定を忘れたまま本番稼働させてしまい、受注通知メールが夜中の2時に届くというクレームになりました。環境変数に GENERIC_TIMEZONE と TZ の両方をセットすることで、ログもスケジュールもJSTに統一されます。片方だけでは不十分なケースがあるため、必ず両方記述してください。
3. Webhookのテスト用トンネル(--tunnel)——ngrok不要で外部連携テスト
通常、ローカルPC(localhost)でn8nを動かしている場合、SlackやGoogleフォームからのWebhook通知を受け取ることはできません。
しかし、command: start tunnel を有効にすると、n8nが一時的なhttpsの公開URLを自動発行します。ngrokの別途設定が不要になり、私のクライアント案件では外部連携テストの平均所要時間が約30分短縮できています。
> 注意: tunnel はあくまで開発・テスト用機能です。本番運用(VPSなど)では使用せず、正しいドメイン・リバースプロキシ設定を行ってください。
【実践】起動から初期設定までの3ステップ
Step 1: フォルダとファイルの作成
適当なフォルダ(例: my-n8n)を作成し、その中に先ほどの docker-compose.yml を置きます。
my-n8n/
└── docker-compose.yml
Step 2: コンテナの起動
ターミナル(またはコマンドプロンプト)でそのフォルダを開き、以下のコマンドを実行します。
bash
docker compose up -d
初回はイメージのダウンロードが入りますが、2回目以降は10〜30秒で起動します。docker compose logs -f でログを確認しながら待つと安心です。
Step 3: ブラウザでアクセスして初期設定
ブラウザを開き、http://localhost:5678 にアクセスします。設定ファイルに記述したユーザー名(admin)とパスワードでログインし、Ownerアカウントの設定を済ませれば完了です。慣れればここまで3分以内に終わります。
VPSへの本番デプロイ——月額500円で自分専用の自動化サーバーを構築する
ローカルで動作確認できたら、次はVPS(ConoHa WINGやさくらのVPS等)への移行です。
手順はシンプルで、docker-compose.yml をそのままVPSにアップロードして docker compose up -d するだけ。ただし本番環境では以下の追加設定が必要です。
yaml
environment:
– N8N_HOST=your-domain.com # 独自ドメインを設定
– N8N_PROTOCOL=https # HTTPS必須
– WEBHOOK_URL=https://your-domain.com/ # Webhook受信URL
NginxやTraefikをリバースプロキシとして組み合わせることで、SSL証明書(Let's Encrypt)の自動取得も可能です。月額500〜1,000円のVPSで運用すれば、SaaS版n8nの月額約3,000円と比べて年間で約25,000円のコスト削減になります。複数クライアント案件を受注しているなら、この節約効果は特に大きいです。
トラブルシューティングとFAQ
Q: Permission denied で起動しない
原因: データの保存場所をローカルのフォルダ(バインドマウント)に指定した場合によく起きます。
対策: 今回紹介した volumes: n8n_data:(名前付きボリューム)形式なら、Dockerが権限を自動管理するためこのエラーは起きません。初心者は名前付きボリュームの利用を強く推奨します。
Q: バージョンを固定したい
業務利用などで勝手にアップデートされると困る場合は、image: n8nio/n8n:1.83.0 のようにタグでバージョンを指定してください。現在の安定版はDocker Hubの公式ページで確認できます。
Q: ポートを変えたい
他のサービスと競合する場合は 5679:5678 のように左側のポート番号だけ変更してください。右側(コンテナ内ポート)は 5678 固定です。
Q: Basic認証が効かない
N8N_BASIC_AUTH_ACTIVE が true になっているか確認してください。スペースや大文字・小文字のミスが最も多いトラブル原因です。コピペ時に余分な空白が混入するケースがあるため、テキストエディタで確認してから保存してください。
まとめ
Docker Composeを使えば、n8nの環境構築は「設定ファイルを置いてコマンドを叩くだけ」になります。
- 再現性が高い: PCを変えても、VPSに移行しても、同じ環境が3分で作れる
- データが安全: 名前付きボリュームでワークフローが消えない
- コストが安い: VPSにデプロイすればSaaS版の約1/6以下のコストで運用可能
200件以上の自動化案件を通じて辿り着いた、この構成をそのまま活用してください。
次のステップ
この環境が構築できたら、次はワークフローの作成に進みましょう。
- n8nで最初のワークフローを作る: GmailとGoogleスプレッドシートを繋いで通知を自動化する方法
- n8n × ChatGPT API連携: AIを組み込んだ自動化ワークフローの構築方法
- VPS本番デプロイ完全ガイド: Nginx + Lets Encrypt でHTTPS対応する手順
参考文献・リンク
- n8n Docker Compose Guide 公式ドキュメント
- Docker Hub: n8nio/n8n 公式イメージ
—
この記事の内容に関する開発・自動化のご依頼はお気軽にご相談ください。
累計200件以上の受注実績・残念評価ゼロ。


コメント