n8nをVPSにセルフホストすることで、月額3,000円以上のクラウド版と同等の機能を、月額500〜1,500円程度のコストで運用できます。
ワークフロー数や実行回数の制限がなく、データを自社管理下に置けるため、セキュリティ面でも優れています。
この記事では、VPSの選定からUbuntu環境の構築、Docker設定、SSL証明書の取得、独自ドメインでの公開まで、n8nセルフホストの全工程を詳しく解説します。
セルフホストのメリットとクラウド版との比較
n8n Cloudとセルフホストの比較
| 項目 | n8n Cloud | セルフホスト(VPS) |
|---|---|---|
| 月額費用 | €20〜(約3,000〜4,500円) | VPS代のみ(500〜1,500円) |
| ワークフロー数 | プランにより制限あり | 無制限 |
| 実行回数 | プランにより制限あり | 無制限 |
| データ管理 | Anthropic社サーバー | 自社管理 |
| カスタマイズ | 制限あり | 完全に自由 |
| 運用負担 | なし | 自己責任 |
| サポート | 公式サポートあり | コミュニティのみ |
セルフホストが向いているケース
- 月額コストを抑えたい
- 大量のワークフローを実行する
- 機密データを外部に置きたくない
- カスタムノードを使用したい
- サーバー管理の基礎知識がある
VPSの選定とスペック要件
n8nの最低システム要件
| 項目 | 最低要件 | 推奨スペック |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU以上 |
| メモリ | 2GB RAM | 4GB以上 |
| ストレージ | 10GB SSD | 20GB以上(NVMe推奨) |
| OS | Ubuntu 20.04+ | Ubuntu 22.04 / 24.04 |
おすすめVPSプロバイダー
国内サービス
| サービス | 最小プラン | 月額料金 | 特徴 |
|---|---|---|---|
| XServer VPS | 2GB | 830円〜 | 国内最安クラス、無料枠あり |
| ConoHa VPS | 1GB | 682円〜 | 時間課金対応、管理画面が使いやすい |
| さくらのVPS | 1GB | 880円〜 | 安定性、サポート充実 |
海外サービス
| サービス | 最小プラン | 月額料金 | 特徴 |
|---|---|---|---|
| DigitalOcean | 1GB | $6〜 | n8nテンプレートあり |
| Vultr | 1GB | $5〜 | 東京リージョンあり |
| Hetzner | 2GB | €4〜 | コスパ最強 |
Ubuntu環境の初期セットアップ
VPSを契約したら、まずUbuntu環境の初期設定を行います。
Step 1:SSHでサーバーに接続
ssh root@your_server_ip
Step 2:システムの更新
# パッケージリストの更新
sudo apt update
# インストール済みパッケージの更新
sudo apt upgrade -y
Step 3:新規ユーザーの作成(推奨)
rootでの運用は避け、一般ユーザーを作成します。
# 新規ユーザー作成
adduser n8nadmin
# sudo権限を付与
usermod -aG sudo n8nadmin
# 新ユーザーでログイン確認
su – n8nadmin
Step 4:ファイアウォールの設定
# UFWの有効化
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 5678/tcp
sudo ufw enable
# 設定確認
sudo ufw status
Step 5:タイムゾーンの設定
sudo timedatectl set-timezone Asia/Tokyo
Dockerのインストール
n8nの運用にはDockerを使用することを強く推奨します。
Docker Engineのインストール
# 公式スクリプトでインストール
curl -fsSL https://get.docker.com | bash
# 一般ユーザーでDockerを実行できるようにする
sudo usermod -aG docker $USER
# 設定を反映(再ログインが必要)
newgrp docker
# 動作確認
docker –version
Docker Composeのインストール
# Docker Compose v2(プラグイン版)
sudo apt install docker-compose-plugin -y
# 動作確認
docker compose version
n8nのインストールと起動
Step 1:作業ディレクトリの作成
mkdir -p ~/n8n-docker
cd ~/n8n-docker
Step 2:環境変数ファイルの作成
nano .env
以下の内容を入力:
# n8n設定
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=your_secure_password
# サーバー設定
N8N_HOST=your_server_ip
N8N_PORT=5678
N8N_PROTOCOL=http
WEBHOOK_URL=http://your_server_ip:5678/
# タイムゾーン
TZ=Asia/Tokyo
# 暗号化キー(32文字以上のランダム文字列)
N8N_ENCRYPTION_KEY=your_32_char_encryption_key_here
Step 3:docker-compose.ymlの作成
nano docker-compose.yml
以下の内容を入力:
version: "3.8"
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: always
ports:
– “5678:5678”
environment:
– N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE}
– N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
– N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
– N8N_HOST=${N8N_HOST}
– N8N_PORT=${N8N_PORT}
– N8N_PROTOCOL=${N8N_PROTOCOL}
– WEBHOOK_URL=${WEBHOOK_URL}
– GENERIC_TIMEZONE=${TZ}
– TZ=${TZ}
– N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
– N8N_SECURE_COOKIE=false
volumes:
– n8n_data:/home/node/.n8n
volumes:
n8n_data:
Step 4:n8nの起動
# コンテナを起動
docker compose up -d
# ログ確認
docker compose logs -f n8n
Step 5:動作確認
ブラウザで以下にアクセス:
.envで設定したユーザー名とパスワードでログインします。
独自ドメインとSSL証明書の設定
本番運用では、独自ドメインとHTTPS接続が必須です。
Step 1:ドメインのDNS設定
ドメインのDNS管理画面で、Aレコードを追加します。
Type: A
Name: n8n(またはサブドメイン)
Value: your_server_ip
TTL: 3600
Step 2:Nginxのインストール
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
Step 3:Nginx設定ファイルの作成
sudo nano /etc/nginx/sites-available/n8n
以下の内容を入力(n8n.yourdomain.comを自分のドメインに置換):
server {
listen 80;
server_name n8n.yourdomain.com;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
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 $scheme;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
}
}
Step 4:設定の有効化
# シンボリックリンクの作成
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
# 設定テスト
sudo nginx -t
# Nginx再起動
sudo systemctl reload nginx
Step 5:SSL証明書の取得(Let’s Encrypt)
# Certbotのインストール
sudo apt install certbot python3-certbot-nginx -y
# SSL証明書の取得と設定
sudo certbot –nginx -d n8n.yourdomain.com
メールアドレスの入力と利用規約への同意が求められます。
Step 6:環境変数の更新
SSL設定後、.envファイルを更新します。
N8N_HOST=n8n.yourdomain.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.yourdomain.com/
docker-compose.ymlも更新:
environment:
# ...他の設定
- N8N_SECURE_COOKIE=true
Step 7:n8nの再起動
docker compose down
docker compose up -d
これで https://n8n.yourdomain.com でアクセスできます。
PostgreSQLの追加(本番向け)
本番運用では、SQLiteではなくPostgreSQLを使用します。
docker-compose.yml(PostgreSQL版)
version: "3.8"
services:
postgres:
image: postgres:15-alpine
container_name: n8n-postgres
restart: always
environment:
– POSTGRES_USER=n8n
– POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
– POSTGRES_DB=n8n
volumes:
– postgres_data:/var/lib/postgresql/data
healthcheck:
test: [‘CMD-SHELL’, ‘pg_isready -U n8n’]
interval: 10s
timeout: 5s
retries: 5
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: always
ports:
– “5678:5678”
environment:
– DB_TYPE=postgresdb
– DB_POSTGRESDB_HOST=postgres
– DB_POSTGRESDB_PORT=5432
– DB_POSTGRESDB_DATABASE=n8n
– DB_POSTGRESDB_USER=n8n
– DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
– N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE}
– N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
– N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
– N8N_HOST=${N8N_HOST}
– N8N_PORT=${N8N_PORT}
– N8N_PROTOCOL=${N8N_PROTOCOL}
– WEBHOOK_URL=${WEBHOOK_URL}
– GENERIC_TIMEZONE=${TZ}
– TZ=${TZ}
– N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
– N8N_SECURE_COOKIE=true
volumes:
– n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
volumes:
postgres_data:
n8n_data:
.envにPostgreSQLのパスワードを追加:
POSTGRES_PASSWORD=your_db_password_here
n8nのアップデート方法
Dockerイメージの更新
# 作業ディレクトリに移動
cd ~/n8n-docker
# 最新イメージをプル
docker compose pull
# コンテナを再作成
docker compose up -d
# 古いイメージを削除
docker image prune -f
アップデート前の確認事項
- リリースノートで破壊的変更を確認
- バックアップを取得
- テスト環境で動作確認(可能であれば)
バックアップの設定
自動バックアップスクリプト
nano ~/n8n-backup.sh
#!/bin/bash
BACKUP_DIR="/home/n8nadmin/backups"
DATE=$(date +%Y%m%d_%H%M%S)
# ディレクトリ作成
mkdir -p ${BACKUP_DIR}
# PostgreSQLバックアップ(PostgreSQL使用時)
docker exec n8n-postgres pg_dump -U n8n -d n8n | gzip > ${BACKUP_DIR}/n8n_db_${DATE}.sql.gz
# n8nデータボリュームのバックアップ
docker run –rm -v n8n-docker_n8n_data:/data -v ${BACKUP_DIR}:/backup alpine
tar czf /backup/n8n_data_${DATE}.tar.gz -C /data .
# 7日より古いバックアップを削除
find ${BACKUP_DIR} -name “*.gz” -mtime +7 -delete
echo “Backup completed: ${DATE}”
# 実行権限を付与
chmod +x ~/n8n-backup.sh
cronで自動実行
crontab -e
以下を追加:
0 3 * * * /home/n8nadmin/n8n-backup.sh >> /home/n8nadmin/backup.log 2>&1
セキュリティ強化
SSH鍵認証の設定
# ローカルPCで鍵を生成
ssh-keygen -t ed25519 -C "your_email@example.com"
# 公開鍵をサーバーにコピー
ssh-copy-id n8nadmin@your_server_ip
# パスワード認証を無効化
sudo nano /etc/ssh/sshd_config
# PasswordAuthentication no に変更
sudo systemctl restart sshd
Fail2banの導入
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
自動セキュリティ更新
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
トラブルシューティング
よくある問題と解決方法
| 問題 | 原因 | 解決方法 |
|---|---|---|
| ブラウザでアクセスできない | ファイアウォール設定 | UFWでポート5678を許可 |
| Webhookが動作しない | WEBHOOK_URLの設定ミス | 外部からアクセス可能なURLを設定 |
| 認証情報が保存されない | ボリュームマウントの問題 | docker-compose.ymlのvolumes設定を確認 |
| SSL証明書エラー | DNS設定の反映待ち | 数分〜数時間待って再試行 |
| コンテナが再起動を繰り返す | 設定エラー | docker compose logs で確認 |
ログの確認方法
# n8nのログ
docker compose logs -f n8n
# Nginxのログ
sudo tail -f /var/log/nginx/error.log
# システムログ
sudo journalctl -u docker -f
よくある質問(FAQ)
Q. VPSのスペックはどれくらい必要ですか?
A. 小〜中規模のワークフローであれば、2GB RAM / 1 vCPUで十分です。複雑なワークフローや同時実行が多い場合は、4GB RAM以上を推奨します。
Q. セルフホストでも公式サポートは受けられますか?
A. Community版(セルフホスト)では公式サポートはありません。コミュニティフォーラムやGitHubのIssueを活用してください。Enterprise版を契約すれば公式サポートが受けられます。
Q. SQLiteのままでも問題ないですか?
A. 個人利用や小規模な使用であれば問題ありません。ただし、Webhookを多数受け付ける場合や、本番運用ではPostgreSQLを推奨します。
Q. アップデートでデータは消えませんか?
A. Dockerボリュームを使用していれば、イメージの更新でデータは消えません。ただし、念のためアップデート前にバックアップを取得してください。
Q. 複数人で使用できますか?
A. Community版では複数ユーザーの管理機能は制限されています。チームでの利用にはEnterprise版の検討をおすすめします。
まとめ
この記事では、n8nのVPSセルフホスト構築を解説しました。
構築の流れ
- VPSの契約(2GB RAM以上推奨)
- Ubuntu環境の初期設定
- Docker / Docker Composeのインストール
- n8nのdocker-compose.yml作成と起動
- 独自ドメインとSSL証明書の設定
- PostgreSQLの追加(本番向け)
- バックアップの自動化
本番運用のポイント
- N8N_ENCRYPTION_KEYを必ず設定・バックアップ
- SSL証明書でHTTPS接続を有効化
- PostgreSQLでデータベースを永続化
- 定期的なバックアップを自動化
- セキュリティ設定(SSH鍵認証、Fail2ban)
コスト比較
- n8n Cloud:月額€20〜(約3,000〜4,500円)
- セルフホスト:月額500〜1,500円(VPS代のみ)
セルフホストにより、年間で2〜4万円のコスト削減が可能です。サーバー管理の手間はありますが、一度構築すれば安定して運用できます。ぜひチャレンジしてみてください。

