※ この記事にはアフィリエイトリンクが含まれています。リンク経由で購入しても読者の皆さんに追加費用は発生しません。収益は本サイトの運営費に充てています。
n8n Cloudの月額約3,000円を節約して、VPS上に自分だけのn8n環境を構築する方法を解説します。前回のVPS比較記事でサーバー選びは済ませました。今回は実際にConoHa VPS上でn8nを動かすまでの全手順です。
こんな方に読んでほしい記事です:
- n8n Cloudの料金が気になっていて、セルフホストに興味がある
- Docker Composeの基本は分かるが、n8n固有の設定が分からない
- SSL対応(HTTPS)まで一気に構築したい
- VPS比較を読んで、ConoHaかXServerに決めた
n8nセルフホストの構築方法は2つある
ConoHa VPSでn8nを構築する方法は大きく分けて2つあります。
| 方法 | 難易度 | カスタマイズ性 | 所要時間 |
|---|---|---|---|
| スタートアップスクリプト | 低 | 低 | 約5分 |
| Docker Compose手動構築 | 中 | 高 | 約30分 |
2025年10月から、ConoHa VPSにはn8n用のスタートアップスクリプトが追加されました。独自ドメインなしでもHTTPS対応のn8nがすぐに使えます。「とにかく早く動かしたい」ならスタートアップスクリプト、「構成を理解して自分でカスタマイズしたい」ならDocker Compose手動構築を選んでください。
方法1:スタートアップスクリプトで5分構築
手順
- ConoHa VPSの管理画面で「サーバー追加」を選択
- メモリ2GB以上のプランを選択(推奨は2GB、月額995円〜)
- OS選択で「アプリケーション」タブ → 「n8n」を選択
- rootパスワードを設定して「追加」をクリック
- サーバーが起動したら、表示されるURLにアクセス
これだけでHTTPS対応のn8nが動きます。独自ドメインの設定も管理画面から可能です。初めてn8nを触る方や、インフラに時間をかけたくない方にはこの方法がベストです。
スタートアップスクリプトの制限事項
ただし、いくつかの制限があります。
- DBがデフォルトのSQLite。ワークフローが増えるとPostgreSQLに移行したくなる
- Nginxの設定をカスタマイズしにくい
- n8nのバージョンアップが自動ではない
「最初はスタートアップスクリプトで始めて、運用に慣れたらDocker Compose構成に移行する」というのが個人的におすすめのステップです。
方法2:Docker Compose + Nginx + SSLで手動構築
構成を理解した上で運用したい方向けの手順です。最終的な構成は以下の通りです。
インターネット
│
▼ (443/HTTPS)
Nginx(リバースプロキシ + SSL終端)
│
▼ (5678/HTTP)
n8n(Docker コンテナ)
│
▼
PostgreSQL(Docker コンテナ)
Step 1:VPSにSSH接続してDockerをインストール
# ConoHa VPSにSSH接続
ssh root@your-server-ip
# Dockerのインストール(公式スクリプト)
curl -fsSL https://get.docker.com | sh
# Docker Composeの確認(Docker 24以降は内蔵)
docker compose version
ConoHa VPSはUbuntu 22.04を選択すればDockerのインストールは問題なく通ります。XServer VPSを使う場合はn8nアプリイメージを選べばこのステップは不要です。
Step 2:docker-compose.ymlを作成
# 作業ディレクトリの作成
mkdir -p /opt/n8n && cd /opt/n8n
# docker-compose.yml を作成
cat << 'EOF' > docker-compose.yml
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=your-domain.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://your-domain.com/
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=your-secure-password
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
postgres:
image: postgres:16
restart: always
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=your-secure-password
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
n8n_data:
postgres_data:
EOF
ポイントは3つあります。
DB_TYPE=postgresdb:デフォルトのSQLiteではなくPostgreSQLを使う。ワークフローが増えてもパフォーマンスが安定しますN8N_PROTOCOL=https:Nginxで SSL終端する前提。これを設定しないとWebhookのURLがhttpになってしまうWEBHOOK_URL:外部サービスからのWebhook受信に使うURL。ドメインを設定する前に忘れがちなポイントです
Step 3:Nginxの設定とSSL証明書の取得
# Nginxのインストール
apt install -y nginx certbot python3-certbot-nginx
# SSL証明書の取得(ドメインのDNS設定が完了している前提)
certbot --nginx -d your-domain.com
# Nginx設定ファイルの編集
cat << 'EOF' > /etc/nginx/sites-available/n8n
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
# WebSocket対応(n8nのリアルタイム更新に必要)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# タイムアウト延長(長時間実行ワークフロー対応)
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
EOF
# 設定の有効化と再起動
ln -sf /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
見落としがちなのがWebSocket対応の設定です。n8nのエディタはWebSocketでリアルタイム通信しているので、UpgradeとConnectionヘッダーの設定がないとワークフローの編集画面が正常に動きません。
Step 4:n8nを起動して動作確認
# コンテナの起動
cd /opt/n8n
docker compose up -d
# ログの確認
docker compose logs -f n8n
ブラウザでhttps://your-domain.comにアクセスすると、n8nの初期設定画面が表示されます。管理者アカウントを作成すればセルフホスト環境の完成です。
構築後にやっておくべき3つの設定
1. 自動バックアップの設定
PostgreSQLのデータを定期的にバックアップするcronジョブを設定します。
# 毎日3時にバックアップを取得
echo "0 3 * * * docker exec $(docker ps -qf name=postgres) pg_dump -U n8n n8n | gzip > /opt/n8n/backups/n8n_$(date +\%Y\%m\%d).sql.gz" | crontab -
バックアップがないと、サーバー障害時にワークフローを全部作り直すことになります。運用開始前に必ず設定しておいてください。
2. n8nのバージョンアップ手順
cd /opt/n8n
docker compose pull # 最新イメージを取得
docker compose down # 一度停止
docker compose up -d # 新バージョンで起動
バージョンアップ前には必ずバックアップを取得してください。まれにDB構造の変更が入ることがあり、ロールバックが必要になるケースがあります。
3. ファイアウォールの設定
# 必要なポートのみ開放
ufw allow 22/tcp # SSH
ufw allow 443/tcp # HTTPS(n8n)
ufw enable
ポート5678を直接外部に公開しないでください。Nginx経由で443番ポートのみ公開し、n8nへのアクセスはNginxを通す構成にします。
よくあるトラブルと対処法
「502 Bad Gateway」が出る場合:n8nのコンテナが起動していないか、ポート5678が正しくマッピングされていない可能性があります。docker compose logs n8nでエラーを確認してください。
ワークフローの保存時にエラーが出る場合:PostgreSQLの接続設定(ホスト名、パスワード)が間違っている可能性があります。docker compose logs postgresでDBのログを確認してください。
Webhookが受信できない場合:WEBHOOK_URLの設定とNginxのproxy_passが一致しているか確認してください。また、ファイアウォールで443番ポートが開放されているかも要チェックです。
セルフホストの運用コスト
実際にかかるコストをまとめます。
| 項目 | 月額 | 備考 |
|---|---|---|
| ConoHa VPS 2GBプラン | 995円 | 36ヶ月契約時 |
| ドメイン | 約100円 | 年額1,200円程度を月割り |
| SSL証明書 | 0円 | Let’s Encryptで無料 |
| 合計 | 約1,100円 | n8n Cloud(約3,000円)の約1/3 |
n8n Cloudとの差額は月額約1,900円、年間で約23,000円。その分をClaude APIやOpenAI APIの利用料金に回せると考えると、エンジニアにとってセルフホストは合理的な選択です。
関連書籍
- 『Web API設計実践入門』を楽天で見る——n8nで外部APIを呼び出す際のREST API設計の基礎が学べます
- 『入門 Webフロントエンド E2E テスト』を楽天で見る——n8nのワークフローをPlaywrightでE2Eテストする応用にも使えます
まとめ:セルフホストは「コスト削減」だけでなく「自由度」を得る手段
n8nのセルフホストは、月額を約1/3にできるコスト面のメリットだけではありません。カスタムノードの自由な追加、実行回数の制限なし、ワークフローデータの完全な自己管理。これらはn8n Cloudでは得られないメリットです。
- すぐに始めたいならConoHa VPSのスタートアップスクリプト
- 構成を理解して運用したいならDocker Compose手動構築
- Dockerに慣れていないならXServer VPSのn8nアプリイメージ
どの方法を選んでも、メモリ2GB以上のVPSとドメインがあれば30分以内にn8nが動き始めます。ブログの自動化パイプラインも、このセルフホスト環境の上で動かす予定です。
n8nのワークフロー構築自体は直感的ですが、API設計やWebhookの基礎知識があると自由度が一気に広がります。体系的に学びたい場合は、デイトラのWebアプリ開発コースがAPI連携やバックエンド周りをカバーしています。
進展があればまたこのブログで報告します。


コメント