(最終更新:2026年1月2日)
ワークフロー自動化ツールとして、ZapierやMakeの代替として大人気の「n8n(Community版)」。
今回は、これを自身のVPS(Ubuntu)上に構築し、独自ドメインで安全に公開するまでの手順をステップバイステップで解説します。
私も実際に自社サーバーに構築し、日々の業務自動化にフル活用しています。

今回のゴールは以下の通りです。
- Docker を使ってn8nを構築する
- サーバー内でのポート競合を防ぐため、n8n自体は 5678ポート で起動させる
- Nginx をリバースプロキシとして使い、標準の 80ポート でアクセスできるようにする
- 独自ドメイン を設定し、SSL(HTTPS)化 してセキュリティを確保する
手順 0: VPSの準備とSSH接続セットアップ
まずはn8nを動かすためのサーバー(VPS)が必要です。
n8nはDifyほどリソースを食いませんが、多くのワークフローを同時に動かすことを考えると、ある程度のスペックが求められます。
推奨スペック:
- CPU: 2 vCPU以上
- メモリ: 最低2GB(推奨4GB以上)※メモリが少ないと、重たい処理(画像処理や大量データのループ)で落ちることがあります。
VPSは、初心者の方であれば、以下のいずれかがおすすめです。こちらで紹介しているUbuntuイメージもすぐに利用できます。
- 長期の運用を考えているなら、コストパフォーマンスが高く管理がしやすい XServer VPS
- 「ひとまず試してみたい」という方は、日額課金で利用できる KAGOYA CLOUD VPS
比較して自分にあったVPSを選びたい方はこちらの記事も参考にしてください。
手順 1: Docker と Docker Compose のインストール
前提として、以下が準備できていることをご確認ください。
- VPSでUbuntu環境が準備できている
- SSHで、自身のPCからVPS内にアクセスができている
※ 上記が完了していない方は、手順0をご確認下さい。
まずは環境構築に必須となる Docker をインストールします。
# 1. パッケージリストの更新
sudo apt update && sudo apt upgrade -y
# 2. DockerとDocker Composeのインストール
# (Ubuntu標準のものを使うため、GPGキーやリポジトリ追加は不要です)
sudo apt install -y docker.io docker-compose-v2
# 3. 動作確認(バージョンが表示されればOK)
docker compose version
# 4. 現在のユーザーをdockerグループに追加
sudo usermod -aG docker $USER
# 5. 設定適用のために再起動
sudo reboot
手順 2: n8nのインストールとポート設定
次にn8n用のディレクトリを作成し、設定ファイルを用意します。
1. ディレクトリ作成
Bash
# n8n用のディレクトリを作成して移動
mkdir ~/n8n-docker
cd ~/n8n-docker
2. Docker Composeファイルの作成
n8nを起動するための構成ファイルを作成します。
nano docker-compose.yml
以下の内容をコピーして貼り付けます。
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME} # IPアドレスでアクセスする場合は、${DOMAIN_NAME}のみをセット
- N8N_PORT=5678
- N8N_PROTOCOL=http
- WEBHOOK_URL=http://${SUBDOMAIN}.${DOMAIN_NAME}/ # IPアドレスでアクセスする場合は、${DOMAIN_NAME}のみをセット
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
3. 環境設定ファイル(.env)の作成
次に、環境変数を設定する .env ファイルを作成します。
nano .env
以下の内容を記述し、ご自身のドメイン情報等に書き換えてください。
(ドメイン取得がまだの方は、一時的にIPアドレスなどを入れておくか、localhostのままでも起動確認は可能です)
# 基本設定
DOMAIN_NAME=example.com # ← あなたのドメイン名に変更(例: saiteki-ai.com)
SUBDOMAIN=n8n # ← 使用するサブドメイン(例: n8n)
GENERIC_TIMEZONE=Asia/Tokyo
# SSL化するまでは一旦 http のままにしておきます
4. n8nの起動
設定ができたらコンテナを起動します。
docker compose up -d
※ 初回はイメージのダウンロードに数分かかります。
5. 起動確認
ブラウザで http://[上記でセットしたドメイン(とサブドメイン)]:5678 にアクセスしてみてください。
n8nの初期セットアップ画面(アカウント作成画面)が表示されれば、まずはn8n単体での構築は成功です。

ここでアカウントを作成してログインできることを確認してください。
もし、IPアドレスによるアクセスなどで、HTTP通信をしている場合以下のような画面が表示されます。

