XServerVPS×Difyにn8nインストールする方法

この記事はアフィリエイト広告を利用しています。

XServer VPS とはXServerが提供する高性能のVPSサービスです。

Difyやn8nのアプリイメージが提供されており、申請するだけで自動でサーバーにインストールできるため、環境構築の手間がかからず使えます。

たま

月額1,200円から使えるため、Difyやn8n公式に課金するより安くお得に使えます。

ただし、Difyやn8nのアプリイメージを使うにはOSの再インストールが必要です。

たま

つまり、2つのアプリイメージを同時には使えません。

とはいえ、Difyもn8nもDocker上で動作するため、1台のマシンでDifyもn8nも動かせます。

この記事では「すでにDifyのアプリイメージを使っているんだけど、n8nも使えないのかな?」という方のために、DifyのアプリイメージがインストールされたXServerVPS上でn8nを起動する方法を紹介します。

Difyやn8nをお得に使いたいという人は、この機会にXServerVPSの契約を検討してみましょう。

\XServer VPSの登録はこちら/

XServerVPSの契約方法は以下の記事を参考にしてください。

>> DifyのXServer VPS導入ガイド2025|料金・環境構築手順・更新方法まで徹底解説

※注意事項

この記事で紹介している手順は、私が試行錯誤の末にたどり着いた一例です。

特定の環境で動作することを目指したものであり、必ずしも全ての環境での動作を保証するものではありません。また、セキュリティにおけるベストプラクティスではない可能性がある点にご留意ください。

この設定を参考にされる場合は、お使いの環境やセキュリティ要件を十分にご確認の上、ご自身の責任において実施していただきますようお願いいたします。

本記事の内容によって生じたいかなる損害についても、筆者は一切の責任を負いかねますので、あらかじめご了承ください。

サービス紹介

ココナラでXServerVPSのDify環境構築を承っております。

XServerVPSの契約からDifyの立ち上げまで徹底フォローするのでぜひご検討ください。

全体構成

Difyのアプリイメージがインストールされた環境でn8nを起動するには、手動でDockerの環境構築をする必要があります。

また、Difyとn8nそれぞれに接続するために、すでに起動しているDifyのNginxコンテナがサーバーへのリクエストを一元管理する構成に変更します。

今回の構築するサーバーの構成図は以下のとおりです。

各コンポーネントの役割

  • 司令塔 (Dify Nginxコンテナ)
    • サーバーのポート80と443を代表して待ち受けます。
    • Let's Encryptで取得したSSL証明書を管理し、すべての通信をHTTPS化します。
    • アクセスされたドメイン名に応じて、Difyの内部サービスかn8nコンテナにリクエストを振り分けます。
  • n8nコンテナ
    • 外部にポートを公開せず、サーバー内部のポート(5678)で待機します。
    • DifyのNginxから転送されてくるリクエストだけを受け付けるため、セキュアになっています。
    • Nginxから「この通信はもともとHTTPSだよ」というヘッダー情報を受け取ることで、自身がHTTPSで動作していると正しく認識します。

この構成で運用する場合、以下の点に注意してください。

  • n8nの証明書は自動更新されない
  • Difyのアップデートによって設定が上書きされる可能性がある
  • セキュリティが万全ではない可能性がある

全体の流れ

全体の流れは以下のとおりです。

XServerVPSでn8nを起動する流れ

  1. n8n用のサブドメインを取得してXServerVPSに設定する
  2. シリアルコンソールを使ってXServerVPSにアクセスする
  3. n8nの作業用フォルダを作成する
  4. n8nの環境設定ファイル(.env)を作成する
  5. n8nのローカルファイルディレクトリを作成する
  6. n8nのDocker Composeファイルを作成する
  7. n8nのSSL証明書を取得する
  8. DifyのNginxにn8nの証明書と転送設定を追加する
  9. Dockerを起動する

一部の作業はn8n公式のマニュアルを参考に作業を進めます。

作業の詳細は以下のマニュアルを参考にしてください。
>> n8n Docs | Docker-Compose

①n8n用のサブドメインを取得してXServerVPSに設定する

n8nの環境を動かすために、n8n用のサブドメインを用意します。

サブドメインの取得方法は契約中のドメインサービスを参照してください。

ムームードメインを使用している方は以下の記事で手順を説明しています。
>> XServerVPSのDifyにムームードメインのサブドメインを設定してみた

②シリアルコンソールを使ってXServerVPSにアクセスする

※teratermなど別ツールでSSH接続している場合はそのままでOKです。

以降の作業ではコピー&ペーストする機会があるため、コピー&ペーストに対応しているシリアルコンソールでXServerVPSにアクセスします。

③n8nの作業用フォルダを作成する

Difyアプリイメージはrootフォルダにインストールされています。

n8nはDifyとは別のディレクトリにインストールしましょう。ここでは、/home/userディレクトリを使用します。

以下のコマンドを実行して作業フォルダを作成します。

root@xxxxxxx: mkdir /home/user/n8n-compose

その後、作成した作業フォルダに移動します。

