この記事を読むと、n8n(ノーコードで業務を自動化するツール)を月額固定費なしで動かす手順と、実際にどれくらいの時間・メモリが必要かが分かります。

対象は「実行回数を増やしたい」「自分でサーバーを触ってもいい」個人開発者です。サーバー管理を人に任せたい人、チームでワークフローを共有したい人には向きません(理由は次で説明します)。

迷ったらこれ

n8n Community Edition(無料のセルフホスト版)を、VPS(自分専用に借りる仮想サーバー)上でDocker(アプリを環境ごと箱に入れて動かす仕組み)で動かすのがおすすめです。

n8nセルフホストをすすめる3つの理由をまとめた図
実行回数の上限なし・実測832.1MiBの軽さ・証明書自動取得の3点がセルフホストを選ぶ根拠になる

理由は3つです。

  1. n8n Cloudの最安プランは月2,500回の実行回数制限があり、月額約20ユーロ(2026-08-26時点・年払い、約3,200〜3,300円)。セルフホストなら実行回数の上限はありません(ハードウェアの上限のみ。n8n公式ドキュメント確認済み)。
  2. 筆者がローカルPCのDockerでn8n(バージョン2.36.7)を実際に動かしたところ、待機時のメモリ使用量は832.1MiBでした。VPSの2GBプランでも動かせる目安になります。
  3. 公式が配布しているDocker Compose設定をそのまま使えば、SSL証明書(通信を暗号化する仕組み。無いとブラウザに警告が出ます)の取得まで自動化されています。

合わない人: サーバーのアップデートやセキュリティ対応を自分でやりたくない人、複数人でワークフローを共有したい人(Community Editionにはチーム共有機能がありません)。この場合はn8n Cloudのほうが手間がかかりません。

実測についてのお断り: この記事の計測値はすべてローカルPC(Windows 11 / Docker Desktop 28.5.1 / WSL2)でのDocker実行によるものです。VPS実機での構築・計測はまだ行っていません。VPS特有の所要時間(回線速度・ディスク性能の影響など)は今後の実測で追記します。

最短手順(5ステップ)

ステップ4だけ、ローカルPCのDockerで実際に計測した数値です。それ以外は公式ドキュメントに沿った一般的な所要時間の目安です。

n8nをVPSにセルフホストする5ステップの手順図
VPS契約からブラウザで開くまでの5ステップ。ステップ4だけ実測(合計約3分)で、ステップ5はまだ確認できていない

ステップ1: VPSを契約してドメインを紐付ける(目安: 契約数分+DNS反映で数分〜数十分)

使いたいサブドメイン(例: n8n.example.com)を、契約したVPSのIPアドレスに向ける設定をしておきます。ドメインのDNS設定がVPSのIPに反映されてから次のステップに進むとスムーズです。

n8n VPS比較|ConoHa・XServer・さくらの記事では、各VPS提供者の料金と更新後の継続コスト、おすすめのプランを比較しているため、VPS選択に迷ったら参考にしてください。

ステップ2: サーバーにDockerを入れる(目安: 5分程度)

公式手順どおりにDockerとDocker Compose(複数のDockerコンテナをまとめて起動する設定ファイルの仕組み)を入れます。

n8n公式ドキュメントは本番運用に4GB RAM・2vCPU以上を推奨しています(2026-08-26確認)。海外VPSベンダーの技術ブログ(cherryservers.com、2026-08-26確認)では、開発・検証用途なら2GB RAM・2vCPUでも動くと紹介されていますが、これは公式の推奨ではなく第三者による目安である点に注意してください。

VPSのメモリプランを選ぶときの判断基準については、VPS Ollama実測メモリ2/4/8GB選び方でメモリ実測とプラン選択の考え方をまとめていますので、参考になれば幸いです。

ステップ3: 設定ファイルを用意する(目安: 5分)

ドメイン名・サブドメイン・メールアドレス・タイムゾーンの4つ.envファイル(設定値をまとめて書く小さなテキストファイル)に書きます。compose.yamlHost(`${SUBDOMAIN}.${DOMAIN_NAME}`) のようにドメイン名とサブドメインを別々の変数として参照するため、どちらか一方でも書き忘れるとアクセスできなくなります。

DOMAIN_NAME=example.com
SUBDOMAIN=n8n
SSL_EMAIL=[email protected]
GENERIC_TIMEZONE=Asia/Tokyo

compose.yamlは公式配布のものをそのまま使えます(中身は「もっと詳しく」で紹介します)。

公式配布のcompose.yamlはイメージのバージョンを指定していないため、放置すると自動で新しいバージョンに切り替わります。本番ではn8nio/n8n:2.37.2のようにバージョンを固定したほうが安全です(2026-08-26時点の最新安定版)。

ステップ4: 起動する(実測あり)

