この記事はZennにも投稿しています。
【n8n×VPS】57個の業務自動化ワークフローを月額4,000円で運用する方法
中小建設会社の業務システム(ERP)を一人で開発・運用しています。LINE、Gmail、Google Sheets、Supabase――社内で使うサービスが増えるたびに「手作業で繋ぐ」時間も増えました。Zapierで自動化しようとしましたが、57ワークフローを動かすと月額数万円になります。
結論から言うと、月額約4,000円のVPS(Xserver VPS 4GB)にn8nをセルフホストして、57個のワークフローを3か月間ノーダウンで稼働させています。年間コスト削減額は約50万円です。
この記事では、n8nの選定理由とVPS構成から、57ワークフローの設計思想、実際のワークフロー4例、設計パターン、監視体制までを解説します。
目次
n8nを選んだ理由
SaaS自動化ツールとのコスト比較
| Zapier | Make | n8n(セルフホスト) | |
|---|---|---|---|
| 月額 | ¥3,000〜 | ¥1,800〜 | VPS代のみ |
| ワークフロー数 | 5〜20 | プランで制限 | 無制限 |
| 月間実行回数 | 100〜750 | 1,000〜10,000 | 無制限 |
| Webhook | 有料プラン | 有料プラン | 標準搭載 |
| カスタムコード | 制限あり | 制限あり | JavaScript/Python自由 |
| データ保管場所 | 米国 | EU | 自サーバー |
| AI Agent連携 | 限定的 | 限定的 | 70+ノード(LLM/Embedding/RAG) |
57ワークフロー・月数千回実行という規模では、SaaSの従量課金が効いてきます。n8nセルフホストならVPS代の固定費だけで済みます。
Vercel Hobbyプランの壁
当初はVercelのCron Jobsで自動化していました。ですが、Hobbyプランは1日1回が上限で、10分ごとのGmail同期も15分ごとのLINEバッファ処理も実現できません。タイムアウトも10秒と短く、バッチ処理が途中で打ち切られる問題がありました。
n8n移行後、同期間隔を10分に短縮できました。メール受信からERP反映までのタイムラグが1日→10分になったのは、業務上の大きな変化でした。
VPS構成とセットアップ手順
スペック
- Xserver VPS 4GBプラン(4vCPU / 6GB RAM / 150GB NVMe)
- Ubuntu 22.04 LTS
- Docker Engine 24.x + Docker Compose V2
月額約4,000円です。n8n・Uptime Kuma・Caddyの3コンテナを動かしてメモリ使用率は約40%で安定しています。
Docker Compose
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Tokyo
- TZ=Asia/Tokyo
- N8N_SECURE_COOKIE=false
volumes:
- n8n_data:/home/node/.n8n
uptime-kuma:
image: louislam/uptime-kuma:1
restart: always
ports:
- "3001:3001"
volumes:
- uptime_data:/app/data
caddy:
image: caddy:2
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
volumes:
n8n_data:
uptime_data:
caddy_data:
補足:
versionキーはDocker Compose V2で非推奨になったため省略しています。n8nの認証は初回アクセス時にWeb UIで設定します(N8N_BASIC_AUTH_*環境変数は1.x系で廃止済み)。
セットアップ手順
# VPSにSSH接続
ssh root@your-server-ip
# Dockerインストール
curl -fsSL https://get.docker.com | sh
# 作業ディレクトリ作成・移動
mkdir -p /opt/automation && cd /opt/automation
# docker-compose.yml と Caddyfile を配置(上記の内容)
# 起動
docker compose up -d
# 動作確認
docker compose ps
http://your-ip:5678 でn8nにアクセスできます。
CaddyでHTTPS化
n8n.yourdomain.com {
reverse_proxy n8n:5678
}
status.yourdomain.com {
reverse_proxy uptime-kuma:3001
}
CaddyはLet's Encrypt証明書を自動取得・更新します。Nginxのように証明書の手動管理は不要です。
57ワークフローの設計思想
カテゴリ別構成
| カテゴリ | 件数 | 実行頻度 | 例 |
|---|---|---|---|
| コア同期 | 6 | 3〜15分 | Gmail同期、LINEバッファ処理、ステータス監視 |
| アラート・監視 | 22 | 1〜4時間 | 配送アラート、支払同期、コスト超過検知 |
| LINE分析 | 9 | 4時間〜日次 | 分類精度集計、コミュニケーション評価 |
| 日次バッチ | 12 | 1日1回 | レポート生成、データ整合性チェック |
| 週次・月次 | 8 | 週1〜月1 | PDCA週報、資金繰り予測、サブスク同期 |
全てを高頻度にする必要はありません。「Gmail同期は10分ごとだが、サブスク同期は月1回で十分」というように、ビジネス上の緊急度で頻度を決めています。これでサーバー負荷を抑えつつ、必要な即時性を確保できます。
実際のワークフロー4例
1. Gmail → ERP自動同期(10分間隔)
[Schedule Trigger: 10分]
→ [HTTP Request: POST /api/cron/gmail-erp-sync]
→ [IF: status !== 200]
→ [ERP通知: エラー内容を記録]
処理の流れ:
- Gmail APIで未処理メールを取得
- Alibaba発注確認、配送通知、請求書をAIで分類
- ERPの該当テーブルに自動登録
- 処理済みラベルを付与
導入前は毎朝30分かけてメールを目視確認し、手動でERPに入力していました。それがゼロになりました。
2. LINEメッセージ → タスク自動抽出(スマートバッファ方式)
57ワークフローの中で最も設計に時間をかけた部分です。
[Webhook: LINE新着受信]
→ [フィルタ: スタンプ・1文字・定型挨拶を除外]
→ [Wait: 60秒]
→ [同一グループの新着チェック]
→ 新着なし → [HTTP Request: 分類API呼び出し]
→ 新着あり → [終了(次のメッセージに任せる)]
なぜ60秒待つのか。 LINEのビジネスチャットでは連投が常態化しています。「見積もり」「品川の件」「350万で」と3通に分かれたメッセージを1通ずつAI分類すると、文脈が欠落して精度が落ちます。60秒のバッファで「一連の会話」として結合してからAIに渡すことで、分類精度を維持しています。
以前は15分間隔のバッチ処理でした。レイテンシは15分から約2分に短縮されました。
3. 入出金の自動照合(2時間間隔)
[Schedule Trigger: 2h]
→ [HTTP Request: POST /api/cron/bank-reconciliation]
→ 銀行CSVとERPの支払い記録をマッチング
→ スコアリング(金額±5%、日付±30日、取引先名の類似度)
→ HIGH確信度 → 自動照合
→ LOW確信度 → ERP通知で手動確認を促す
月374件の銀行取引のうち、約85%を自動照合しています。経理作業は月3時間から30分に短縮されました。
4. 配送トラッキング(30分間隔)
[Schedule Trigger: 30min]
→ [HTTP Request: POST /api/cron/delivery-sync]
→ GmailからAmazon・ヨドバシ・モノタロウ等の配送メールを取得
→ 追跡番号と配送状況をパース
→ ERPの発注レコードに自動紐付け
「あの部品いつ届く?」の確認電話がなくなりました。現場の職人がERPのモバイル画面で配送状況を直接確認できます。
n8nでERP APIを叩く設計パターン
n8nにロジックを書かない
n8n内にビジネスロジックを書くこともできます。ですが、n8nをスケジューラーとルーターに限定しています。
n8n(スケジューラー)
→ HTTP Request → ERP API (/api/cron/xxx)
↓
Next.js / TypeScript(ロジック)
↓
Supabase(DB)
理由は4つです。
- テスト: TypeScriptならユニットテストでロジックを検証できます。n8nのノード内コードはテストしにくい
- デプロイ独立: ERPのロジック変更はVercelにデプロイするだけです。n8n側を触る必要がありません
- 型安全: n8nのJavaScriptノードには型がありません
- Git管理: ロジックは全てGitで履歴追跡できます
Cron認証の実装
// ERP側: 全Cronエンドポイント共通の認証ミドルウェア
export function verifyCronAuth(request: Request): boolean {
const auth = request.headers.get('Authorization');
return auth === `Bearer ${process.env.CRON_SECRET}`;
}
n8n側では全HTTP Requestノードのヘッダーに Authorization: Bearer {{$env.CRON_SECRET}} を設定します。CRON_SECRET はn8nの環境変数として登録しておきます。
これにより、Cronエンドポイントへの外部からの不正アクセスを防いでいます。
監視体制
Uptime Kuma
n8nと同じVPSでUptime Kumaを稼働させ、以下を監視しています。
- n8n本体の死活
- ERPの主要エンドポイント(ヘルスチェック)
- 外部サービス(Supabase、Vercel)の応答
ダウン検知から数秒でメール通知が届きます。
n8nのエラーハンドリング
n8nのError Triggerノードを使えば、ワークフロー失敗時に自動で通知を飛ばせます。57ワークフローを回していると、外部APIのレート制限やタイムアウトで1日1〜2回は何か失敗します。このノードなしでは、障害に気付けないまま数日経つことになります。
コスト比較の詳細
Before(Zapier + 手作業)
| 項目 | 月額 |
|---|---|
| Zapier Professional(57ワークフロー相当) | ¥12,000 |
| 手作業の人件費(メール確認・データ入力・照合で月20h × ¥2,000) | ¥40,000 |
| 合計 | ¥52,000 |
After(n8nセルフホスト)
| 項目 | 月額 |
|---|---|
| Xserver VPS 4GB | ¥4,000 |
| Gemini API(AI分類用) | ¥2,000 |
| 残存する手作業(月3h × ¥2,000) | ¥6,000 |
| 合計 | ¥12,000 |
月額4万円、年間約50万円の削減です。 VPS代は初月で回収できました。
運用で得た知見
VPS障害への備え
Xserver VPSは3か月運用して一度もダウンしていません。万一落ちても docker compose up -d で全コンテナが復旧します。データはDockerボリュームに永続化されているため消えません。
加えて、Vercel側のCronをフォールバックとして残しています。VPSが落ちても最低限の日次処理は継続されます。
n8nのアップデート
docker compose pull
docker compose up -d
2コマンドで完了します。ダウンタイムは数秒です。
セキュリティ対策
- n8nのWeb UIはオーナー認証(初回セットアップ時に設定)
- CronエンドポイントはBearer Token認証
- VPSのパケットフィルターで80/443以外を閉鎖
- SSHは公開鍵認証のみ(パスワードログイン無効)
バックアップ
n8nのワークフローはJSON形式でエクスポートできます。Web UIから全ワークフローを一括エクスポートし、定期的にGitリポジトリに保存しておくと安心です。
まとめ
| 指標 | 値 |
|---|---|
| 稼働ワークフロー数 | 57 |
| VPS月額 | ¥4,000 |
| 自動化で削減した月間作業時間 | 17時間 |
| 年間コスト削減額 | 約50万円 |
| セットアップ所要時間 | 約2時間 |
| 運用3か月間のダウンタイム | 0 |
高額なSaaS自動化ツールがなくても、月4,000円のVPSとn8nで十分に業務自動化は実現できます。特に「ワークフロー数が多いが1件あたりの処理は軽い」ケースでは、セルフホストのコスト優位性が際立ちます。
n8n 2.0の恩恵(2025年12月〜)
2025年12月にリリースされたn8n 2.0で、セルフホスト版の運用品質が大きく向上しました。保存と公開が分離されるDraft/Published機能、Code nodeを分離実行するTask Runners(デフォルト有効)、SQLiteプーリングによる最大10倍の高速化。57ワークフローを運用している身としては、Draft/Publishedが特にありがたい変更です。テスト中に本番を壊すリスクがなくなりました。
他のセルフホスト構成との比較
「AWS ALB+ECS+RDSでn8nを運用」するような構成もありますが、月額$120〜150(約18,000〜22,000円)かかります。中小企業の1人運用ならXserver VPSの月4,000円で十分です。
具体的なワークフローの作り方や、LINE連携・Gmail連携の詳細を知りたい方がいれば、続編として個別記事を書く予定です。フィードバックは X(@Nenjunemuidesu) まで。
シリーズ記事
この記事は「中小企業AI自動化実践」シリーズの一部です。