1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

podmanを使ってDifyをローカルで動かしてみる(Macユーザー向け)

Last updated at Posted at 2024-11-03

この記事の目的

podmanを使用して、ローカル環境でDifyを実行する手順を解説します。
(Macユーザー向けですが、Windowsでも一部役に立つと思います。)

対象読者

  • podmanを使ってローカル環境でDifyを試してみたい方
  • podmanを使ってDifyを動かそうとしたらエラーが出て心が折れそうな方
  • Appleシリコン(M1/M2/M3チップなど)PCでpodmanを動かしたい方

用語集

  • podman
    • コンテナ管理ツール
      • dockerとの互換性は高いが、ちょいちょい面倒なエラーが発生する
        • 今回のDifyの環境構築にも影響あり
  • Dify
    • オープンソースのLLMアプリケーションプラットフォーム
    • ローカル環境にセットアップ可能
    • APIを活用したAIアプリの開発や実行が可能

podmanでDifyを動かす

Difyをcloneする

DifyのGitHubリポジトリからローカルにcloneする

podmanのインストール / VM(仮想マシン)の起動

macユーザーであればbrewを使ってpodmanをインストール

brew install podman podman-compose

podmanで仮想マシンを起動

podman machine init
podman machine start

※ この時、Appleシリコン(M1/2/3チップ)ユーザーの場合arm・amdの違いに気をつける
podman machine startを実行して
Error: vfkit exited unexpectedly with exit code 1のエラーが出た場合は、
podman infoを実行してインストールしたpodmanの情報を確認してください。

OS: darwin/amd64  #この行に注目
provider: applehv
version: 5.0.2

もし、Appleシリコンのpcを使っていてamdと記載されている場合はbrewがamd用の設定になっている可能性があるので、brewを下記のコマンドで再インストールします。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
export PATH="/opt/homebrew/bin:$PATH"

brew再インストール後、brew configを実行して表示される値の最後の方にあるRossetafalseになっていれば成功です。

今なら、仮想マシンを起動できるはずです。

podman machine start

参考Issue:podman machine start continually fails with vfkit error #22624

Difyコンテナ起動

DifyのQuickStartには、

スクリーンショット 2024-11-04 2.01.49.png
で動くと書いてありますが、podmanではそんなにすんなりいきません。

cd dify
cd docker
cp .env.example .env
podman compose up -d

上記のコマンドを順々に実行していくとpodman compose up -dで、
RuntimeError: missing networks: defaultというエラーが発生します。

docker-compose.yamlに追記しましょう。

[docker-compose.yaml]
networks:
  # create a network between sandbox, api and ssrf_proxy, and can not access outside.
  ssrf_proxy_network:
    driver: bridge
    internal: true
  default:  # この行を追加
    driver: bridge  # この行を追加

参考Issue:Podman deployment issues: RuntimeError: missing networks: default and socket.gaierror: [Errno -3] Temporary failure in name resolution

そしてもう一度podman compose up -dを実行すると、

Error: rootlessport cannot expose privileged port 80, you can add 'net.ipv4.ip_unprivileged_port_start=80' to /etc/sysctl.conf (currently 1024), or choose a larger port number (>= 1024)

と言われるので、

  1. podmanをルートフルモードで起動
  2. Difyを立ち上げるポート番号を変更

上記 1 or 2 の方法どちらかで対応してください。

1. podmanをルートフルモードで起動

podman machine stop
podman machine set --rootful
podman machine start

podmanをルートフルで起動すれば、Difyデフォルト設定のポート番号でも動くはずです。

2. Difyを立ち上げるポート番号を変更

.envにそれぞれ下記の値を入力する必要があります。

[.env]
# ------------------------------
# Docker Compose Service Expose Host Port Configurations
# ------------------------------
EXPOSE_NGINX_PORT={適当なポート番号}  # 1024より大きい値を入力
EXPOSE_NGINX_SSL_PORT={適当なポート番号}  # 1024より大きい値を入力

podmanの仕様上1024より大きい数字をポート番号として使用する必要があるようで、Difyのデフォルトの数値では動かないみたいです。

1 or 2 の対応ができれば、今度こそpodman compose up -dで動くはずです!

Difyの起動を確認

スクリーンショット 2024-11-04 0.23.10.png

http://localhost:{先ほど入力したEXPOSE_NGINX_PORTのポート番号}/installにアクセスするとDifyの画面が見えるはずです。

初回起動時はローディング画面か新規アカウント登録画面なのでよしなに進めていく。

LLMのAPIキーを設定

スクリーンショット 2024-11-04 0.24.48.png
画面右上のアカウント名をクリック

スクリーンショット 2024-11-04 0.24.32.png

「プルダウン」 => 「設定」 => 「モデルプロバイダー」 => モデルを選択し、APIキーを登録。

Difyを使ってみる

スクリーンショット 2024-11-04 2.31.22.png

APIキーの登録ができたら、

「探索」 => 使ってみたいテンプレートからアプリを作成してみてください。

数クリックのみで生成AIを利用したアプリを作ることができます。

追記(一度立ち上がったのに、気付いたら動かなくなってた人向け)

git pullしてDifyの最新版を持ってきてから、
podman compose up -dをしたらDifyコンテナが立ち上がりました。

まとめ

この記事が、podmanとdocker・Intel製チップとAppleシリコン(M1/2/3など)の差異によりローカルでDifyを動かすのに詰まって諦めそうになっていた方のヘルプになれば幸いです。

僕はpcを乗り換えたあと、以前のpcでは動いていたのに、新しいpcではpodmanが動かなくなってしまった原因がarmとamdの違いであると気づくのに最も時間を取られました。(ChatGPTに聞いても全然解決せず。。。)

せっかく書いたので記事を見てほしいという自分のエゴもありますが、できればこの記事もOpenAIのモデル等に食べてもらって、いちいちググらなくてもLLMとの対話で解決できるようになってほしい🙏

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?