ここだけローカルPCのDockerで実際に計測しました。

  • イメージのダウンロード: 134秒
  • 起動してから初回のHTTPレスポンス(200)が返るまで: 37秒
  • 合計でおよそ3分でコンテナが応答を返す状態まで到達(回線速度やVPSのディスク性能によって変わります)
  • イメージサイズ: 2.36GB(VPSの最小ディスクプランでも問題ない容量です)

ステップ5: ブラウザで管理画面を開く(未実測)

https://n8n.example.com/を開くと、公式手順では初回セットアップ画面(管理者アカウント作成)が表示されるはずです。この画面の実際の表示は今回まだ確認できていません(VPS実機での通し検証は未実施のため)。確認でき次第この記事に追記します。

よくある失敗トップ3

以下は実際に手を動かして詰まった記録ではなく、料金表と公式ドキュメントを照合して見つかった「事前に知っておきたい点」です。VPS実機でのつまずきは今後の実測で追記します。

n8nセルフホストでよくある3つの見落としをまとめた図
価格の更新後の高さ・バージョンの自動更新・無料版の機能制限という3つの見落としがちな点をまとめた
  1. まとめトク価格の罠: 例えばConoHa VPSの「まとめトク1ヶ月」は初回料金が安く表示されます。2GBプランは初回793円ですが、更新後は1,259円になります(2026-08-26確認)。継続コストは更新後の価格で見積もってください。
  2. バージョン固定を忘れる: 上で触れたとおり、公式のcompose.yamlはそのままだと自動更新されます。破壊的な変更が入るリスクがあるため、バージョンを固定してください。
  3. 無料版の制限に後から気づく: SSO、複数人でのプロジェクト共有、Gitバージョン管理、環境ごとの変数管理などは無料版に含まれません(公式ドキュメント確認済み)。チーム利用を考えているなら契約前に確認してください。

次の一歩

まずは今回と同じ手順を、無料のDocker Desktopで自分のPC上で試してみてください。VPSを契約する前に、管理画面の操作感やワークフローの組み方を確認できます。

実行回数が増えてきた、あるいはチームで共有したくなったタイミングで、下の料金表を見ながらVPSかCloudかを検討するとよいでしょう。

もっと詳しく

n8n Cloudとセルフホストの料金比較表
月2,500回以内ならCloudと大差ないが、実行回数が多い個人利用はセルフホストが定額で済む

料金の分岐点(クラウド版 vs セルフホスト)

選択肢月額目安実行回数上限同時実行数
n8n Cloud Starter20ユーロ(年払い、約3,200円)2,500回/月5
n8n Cloud Pro50ユーロ(年払い、約8,000円)10,000回/月20
VPS 2GBプラン例(まとめトク1ヶ月・更新後)1,259円上限なし(サーバー性能まで)サーバー性能まで
VPS 4GBプラン例(まとめトク1ヶ月・更新後)2,189円上限なしサーバー性能まで

注記: VPS料金はConoHa VPSの「まとめトク1ヶ月」更新後価格(2026-08-26確認)。ユーロ建て価格の円換算は同時点の概算レートで、実際の請求額は為替変動で変わります。3ヶ月・6ヶ月・12ヶ月契約の更新価格は未確認です。より長期の「まとめトク36ヶ月」なら2GBプランで月710円まで下がりますが、36ヶ月分の前払いが必要です。

月2,500回以内で足りるなら差は小さいですが、実行回数が多い・チームで使わない個人利用なら、セルフホストのほうが定額で済みます。

無料版(Community Edition)でできないこと

無料のセルフホスト版には、次の機能が含まれません(公式ドキュメント確認済み、2026-08-26)。

  • SSO(社内アカウントでまとめてログインする仕組み)
  • 複数人でのワークフロー共有(プロジェクト機能)
  • Git連携によるバージョン管理
  • 環境ごとの変数管理(Environments)
  • 外部シークレット管理、ログストリーミング

メールアドレス登録(無料)をすると、フォルダ整理やエディタ内デバッグなどが追加で使えるようになります。

公式のDocker Compose構成

n8n公式が配布している構成は、通信の窓口を担う「Traefik」というコンテナ(リバースプロキシ。外部からの通信を受けてn8nに橋渡しする役割)と、n8n本体の2つで構成されます。TraefikがSSL証明書の取得と更新を自動で行うため、自分で証明書コマンドを打つ必要はありません。

services:
  traefik:
    image: "traefik"
    restart: always
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
      - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  n8n:
    image: n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - TZ=${GENERIC_TIMEZONE}
      - N8N_RESTRICT_FILE_ACCESS_TO=/files
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files

volumes:
  n8n_data:
  traefik_data:

出典: n8n公式ドキュメント(2026-08-26確認)。Traefikのセキュリティヘッダ設定(SSLRedirectやSTSSecondsなど)とn8nのアクセス制限用の環境変数を含む、公式配布時点の構成をそのまま掲載しています。イメージのタグを指定していないため、本番ではn8nio/n8n:2.37.2のようにバージョンを固定することをおすすめします。