【Dify超入門】VPSとDockerで自分専用のAIエージェント開発環境を構築・常時稼働させる完全手順
近年、LLM(大規模言語モデル)を活用したAIエージェントの開発が急速に進んでいます。その中でも、ノーコード・ローコードで直感的に高度なAIワークフローを構築できるオープンソースのプラットフォームとして、大きな注目を集めているのが「Dify」です。
Difyはクラウドサービス(SaaS版)も提供されていますが、自分専用のVPS(仮想専用サーバー)にセルフホスト(ローカル・プライベート構築)することで、データのプライバシーを完全に保ちながら、APIの呼び出し制限や利用コストを気にせず自由にカスタマイズ可能なAI開発環境を手に入れることができます。
本記事では、VPSの準備からDockerを使用したDifyのデプロイ、そして24時間365日安定して常時稼働させるための具体的な手順を、シニアエンジニアの視点で分かりやすく解説します。
なぜDifyをVPSで動かすのか?
DifyをローカルPC(MacやWindows)で起動することも可能ですが、開発したAIエージェントやチャットボットを「常時稼働」させ、DiscordやSlack、LINE、Webサイトなどの外部サービスと連携して24時間いつでも応答できるようにするには、サーバー上で稼働させる必要があります。
Difyの公式GitHubリポジトリでは、Docker Composeを使用した簡単なセルフホスト手順が公開されています。これをVPS上で実行することにより、以下のようなメリットが得られます。
- 24時間365日の常時稼働: ローカルPCを起動し続ける必要がなくなります。
- 固定IPアドレスの取得: 外部APIからのWebフック受信や、DNSを設定してドメイン名でのセキュアなアクセス(HTTPS化)が容易になります。
- リソースの独立: メモリやCPUを多く消費するベクトルデータベース(Difyに内蔵されている知識ベース機能)を、手元のPCのリソースを圧迫せずに運用できます。
⚡ 初期費用無料・ドメインが2個無料
Difyを快適に動作させるためには、サーバーのスペックとして 2 vCPU / 4GB RAM以上(推奨は8GB RAM以上)の環境を推奨します。特に、PDFなどのドキュメントを読み込ませるRAG(検索拡張生成)機能やベクトル検索を利用する場合、データベース(PostgreSQLやMilvus/Sandbox)が動作するため、メモリに余裕を持たせることが安定稼働への近道です。
前提条件とVPS環境の初期準備
今回の構築手順では、OSに Ubuntu 22.04 LTS / 24.04 LTS を使用することを想定しています。SSHでサーバーに接続し、まずはシステムを最新の状態にアップデートします。
sudo apt update && sudo apt upgrade -y
次に、Difyをコンテナとして起動するために、Docker および Docker Compose をインストールします。Docker公式の推奨手順に従ってインストールを進めます。
# 必要な依存パッケージのインストール
sudo apt install -y ca-certificates curl gnupg lsb-release
# Docker公式のGPGキーを追加
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# リポジトリの設定
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker Engineのインストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
インストールが完了したら、Dockerが正常に起動しているか確認します。
sudo systemctl status docker
詳細なDockerの設定方法や最新情報については、Docker公式ドキュメントを参照してください。
Difyのインストールとデプロイ手順
Docker環境が整ったら、Difyのデプロイに入ります。Difyのリポジトリをクローンし、環境変数の設定を行います。
1. リポジトリのクローン
適当なディレクトリ(例: /opt またはホームディレクトリ)に移動し、GitHubからソースコードを取得します。
cd /opt
sudo git clone https://github.com/langgenius/dify.git
cd dify/docker
2. 環境変数設定ファイルの作成
Difyの動作設定は docker ディレクトリ内にある .env ファイルで行います。テンプレートとして用意されている .env.example をコピーして使用します。
sudo cp .env.example .env
初期状態のままでも起動は可能ですが、セキュリティや外部アクセスの設定のために、.env ファイルを開いて最低限以下の項目を確認・変更することをおすすめします。
sudo nano .env
EXPOSE_PORT: DifyのWeb UIにアクセスするためのポート番号(デフォルトは80)。他のWebサーバーが稼働している場合は競合を避けるために変更します。SECRET_KEY: セッションやCookieの暗号化に使用されるランダムな文字列。セキュリティ確保のために独自の強力な文字列を設定してください。
3. Dockerコンテナの起動
準備が整ったら、Docker Composeコマンドを使ってDifyに関連するすべてのコンテナ(Webフロント、APIサーバー、PostgreSQL、Redisなど)をバックグラウンドで起動します。
sudo docker compose up -d
起動完了まで数分かかる場合があります。以下のコマンドで、すべてのコンテナの状態が Up になっていることを確認してください。
sudo docker compose ps
起動が確認できたら、ブラウザを開き http://<あなたのVPSのIPアドレス>:(ポートを変更した場合はその番号)にアクセスします。初回アクセス時には、管理者アカウントの初期設定(メールアドレスとパスワードの登録)画面が表示されます。画面の指示に従って管理者を登録すれば、自分専用のDify環境が利用可能になります。
なお、自作のAIエージェントプログラムを直接VPS上で常時稼働させる方法については、【Python】Claude API搭載の自作AIエージェントをVPSで24時間常時稼働させる開発・デプロイ手順 で詳しく解説しています。フロントUIを必要とせず、ボット開発に特化させたい場合はこちらの連携も参考にしてください。
トラブルシューティング:よくあるエラーと解決策
VPSでの構築作業中、あるいは稼働開始後に発生しやすい代表的なエラーとその対策をまとめました。
1. ポート競合エラー (Port 80 is already in use)
Difyを起動しようとした際に、以下のようなエラーが表示されて起動に失敗する場合があります。
Error response from daemon: driver failed programming external connectivity on endpoint docker-nginx-1: Bind for 0.0.0.0:80 failed: port is already allocated
- 原因: VPS上で既にNginxやApache、あるいは他のWebアプリケーションがポート
80(または443)を占有しているためです。 - 解決方法:
.envファイル内のEXPOSE_PORTの値を別の未使用ポート(例:EXPOSE_PORT=8000)に変更し、再度sudo docker compose up -dを実行します。その後、http://<IPアドレス>:8000でアクセスを試みてください。
2. メモリ不足によるコンテナのクラッシュ (OOM Killer)
初期設定を終えて使っているうちに、突然Difyが応答しなくなったり、データベースのコンテナが停止したりすることがあります。
- 原因: VPSの物理メモリが不足し、OSの機能(Out of Memory Killer)によってDockerプロセスが強制終了されたためです。Difyは複数のミドルウェアが同時に動くため、最低でも3〜4GBのメモリが必要です。
- 解決方法: 物理メモリが足りない場合は、一時的な対処としてスワップ(Swap)領域を設定して仮想メモリを確保します。
# 2GBのスワップファイルを作成する場合
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 再起動後も有効にする設定
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
※根本的な解決には、VPSのプランをメモリ4GB以上のものにスケールアップすることをおすすめします。
3. APIキー接続タイムアウトエラー
Difyの設定画面でOpenAIやAnthropicなどのAPIキーを設定した際、「接続タイムアウト」や「API Key Invalid」のエラーが出ることがあります。
- 原因: VPSから外部への送信トラフィック(特に対象LLMプロバイダのAPIエンドポイントへの通信)が、VPSプロバイダ側のファイアウォール設定で制限されているか、DNSの解決に失敗しています。
- 解決方法: VPSのコントロールパネル等で「パケットフィルター」や「セキュリティグループ」の設定を確認し、アウトバウンド(送信)通信が制限されていないか確認してください。また、サーバー内で
curl https://api.openai.com/v1/models等を実行し、外部APIと疎通が取れるかテストしてください。
まとめ
VPSとDockerを使用することで、リソースやプライバシーの制約を受けない「自分だけのAIエージェント開発環境」が数十分で構築可能です。Difyの洗練されたUIを利用すれば、複雑なプロンプト管理や、高度なRAGの実装、マルチエージェントの作成もドラッグ&ドロップで素早く実現できます。
まずは安価なVPSにDockerを導入することから始め、常時稼働するパーソナルアシスタントの作成に挑戦してみましょう。慣れてきたらドメインを設定し、リバースプロキシ(NginxやCaddy)を挟んでHTTPS化(SSL化)することで、社内やチーム向けの本格的なAIツールとしてセキュアに展開することも可能になります。