2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

n8nセルフホストで57個の業務自動化ワークフローを月額4,000円で運用する

2
Posted at

この記事は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例、設計パターン、監視体制までを解説します。

目次

  1. n8nを選んだ理由
  2. VPS構成とセットアップ手順
  3. 57ワークフローの設計思想
  4. 実際のワークフロー4例
  5. n8nでERP APIを叩く設計パターン
  6. 監視体制
  7. コスト比較の詳細
  8. 運用で得た知見

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通知: エラー内容を記録]

処理の流れ:

  1. Gmail APIで未処理メールを取得
  2. Alibaba発注確認、配送通知、請求書をAIで分類
  3. ERPの該当テーブルに自動登録
  4. 処理済みラベルを付与

導入前は毎朝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自動化実践」シリーズの一部です。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?