root@xxxxxxx: cd /home/user/n8n-compose

④n8nの環境設定ファイル(.env)を作成する

③で作成した作業フォルダに環境設定ファイル(.env)を作成します。
今回はvimを使いますがお好きなエディタをお使いください。

①以下のようにvimで.envファイルを作成します。

root@xxxxxxx: vi .env

②vimが起動するので[Esc]キーを押してコマンドモードにします。

③n8n公式サイトにある.envファイルをコピーします。
>> 4. envファイルを作成する

④vim上で[Shift][Insert]を押すと、先ほどコピーした内容が貼り付けられます。

貼り付け方によっては先頭の文字が消えていることがあります。
消えている場合は元のファイルに合わせて手入力で修正してください。

たま

vim上での編集は"i"でカーソル上に上書き挿入、"a"でカーソルの後に挿入で行います。
普段の入力と同じように入力したい場合は、"a"を押してから入力を開始しましょう。

⑤ドメインやサブドメインなどの設定を自身の環境に合わせて変更します

  • DOMAIN_NAME:ドメイン名
  • SUBDOMAIN:①で作成したサブドメイン名
  • GENERIC_TIMEZONE:Asia/Tokyo
  • SSL_EMAIL:メールアドレス

⑥設定内容を保存します

[Esc]キーを押してコマンドモードにします。その後、:wq!で内容を保存してファイルを閉じます。

⑤n8nのローカルファイルディレクトリを作成する

次にn8nが使用するローカルディレクトリを作成します。

③で作成した作業用フォルダ内にローカルディレクトリを作成します。

root@xxxxxxx: mkdir /home/user/n8n-compose/local-files

⑥n8nのDocker Composeファイルを作成する

③で作成した作業フォルダにDockerの設定ファイルを作成します。

作業の流れは以下のとおりです。

①DifyのDockerのIPアドレスを調べて反映します。

DifyのDockerが起動した状態で以下のコマンドを実行します。

root@xxxxxxx: docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' docker-nginx-1

表示されたIPアドレスをメモしておきます。

②以下のようにvimでcompose.yamlファイルを作成します。

root@xxxxxxx: vi compose.yaml

③vimが起動するので[Esc]キーを押してコマンドモードにします。

:set pasteコマンドを入力してインデントを変えずに貼り付けできるようにします

⑤以下のcompose.yamlファイルをコピーします。

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - N8N_PUSH_BACKEND=sse
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_TRUSTED_PROXIES=[DifyのIPアドレス]★調べ方は①参照(例:172.16.0.0/12)
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files
    networks:
      - default
      - dify_net

volumes:
  n8n_data:

networks:
  default:
    driver: bridge
  dify_net:
    external: true
    name: docker_default

⑥vim上で[Shift][Insert]を押すと先ほどコピーした内容が貼り付けられます。

たま

.envファイルを貼り付けたときと同様に、先頭から最後まで貼り付けられていることを確認しましょう。

n8n公式の設定ファイルではTraefikというリバースプロキシを使う設定になっていますが、今回はDifyのNginxをリバースプロキシとして使用します。
このため、サーバーへの5678ポートのアクセスをn8nに転送して、n8nを呼び出せるようにしています。

⑦n8nのSSL証明書を取得する

Certbotを使ってn8nのSSL証明書を取得します。

Certbotでn8n用のSSL証明書を取得するには、apacheを使用します。

①apacheは80番ポートを使用しますが、すでにDifyで使っているため、Difyを一時的に停止します。

root@xxxxxxx: cd /root/dify/docker
root@xxxxxxx: docker compose stop

②Certbotのapacheプラグインをインストールします。

root@xxxxxxx: apt update && sudo apt install python3-certbot-apache -y
たま

XServerVPSのDifyアプリイメージでDifyを構築した場合、Certbot本体はインストールされています。
ただ、今回の手順で使うApacheと連携をして証明書を取得するためのプラグインがインストールされていないため、追加でインストールが必要です。

③Certbotでn8n用の証明書を取得します

root@xxxxxxx: certbot --apache -d [n8nのサブドメイン].[システムのドメイン]

メールアドレスや必要事項への同意が求められるので、指示に従って入力しましょう。

apacheを停止します

Certbotが起動したapacheを停止・無効化して、再び80番ポートをDifyで使えるようにします。

root@xxxxxxx: systemctl stop apache2
root@xxxxxxx: systemctl disable apache2

⑧DifyのNginxにn8nの証明書と転送設定を追加する

Difyのnginxにn8nの証明書とn8nへの転送設定を追加します。

Difyの設定ファイルを開いてホストOSの証明書をコンテナに共有する設定を追加します。

root@xxxxxxx: vi /root/dify/docker/docker-compose.yaml

以下の内容を追加します。

services:
  # ... 他のサービス ...
  nginx:
    image: nginx:latest
    # ... 他の設定 ...
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      # 以下の行を追記
      - /etc/letsencrypt:/etc/nginx/ssl-host:ro
      # ... 他のvolumes設定 ...

②n8nコンテナのIPアドレスを調べます。

