n8n をセルフホストで動かす方法:VPSへのデプロイ手順を図解で解説

自動化・ノーコード

※本記事にはアフィリエイトリンクが含まれます。

クラウド版のn8nを試してみて、料金表を見た瞬間に閉じた。

Starterプランで月約3,300円(年払い)。ワークフローが増えるたびに実行回数の上限が気になって、上位プランへの移行を考え始める。そのスパイラルに入る前に、VPSでのセルフホストを試してみた話を書く。

この記事でわかること:

  • n8n セルフホストとクラウド版のコスト比較(実際の費用感)
  • VPS + Docker Compose でn8nを本番稼働させる手順
  • 起動後に詰まりやすいポイントと対処法
n8n workflow automation server
Photo by Growtika on Unsplash

セルフホストとクラウド版、どちらにするか迷った話

月額コストの実態(クラウド版 vs VPS費用の比較)

n8nクラウド版のStarter(2026年4月時点)は、年払いで月額約20ユーロ、日本円で3,300円前後。月払いにすると24ユーロ、4,000円ほどになる。ワークフローの実行回数に上限があり、上位プランのProになると月額約50ユーロ(約8,000円)まで跳ね上がる。

一方、セルフホスト(Community Edition)はライセンス料が完全無料。VPSの月額費用だけで運用できる。

僕が使っているのはConoHaのVPS、メモリ2GB / 1コアのプランで月額1,300円ほど。でこれを動かしていて、今のところ30本超のワークフローを実行しているが費用は変わらない。

比較項目 クラウド版(Starter) セルフホスト(VPS)
月額費用 約3,300円〜 約1,300円〜
実行回数上限 月2,500回(Starterの場合) 無制限
サーバー管理 不要 必要
アップデート 自動 手動
バックアップ 自動 自分で設定

コストだけ見るとセルフホストの方がずっと安い。ただし、サーバー管理のコストを見落としがちなので後述する。

セルフホストを選んだ理由と覚悟しておくべきこと

選んだ理由はシンプルで、「ワークフローが増えても固定費が変わらないこと」だった。フリーランスとして自動化を進めるほど実行回数が増えるので、使えば使うほど費用が上がる構造は向いていないと感じた。

ただ、セルフホストにはデメリットもある。

  • n8nのバージョンアップは自分でやる必要がある(コマンドを叩くだけだが)
  • VPSが落ちたら自分で復旧する(月1回程度は確認が必要)
  • 最初のセットアップに2〜3時間かかる

「サーバー管理が苦手」「とりあえずn8nを使ってみたい」段階ならクラウド版の方が合っている。ある程度使い込んでからセルフホストに移行するのでも十分だと思う。


VPSでn8nを動かすために必要な準備

VPS選び(スペックとコストの現実的な最低ライン)

n8nをVPSで動かすための最低スペックはメモリ1GBとされているが、正直1GBだと複数ワークフローの同時実行でメモリ不足になることがある。2GBを推奨する。

主要なVPSサービスの月額目安(2026年4月時点):

  • ConoHa VPS(2GB):約1,300円/月
  • さくらのVPS(2GB):約1,500円/月
  • Xserver VPS(2GB):約1,500円/月前後

OSはUbuntu 22.04 LTSを推奨。多くの解説記事がUbuntuをベースにしているため、詰まったときに情報を探しやすい。

Dockerとdocker-composeのインストール確認

VPSを用意したら、SSHでサーバーに接続し、DockerとDocker Compose(V2)をインストールする。

# Docker のインストール(Ubuntu の場合)
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker

# Docker Compose V2 のインストール確認
docker compose version

Docker Compose version v2.x.x が表示されれば準備OK。docker-compose(ハイフンあり)はV1の旧形式で、最新のn8nはV2を推奨している。


docker-compose.yml の設定と起動手順

docker compose yml configuration
Photo by Ilnur on Unsplash

設定ファイルの中身を1行ずつ解説

作業ディレクトリを作り、docker-compose.yml を作成する。設定の詳細はZennのn8n セルフホスト関連記事も参考になる。

mkdir ~/n8n && cd ~/n8n
nano docker-compose.yml

以下が基本的な設定ファイルの内容:

version: '3.8'

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=your-domain.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://your-domain.com/
      - GENERIC_TIMEZONE=Asia/Tokyo
    volumes:
      - n8n_data:[home-path]

volumes:
  n8n_data:

各設定の意味:

  • N8N_HOST:アクセスするドメイン名。後でNginxと組み合わせる
  • N8N_PROTOCOL:本番環境は https にする
  • WEBHOOK_URL:Webhookで外部からトリガーされるときのベースURL。ここが間違っているとWebhookが動かない
  • GENERIC_TIMEZONE:タイムゾーンを日本時間に設定

環境変数で設定するべき項目(N8N_HOST・N8N_PROTOCOL等)

セキュリティ上、認証情報は docker-compose.yml に直書きせず、.env ファイルにまとめることを推奨する。

# .env ファイルを作成
nano .env
N8N_HOST=your-domain.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://your-domain.com/
GENERIC_TIMEZONE=Asia/Tokyo

起動コマンドと動作確認の方法

# バックグラウンドで起動
docker compose up -d

# 起動確認
docker compose ps

# ログを確認(エラーが出ていないか)
docker compose logs -f n8n

n8n | Editor is now accessible via: http://localhost:5678/ のようなログが出れば起動成功。

この時点ではポート5678番でローカルアクセスできる状態。外部からアクセスできるようにするには次のドメイン設定が必要になる。


ドメイン設定とSSL対応(Nginx + Let’s Encrypt)

DNSレコードの設定手順

ドメインを用意し(お名前.comやムームードメイン等)、Aレコードの設定でドメインとVPSのIPアドレスを紐付ける。

設定例:

ホスト名: n8n.your-domain.com
タイプ: A
値: [VPSのIPアドレス]
TTL: 3600

DNSの反映には数分〜数時間かかる場合がある。ping n8n.your-domain.com でIPアドレスが返ってくれば反映済み。

Nginxのリバースプロキシ設定

NginxをリバースプロキシとしてVPSにインストールし、ポート80/443からポート5678のn8nに転送する設定を行う。SSLはLet’s Encryptを使った自動取得が一般的で、詳細はn8nコミュニティのセルフホスト事例まとめ(Zenn)も参考になる。

sudo apt install -y nginx
sudo nano [etc-path]

設定ファイルの例:

server {
    server_name n8n.your-domain.com;

    location / {
        proxy_pass http://localhost:5678;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

SSL証明書はCertbotで自動取得できる:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d n8n.your-domain.com

起動後によく詰まるポイントと対処法

server troubleshooting debugging
Photo by Domaintechnik Ledl.net on Unsplash

セットアップが終わっても、本番稼働して初めて気づく問題がいくつかある。僕が実際に詰まったものだけ書く。

Webhookが動かない

外部サービスからのWebhookがn8nに届かない場合、まず WEBHOOK_URL の設定を確認する。http:// ではなく https:// で設定されているか、ドメインが正しいかをチェック。VPSのファイアウォールでポート80・443が開放されていないことも原因になる(VPSの管理画面でセキュリティグループ設定を確認)。

メモリ不足でn8nが落ちる

複数ワークフローを同時実行するとOOM(Out of Memory)でプロセスが終了することがある。症状は「ワークフローが実行されなくなった」「管理画面にアクセスできない」。

# メモリの使用状況を確認
free -h
docker stats n8n-n8n-1

メモリが常に90%以上使われているなら、VPSのプランアップグレードを検討する。

docker compose up 後も画面が開かない

ポート5678が起動しているか確認:

curl http://localhost:5678

応答がない場合は docker compose logs n8n でエラーを確認する。環境変数の設定ミスや .env ファイルのパスが間違っていることが多い。

正直、最初のセットアップで詰まらない方が珍しいと思う。エラーが出たらまずログを確認して、メッセージをそのままWebで検索するのが一番早い。


まとめ:本番運用で3ヶ月使って感じたこと

VPS上のn8nで運用を始めて3ヶ月が経つ。費用は月1,300円でワークフロー数は30本を超えた。クラウド版を使っていたら、この時点でProプランへのアップグレードを検討していたはずだ。

良かった点は費用が固定なこと。悪かった点は、n8nのバージョンアップで一度ワークフローが動かなくなったこと(1時間くらい対応に取られた)。まあ、そういうものだと割り切っている。

「サーバーを触るのがそもそも不安」な人にはクラウド版を勧めるが、「多少手間がかかっても固定費を抑えたい」「ワークフローをたくさん作りたい」なら、セルフホストはコスパが良い選択だと思っている。


合わせて読みたい
n8n の使い方入門:インストールから最初のワークフロー作成まで図解
n8n の料金は実際いくらかかる?無料と有料の違いを個人目線で検証

コメント

タイトルとURLをコピーしました