n8nを使ってみたいけど、クラウド版の実行回数制限が気になっていませんか?
月2,500回の制限にすぐ引っかかって、自動化したいワークフローが動かせない…という方も多いはずです。
この記事では、n8nをセルフホストして実行回数を無制限にする方法をまとめます。DockerとVPSを使えば、月数百円〜から本格的な自動化環境が手に入ります。
結論、セルフホスト版のn8nなら実行制限ゼロで使えます。設定も思ったよりシンプルです。
初めてセルフホストに挑戦する方は基本編から、すでにDockerを触ったことがある方は応用編からどうぞ。
この記事で分かること:n8nのクラウド版との違い/Docker Composeでの導入手順/安定運用のための設定/よくあるトラブルの対処法
n8nとは?クラウド版とセルフホスト版の違い
n8nはワークフロー自動化ツールです。GmailとSlack、NotionとGoogle Sheetsなど、さまざまなサービスを繋げて自動化できます。
コードを書かなくても、ブロックを繋げる操作だけでワークフローが作れます。「AがあったらBをする」という流れをビジュアルで組める、ノーコードに近い感覚です。
クラウド版の実行制限とは
n8nには公式のクラウド版があります。登録してすぐ使えるのでお手軽なのですが、無料プランだと月2,500回の実行数制限があります(執筆時点)。
複数のワークフローを動かしていると、思ったよりも早く上限に達します。有料プランは月20ドル〜で、本格的に使うには費用がかかります。
セルフホスト版のメリットとデメリット
メリット
- 実行回数が無制限
- ワークフロー数も制限なし
- データが手元のサーバーに残る(プライバシー面で安心)
- カスタムノードを追加できる
- 月のコストをVPS代だけに抑えられる
デメリット
- 自分でサーバーを管理する必要がある
- アップデートやバックアップは自分で行う
- 初期設定にある程度の手間がかかる
デメリットはDocker Composeを使うことでかなり軽減できます。以下の手順通りに進めれば、初めての方でも15〜30分で動かせます。
セルフホストに必要なもの
n8nをセルフホストするには、常時稼働できるサーバー環境が必要です。
選択肢1:VPS(クラウドサーバー)
インターネットからアクセスできる環境が必要な場合は、VPSを使うのが定番です。
n8nを動かすのに必要なスペックの目安:
- CPU:1コア以上(2コア推奨)
- メモリ:1GB以上(2GB推奨)
- ストレージ:20GB以上
月1,500円前後のプランで十分動きます。日本語サポートがあって使いやすいVPSとしては、XServer VPSやConoHa VPSがよく選ばれています。どちらも2GBメモリのプランから試せます。
選択肢2:自宅の常時稼働マシン
Mac miniやRaspberry Piのように、電源を入れっぱなしにできるマシンがあれば、自宅サーバーとしても使えます。
外部からWebhookを受け取りたい場合は、別途Cloudflare TunnelやVPNの設定が必要になります(後の応用編で解説します)。
どちらの場合も必要なソフトウェア:
- Docker(Desktop or Engine)
- Docker Compose
【基本編】DockerでのN8nセルフホスト手順
ここからが実際の導入手順です。コマンドを順番にコピペするだけで動かせます。
ステップ1:Dockerのインストール確認
まずDockerが入っているかを確認します。ターミナルを開いて以下を実行してください。
docker --version
docker compose version
どちらもバージョン番号が表示されればOKです。まだ入っていない方はDocker公式サイトからインストールしてください(Mac用のDocker Desktopが一番簡単です)。
ステップ2:作業ディレクトリとDocker Composeファイルの作成
任意の場所に作業フォルダを作ります。
mkdir ~/n8n && cd ~/n8n
次に、以下の内容でdocker-compose.ymlを作成します。
version: "3"
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_PROTOCOL=http
- GENERIC_TIMEZONE=Asia/Tokyo
- TZ=Asia/Tokyo
volumes:
- ~/.n8n:/home/node/.n8n
これがローカル環境での最小構成です。動作確認に使えます。
ステップ3:n8nを起動する
docker compose up -d
起動後、ブラウザでhttp://localhost:5678を開くとn8nの画面が表示されます。
初回起動時はアカウント作成画面が出ます。メールアドレスとパスワードを設定すれば完了です。
💡 実際にやってみた
Mac mini M4 Pro(24GB)にDockerでn8nを導入したときの記録です。
docker compose up -dを実行してから、ブラウザで開けるまでは約2分でした。Dockerイメージのダウンロード込みなので、回線速度によって変わります。つまずいたのはポート競合でした。他のサービスが5678番を使っていたため、起動時にエラーが出ました。docker-compose.yml の ports を
"5679:5678"に変えてアクセスURLを5679に変更することで解決。かかった時間:約15分(Docker自体は事前に導入済みの状態から)
つまずいたポイント:ポート競合(5678→5679に変更して解決)
結果:Mac miniで常時ヘッドレス稼働中。現在6本以上のワークフローが止まることなく動いています。
ステップ4:VPS環境での外部アクセス設定
VPSで動かす場合は、外部からアクセスできるようにする設定が必要です。
確認・設定する箇所:
- ファイアウォールで5678番ポートを開放する
N8N_HOSTをVPSのIPアドレスまたはドメイン名に変更する- 本番運用ではHTTPS(SSL)設定を必ず行う
ドメインとSSLを設定する場合の環境変数:
environment:
- N8N_HOST=your-domain.com
- N8N_PROTOCOL=https
- N8N_PORT=5678
- WEBHOOK_URL=https://your-domain.com/
SSL証明書の取得にはLet’s Encryptが無料で使えます。Nginx + Certbotの組み合わせが定番です。
【応用編】安定運用のための設定とカスタマイズ
基本的な設定ができたら、次は長期運用に向けた設定を加えていきましょう。
データのバックアップ設定
n8nのワークフローや認証情報は~/.n8nディレクトリに保存されます。このディレクトリをまるごとバックアップするだけでOKです。
cronで自動バックアップする設定例:
# 毎日深夜2時にバックアップ
0 2 * * * tar -czf ~/backups/n8n-$(date +%Y%m%d).tar.gz ~/.n8n
バックアップファイルが増えすぎないよう、古いものを自動削除する設定も追加しておくと管理が楽になります。
# 30日以上前のバックアップを削除
find ~/backups -name "n8n-*.tar.gz" -mtime +30 -delete
自動更新の設定
n8nは定期的にバージョンアップされます。以下のコマンドで最新版に更新できます。
docker compose pull
docker compose up -d
まとめてシェルスクリプトにしておくと、アップデート作業が1コマンドで済みます。
#!/bin/bash
# update-n8n.sh
cd ~/n8n
tar -czf ~/backups/n8n-$(date +%Y%m%d)-pre-update.tar.gz ~/.n8n
docker compose pull
docker compose up -d
echo "n8n updated at $(date)"
Cloudflare Tunnelを使ったSSL不要運用
Cloudflare Tunnelを使うと、VPSへのポート開放やSSL証明書取得が不要になります。セキュリティ面でも優れており、VPS初心者の方に特におすすめです。
手順の概要:
- Cloudflareアカウントを作成(無料)
- cloudflaredをサーバーにインストール
- トンネルを作成してn8nに向ける
- ドメインをCloudflareのDNSに向ける
docker-compose.ymlにcloudflaredサービスを追加するだけで動くので、設定がシンプルに済みます。
PostgreSQLへの移行でパフォーマンス向上
デフォルトではSQLiteが使われています。ワークフローが増えたり、実行ログが大量に溜まると動作が重くなることがあります。PostgreSQLに移行すると、処理が安定します。
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n_user
- DB_POSTGRESDB_PASSWORD=your_secure_password
- GENERIC_TIMEZONE=Asia/Tokyo
volumes:
- ~/.n8n:/home/node/.n8n
depends_on:
- postgres
postgres:
image: postgres:15
restart: always
environment:
- POSTGRES_USER=n8n_user
- POSTGRES_PASSWORD=your_secure_password
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
メモリ使用量の最適化
大量のワークフローを動かす場合や、処理データが多い場合、Nodeのメモリ制限に引っかかることがあります。環境変数で上限を引き上げておきましょう。
environment:
- NODE_OPTIONS=--max-old-space-size=2048
2GBメモリのVPSでも、この設定で安定して動き続けます。
よくあるトラブルと対処法
n8nが起動しない
まずはログを確認します。
docker compose logs -f n8n
よくある原因と対処法:
- ポートが使用中:docker-compose.yml の ports を「5679:5678」のように変更する
- 書き込み権限がない:
chmod 755 ~/.n8nを実行する - Dockerが起動していない:
docker psでコンテナ一覧を確認する - イメージのダウンロード失敗:
docker compose pullを再実行する
Webhookが外部から届かない
VPS環境でWebhookを受け取れない場合は、以下を確認します。
- ファイアウォールでポートが開放されているか
WEBHOOK_URL環境変数が正しく設定されているか- n8nのWebhookノードのURLが正しいか
ワークフローが途中で止まる
デフォルトのタイムアウトは5分です。長時間の処理には以下の設定を追加します。
environment:
- EXECUTIONS_TIMEOUT=3600
- EXECUTIONS_TIMEOUT_MAX=7200
docker compose down を実行したらデータが消えた
docker compose down -vコマンドを実行すると、ボリュームごと削除されます。データを保持したままコンテナを停止するにはdocker compose stopを使いましょう。
停止のコマンド使い分け:
docker compose stop:コンテナを停止、データは保持docker compose down:コンテナを削除、データは保持docker compose down -v:コンテナとボリュームを削除(データも消える)
更新後にワークフローが動かなくなった
n8nのメジャーバージョンアップ時は、ノードの仕様が変わることがあります。更新前に必ずバックアップを取り、公式のCHANGELOGを確認してから更新するのが安全です。
問題が起きた場合は、特定のバージョンに固定することもできます。
image: docker.n8n.io/n8nio/n8n:1.x.x
まとめ
- セルフホスト版n8nは実行回数・ワークフロー数ともに無制限
- Docker Composeを使えば15〜30分で導入できる
- 自宅の常時稼働マシンまたはVPSがあればOK
- バックアップと定期更新を設定しておくと長期運用が安定する
- Cloudflare TunnelでSSL設定の手間を省ける
n8nの環境が整ったら、次はワークフローを組んでいきましょう。下の記事ではn8nの基本的なワークフロー構築と実践レシピを解説しています。
→ n8nのワークフロー入門|非エンジニアが使える自動化レシピ3選
0人が役に立ったと評価


コメント