その場合は、docker-compose.ymlを以下のようにして下さい。
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=http
- WEBHOOK_URL=http://${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- N8N_SECURE_COOKIE=false # ← これを追加!
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
手順 3: Nginx(リバースプロキシ)の設定
今のままだとURLに :5678 を付ける必要があり不便ですし、セキュリティ的にも好ましくありません。
VPS本体にWebサーバー「Nginx」をインストールし、80番ポートへのアクセスを内部的に5678番ポートへ転送(リバースプロキシ)する設定を行います。
1. Nginxのインストール
sudo apt install -y nginx
2. 設定ファイルの作成
n8n用の設定ファイルを作成します。
sudo nano /etc/nginx/sites-available/n8n
以下の内容をコピーして貼り付けます。
※ server_name の横の n8n.example.com は、ご自身のドメイン(またはサブドメイン)に変更してください。
server {
listen 80;
server_name n8n.example.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_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# n8nのSSE(Server Sent Events)用設定
proxy_buffering off;
}
}
3. 設定の有効化と再起動
シンボリックリンクを作成して設定を有効化し、Nginxを再起動します。
# デフォルト設定を無効化(必要に応じて)
# sudo unlink /etc/nginx/sites-enabled/default
# n8n設定を有効化
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
# Nginxの構文チェック
sudo nginx -t
# Nginx再起動
sudo systemctl restart nginx
これで、ブラウザから http://n8n.example.com (ポート指定なし)でアクセスできるようになります!
(※DNS設定が完了している必要があります。次はドメインの設定です)
手順 4: 独自ドメインの取得と設定(Xserverドメイン)
IPアドレスのままではSSL化(https)ができないため、独自ドメインを設定します。
1. ドメインの取得
まだドメインをお持ちでない場合は、Xserver VPSと連携がスムーズな XServerドメイン での取得がおすすめです。
2. DNS設定(Aレコードの追加)
取得したドメインの管理画面(DNSレコード設定)で、以下の設定を追加します。
- 種別: A
- ホスト名: n8n (サブドメインを使用する場合)
- 内容: VPSのIPアドレス
- TTL: 標準(3600など)

設定が終わりましたら、反映されるまで数分〜数時間待ちます。
3. Nginx設定の更新(確認)
先ほどの手順3で server_name を既に正しいドメインに設定している場合はそのままでOKです。
まだIPアドレス等のままにしていた場合は、以下で修正してください。
sudo nano /etc/nginx/sites-available/n8n
server {
listen 80;
server_name n8n.example.com; # ← 正しいドメインになっているか確認
...
修正した場合はリロードします。
sudo systemctl reload nginx
手順 5: SSL化(HTTPS)の設定
最後に、Let’s Encryptを使って通信を暗号化(HTTPS化)します。これを行わないと、Webhook等の連携が制限されたり、パスワードが平文で流れてしまい危険です。
1. Certbotのインストール
sudo apt install -y certbot python3-certbot-nginx
2. 証明書の取得と設定
以下のコマンドを実行するだけで、証明書の取得からNginxの設定書き換えまで自動で行ってくれます。
sudo certbot --nginx -d n8n.example.com
※ n8n.example.com はあなたのドメイン名に置き換えてください。
実行中、メールアドレスの入力や規約への同意を求められるので、画面の指示に従って入力します。最後に「Successfully received certificate」と表示されれば完了です。
3. n8n側の設定変更(重要)
SSL化が完了したら、n8n側の設定も https に変更する必要があります。これを行わないとWebhookのURLが http のまま生成されてしまい、外部サービスとうまく連携できません。
cd ~/n8n-docker
nano docker-compose.yml
環境変数の WEBHOOK_URL と N8N_PROTOCOL を修正します。
YAML
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https # ← http を https に変更
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ # ← http を https に変更
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
修正したらコンテナを再起動して設定を適用します。
docker compose down
docker compose up -d
4. 確認
ブラウザで https://n8n.あなたのドメイン にアクセスしてください。鍵マークが表示され、安全にn8nが利用できるようになっているはずです。
Webhookノードを作成し、生成されるURLが https://~ から始まっていることも確認しておきましょう。
運用後のアップデート方法
n8nも機能追加のスピードが速いため、定期的なアップデートをおすすめします。
# 1. ディレクトリへ移動
cd ~/n8n-docker
# 2. Dockerイメージの更新
docker compose pull
# 3. コンテナの再起動
docker compose down
docker compose up -d
これでデータは保持されたまま、最新版に更新されます。
まとめ
以上で、自分専用のn8n環境が完成しました!
VPS + Docker + 独自ドメインでの運用は、セキュリティ面でもコスト面でも非常に優れた構成です。
月額数千円〜のSaaS版と違い、VPS版なら実行回数制限なども気にせず(サーバースペックが許す限り)無限にワークフローを回すことができます。
ぜひこれを使って、業務効率化・自動化を加速させてください。


