見出し画像

初心者でもできた Dify環境構築メモ(Windows+Anaconda+Docker Desktop)

こんにちは、サカタ(@sea_webm)です。マーケターとして今後必須になっていくだろうAI活用の中で、特に今熱いDifyの構築を行いましたのでメモです。

はじめに:本記事はプログラミングの知識のないマーケターが挑戦してみた記事になります。間違っている点などはビシバシコメント欄にてご指摘いただけますと幸いです。また、本記事の作成、環境構築にあたり、下記の動画を参考に進めました。この場をお借りしてお礼申し上げます。
Dify(独自AIサービスをローカル環境で簡単につくれる)を非エンジニアが試してみた - YouTube 


Difyとは?

ノード形式でLLM APIやプログラミング、外部APIを組み合わせて様々な処理を行うことが出来るシステムです。
見やすく、直感的なGUIと、AIシステム開発に必要な様々な機能を取り揃えています。

機能以外の魅力として、OSS(オープンソース)であり、日々アップデートが世界中の人によって行われていることが挙げられます。

https://dify.ai/

この記事はなに?

Difyの環境構築をやったメモです。Windows環境で、ほぼDocker未経験の一般人が簡単に動かすところまでいけたので共有します。

環境

  • Windows10 21H2

  • Docker Desktop 4.29.0

  • Anaconda Navigator 2.6.0

Anacondaのインストール

一通りのPythonライブラリが必要なため、仮想環境を作ることができるAnacondaを準備します。

このページ右部にメールアドレスを入れ、Anacondaインストーラーを入手します。
入力したメールアドレスにDLリンクが書かれているのでDLします。
Anacondaについては特にインストール時に変更する項目はなく、次へ次へと進んでいきます。

Docker Desktopのインストール

続いて、Dify公式がおすすめする、Docker Composeを使用したオフライン環境構築をやっていきます。

まず、Docker Desktopを上記サイトからDLします。インストーラーを起動したら次へ次へと進んでいきます。Docker Subscription Service AgreementはAcceptをクリック。
内容は、儲かっている会社はお金払ってね!という内容です。

大企業(従業員250名以上、または年間売上1000万ドル以上)でDocker Desktopを商用利用するには、有償サブスクリプションが必要です。

https://docs.docker.com/desktop/install/windows-install/を翻訳

インストールが完了すると、サインアップウィンドウが出ますが、Continue without signing inをクリックすればサインイン不要で起動できるようです。

無事ウィンドウが表示されたら、一度PCを再起動します。

Difyのインストール

PCを再起動したら、Docker Desktopのソフトウェアを再び立ち上げます。
その後、Anacondaを起動して、Environmentsに移動します。

Createから新しい環境を作成します。名前は何でもOKです。今回は「Dify」としました。
すべてインストールが終わったら、緑の再生ボタンを押し、Open Terminalをクリックします。

次に出てきたウィンドウで、DifyをGitHubからCloneします。最新版のソースコードをコピーしてくる手順となっています。

git clone https://github.com/langgenius/dify.git

このままだと、コマンドプロンプトに記載されている場所(ディレクトリ)にインストールされます。
もしインストール先を変えたい場合は、上記コマンドの前に、別のディレクトリに移動しておきます。Dドライブに移動するなら:

D:

で、git cloneをEnterすると、ずらずらとインストールが進んでいきます。

コマンドプロンプト上での操作は下記記事がわかりやすかったです。

Difyの起動

コマンドプロンプト上で、docker-compose.yamlファイルが入っているディレクトリまで移動します。docker-composeコマンドを使用してコンテナを起動していきます。

cd dify/docker
docker-compose up -d

ここで、私の引っ掛かりポイントとして、エラーを吐きました。内容はポート80番へアクセス権限で禁止されている方法でアクセスしようとした、というもの。

Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:80 -> 0.0.0.0:0: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

調べると、すでに使われているポートと、Dockerで使用したいポートが競合しているときに起こることがあるとのことだったので、コマンドプロンプトから下記コマンドを入力し、ポートが何に使われているかを確認します。

netstat -aon | findstr :80

結果はこのとおりでした。

  TCP         0.0.0.0:80             0.0.0.0:0              LISTENING       4
  TCP         [::]:80                [::]:0                 LISTENING       4

一番右の4がPID(プロセスの通し番号)となっており、タスクマネージャーの詳細タブからみることができます。今回の場合PID4はSystemに使われていたので、Docker側の設定を変更します。

コマンドプロンプトに戻り、dify/dockerディレクトリにいることを確認したうえで、

start .

と入力することで、エクスプローラを開きます。VSCodeが入っている場合はcode . Cursorが入っている場合はcursor .で直接エディタを起動することもできます。今回は何も入っていない想定でメモ帳を使います。

docker-compose.yamlファイルを右クリックして、開くからメモ帳で開きます。コード最下部のportsから80:80の行を修正しました。

    ports:
      - "8080:80"

再度docker-compose upコマンドを入力します。

docker-compose up -d

その後docker desktopを開き、すべて緑になっていることを確認したら、nginx-1の8080:80をクリックして、初期設定画面に移動します。

起動したら管理者アカウントの設定から、任意のアドレス、ID、パスワードを設定します。

最終的にこちらの画面にいけばセットアップは完了です。

セットアップができてしまえば簡単

セットアップが完了すれば、非常にクオリティの高いシステムを動作させることができます!GPTsの簡易版であればすぐにつくることができました。

ウホウホ

一発で起動するコマンドを作る

ChatGPTにお願いして、起動が一発でできるbatファイルを作成しました。任意の場所にdify.batを作成し、メモ帳で開きます。その後、下記をコピペ、保存するだけです。

@echo off
cd /d D:\dify\docker
docker-compose up -d
start http://localhost:8080

2行目のディレクトリと4行目のポートは各自の設定に読み替えてください。

学び

  • Dockerを使って起動が一通りできるようになった

  • Macで環境構築されている方が結構多いっぽいので、Windows特有の引っ掛かりポイントがある可能性を考慮する

  • README.md以外に公式セットアップ方法が載っている場合があるので、ちゃんと調べる

  • Pythonのライブラリが不足していて起動しないことがあったのでAnacondaを利用した

  • コマンドからstart .でエクスプローラを開くのは初めてやった。地味に便利。

  • これら含めて、知らないことを試して知っていく過程はめっちゃ面白い!

参考にした資料


最後までご覧いただきありがとうございました。 サポートしていただけると、今後の活動の動力源になり、タイピングが10%早くなります。