n8nのコンテナが起動した状態で以下のコマンドを実行します。

root@xxxxxxx: docker inspect -f '{{.NetworkSettings.Networks.docker_default.IPAddress}}' n8n-compose-n8n-1

表示されたIPアドレスをメモしておきます。

③dify/docker/nginx/conf.d/ に n8n.conf を新規作成し、以下の内容を書き込みます。

root@xxxxxxx: vi /root/dify/docker/nginx/conf.d/n8n.conf

ファイルの内容は以下のとおりです。

server {
    listen 80;
    server_name [n8nのサブドメイン].[システムのドメイン];
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl http2;
    server_name [n8nのサブドメイン].[システムのドメイン];

    # n8n用の正しい証明書を指定
    ssl_certificate /etc/nginx/ssl-host/live/[n8nのサブドメイン].[システムのドメイン]/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl-host/live/[n8nのサブドメイン].[システムのドメイン]/privkey.pem;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    location / {
        # 転送先はホストOSのDockerゲートウェイ経由でn8nコンテナへ
        proxy_pass http://[n8nのIPアドレス]★調べ方は②参照(例:172.17.0.1):5678;

        proxy_set_header Host [n8nのサブドメイン].[システムのドメイン];
        proxy_set_header Origin https://[n8nのサブドメイン].[システムのドメイン];
        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;
    }
}

たま

n8nの設定ファイルを作成したときと同様に、[Shift][Insert]コマンドを使って貼り付けしてください。

⑨Dockerを起動する

いよいよラストです。Difyとn8nのDockerを再起動します。

まずはDifyのDockerを起動します。

root@xxxxxxx: cd /root/dify/docker
root@xxxxxxx: docker compose up -d --force-recreate

その後、n8nのDockerを起動してください。

root@xxxxxxx: cd /home/user/n8n-compose
root@xxxxxxx: docker compose up -d --force-recreate

いずれもエラーなく起動すれば環境構築は完了です。

https://[n8nのサブドメイン].[システムのサブドメイン]にアクセスして、n8nの画面が起動するか確認しましょう。

トラブルシューティング

ここでは私が実際に構築したときに発生したエラーとその原因を紹介します。

たま

この記事で紹介した手順ではこれらのエラーが発生しないような方法にしています。
もし同じエラーが発生したときは、参考にしてみてください。

(root) Additional property ervices is not allowed

これは、compose.yamlファイルの一番最初の行が services: となるべきところが、先頭の s が抜けて ervices: になってしまっています。

compose.yamlのコピペが最初から最後まで正確にできているか確認しましょう。

Difyもしくはn8nにつながらない、n8nを表示するとアドレスバーに警告が表示される

Docker再起動後にDifyやn8nにつながらない場合や、つながるもののブラウザのアドレスバーに「保護されていない通信」という警告が表示されることあります。

この場合は、nginxの設定がうまくいっていないことが多いです。

以下のコマンドを実行してDifyのnginxのログを確認してください。エラーが出ている場合は設定を見直しましょう。

root@xxxxxxx: docker-compose logs nginx

まとめ

この記事では、DifyのアプリイメージがインストールされたXServerVPS上でn8nを起動する方法を紹介しました。

全体の流れは以下のとおりです。

XServerVPSでn8nを起動する流れ

  1. n8n用のサブドメインを取得してXServerVPSに設定する
  2. シリアルコンソールを使ってXServerVPSにアクセスする
  3. 作業用フォルダを作成する
  4. n8nの環境設定ファイル(.env)を作成する
  5. ローカルファイルディレクトリを作成する
  6. n8nのDocker Composeファイルを作成する
  7. n8nのSSL証明書を取得する
  8. DifyのNginxにn8nの証明書と転送設定を追加する
  9. Dockerを起動する

今回紹介したのは私が試行錯誤して構築した構成になります。自己責任でご参考ください。

XServer VPSでは専用のセットアップスクリプトを実行するだけで簡単にDifyの環境構築ができます。

アプリ作成数も無制限でDify公式の有料プランよりもお得にDifyを利用できます。

また、XServerVPSでは定期的にキャンペーンを開催しており、通常価格よりもお得に契約できることも多いです。

XServerで開催中のキャンペーン

  • 利用料金30%オフ
    • キャンペーン対象
      • キャンペーン期間中に、新規にお申し込みいただいたサーバーアカウント
    • キャンペーン期間
      • 2025年5月8日(木)17:00 ~ 2025年8月5日(火)17:00
    • キャンペーン内容
      • 契約期間に応じて利用料金が10%~30%オフ

XServer VPSとDifyやn8nを活用して、AIエージェント開発を始めてみましょう。

\XServer VPSの登録はこちら/

XServerVPSの契約方法は以下の記事を参考にしてください。

>> DifyのXServer VPS導入ガイド2025|料金・環境構築手順・更新方法まで徹底解説

サービス紹介

ココナラでXServerVPSのDify環境構築を承っております。

XServerVPSの契約からDifyの立ち上げまで徹底フォローするのでぜひご検討ください。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA