本文へスキップ
n8n

【完全版】n8n VPS構築ガイド|Ubuntu・Docker・SSL設定からセルフホスト本番運用まで

Hirokuma
16分で読める
【完全版】n8n VPS構築ガイド|Ubuntu・Docker・SSL設定からセルフホスト本番運用まで

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の最低システム要件

項目最低要件推奨スペック
CPU1 vCPU2 vCPU以上
メモリ2GB RAM4GB以上
ストレージ10GB SSD20GB以上(NVMe推奨)
OSUbuntu 20.04+Ubuntu 22.04 / 24.04

おすすめVPSプロバイダー

国内サービス

サービス最小プラン月額料金特徴
XServer VPS2GB830円〜国内最安クラス、無料枠あり
ConoHa VPS1GB682円〜時間課金対応、管理画面が使いやすい
さくらのVPS1GB880円〜安定性、サポート充実

海外サービス

サービス最小プラン月額料金特徴
DigitalOcean1GB$6〜n8nテンプレートあり
Vultr1GB$5〜東京リージョンあり
Hetzner2GB€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 OpenSSHsudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw allow 5678/tcpsudo 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-dockercd ~/n8n-docker

Step 2:環境変数ファイルの作成

nano .env

以下の内容を入力:

# n8n設定N8N_BASIC_AUTH_ACTIVE=trueN8N_BASIC_AUTH_USER=adminN8N_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:動作確認

ブラウザで以下にアクセス:

http://your_server_ip:5678

.envで設定したユーザー名とパスワードでログインします。

独自ドメインとSSL証明書の設定

本番運用では、独自ドメインとHTTPS接続が必須です。

Step 1:ドメインのDNS設定

ドメインのDNS管理画面で、Aレコードを追加します。

Type: AName: n8n(またはサブドメイン)Value: your_server_ipTTL: 3600

Step 2:Nginxのインストール

sudo apt install nginx -ysudo systemctl enable nginxsudo 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.comN8N_PROTOCOL=httpsWEBHOOK_URL=https://n8n.yourdomain.com/

docker-compose.ymlも更新:

environment:# ...他の設定- N8N_SECURE_COOKIE=true

Step 7:n8nの再起動

docker compose downdocker 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/bashBACKUP_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 -ysudo systemctl enable fail2bansudo systemctl start fail2ban

自動セキュリティ更新

sudo apt install unattended-upgrades -ysudo 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セルフホスト構築を解説しました。

構築の流れ

  1. VPSの契約(2GB RAM以上推奨)
  2. Ubuntu環境の初期設定
  3. Docker / Docker Composeのインストール
  4. n8nのdocker-compose.yml作成と起動
  5. 独自ドメインとSSL証明書の設定
  6. PostgreSQLの追加(本番向け)
  7. バックアップの自動化

本番運用のポイント

  • N8N_ENCRYPTION_KEYを必ず設定・バックアップ
  • SSL証明書でHTTPS接続を有効化
  • PostgreSQLでデータベースを永続化
  • 定期的なバックアップを自動化
  • セキュリティ設定(SSH鍵認証、Fail2ban)

コスト比較

  • n8n Cloud:月額€20〜(約3,000〜4,500円)
  • セルフホスト:月額500〜1,500円(VPS代のみ)

セルフホストにより、年間で2〜4万円のコスト削減が可能です。サーバー管理の手間はありますが、一度構築すれば安定して運用できます。ぜひチャレンジしてみてください。

関連記事・公式資料

【本番運用】n8n PostgreSQL永続化の完全ガイド|Docker設定・バックアップ・移行手順n8nの本番運用に必要なPostgreSQL永続化を詳しく解説。Docker Compose設定、環境変数、暗号化キー管理、バックアップ戦略、SQLiteからの移行手順、Queue Modeでのスケーリングまで、運用に必要な技術をカバー。www.tentspace.net 【初心者向け】n8nローカルインストール完全ガイド|Dockerで5分で始める方法n8nをDockerでローカルPCにインストールする方法を初心者向けに解説。Docker Desktopの設定からn8nの起動、アップデート方法、トラブルシューティングまで、画面操作とコマンド両方の手順を紹介します。www.tentspace.net n8n公式:セルフホスティングAccess n8n hosting documentation and guides. Find comprehensive resources to help you set up and manage your self-hosted n8n instances.docs.n8n.io