自己署名証明書要、Proxyあり環境下でのDifyローカル構築とLocal LLMの動作

今回の読者は以下の方々です。

Difyを触りたい。ただ、SaaSを触るときは色々とコンプラ的な手続きが必要。ローカルで動くらしいが、自己署名証明書とProxyがあるのでうまくいくか不安。

ではやってみましょう。

## WSLを起動　[コマンドの参考はこちら](https://www.tohoho-web.com/ex/wsl.html#distribution)
```
wsl --list --online
wsl --update --web-download
wsl --version
wsl -l -v
# Run distribution
wsl -d Ubuntu
```

## Dify向けディレクトリ作成、モジュールのclone
```
mkdir /mnt/d/app/dify202411
cd /mnt/d/app/dify202411

git config --global http.sslCAInfo "C:\証明書ファイル.crt"
git clone https://github.com/langgenius/dify.git

cd dify/docker
cp .env.example .env
```

## Docker及びDify起動
```
# dockerデーモンが起動していない場合は以下
sudo service docker start
# docker
sudo docker compose up -d
sudo docker ps

#postgresqlが起動していないので一度停止
sudo docker compose down
```

### docker-compose.yamlの修正　[ここを参考に修正](https://qiita.com/Saaaam/items/111bf720f35d6261a29d)
(すでに一度実施済みの場合はdb_dataの定義名は変更すること)


### Difyもう一度起動
```
# docker
sudo docker compose up -d
sudo docker ps
```

### 起動していることを確認
```
/mnt/d/app/dify202411/dify/docker$ sudo docker ps
CONTAINER ID   IMAGE                              COMMAND                  CREATED          STATUS                            PORTS                                                                      NAMES
a963014c0d09   nginx:latest                       "sh -c 'cp /docker-e…"   10 seconds ago   Up 7 seconds                      0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   docker-nginx-1
5c6cde1322ab   langgenius/dify-api:0.11.2         "/bin/bash /entrypoi…"   10 seconds ago   Up 7 seconds                      5001/tcp                                                                   docker-worker-1
3546e35a2c25   langgenius/dify-api:0.11.2         "/bin/bash /entrypoi…"   10 seconds ago   Up 7 seconds                      5001/tcp                                                                   docker-api-1
2f13da6aeaaa   redis:6-alpine                     "docker-entrypoint.s…"   10 seconds ago   Up 9 seconds (health: starting)   6379/tcp                                                                   docker-redis-1
098aa2133c39   langgenius/dify-web:0.11.2         "/bin/sh ./entrypoin…"   10 seconds ago   Up 9 seconds                      3000/tcp                                                                   docker-web-1
b1f4cd95c429   postgres:15-alpine                 "docker-entrypoint.s…"   10 seconds ago   Up 8 seconds (healthy)            5432/tcp                                                                   docker-db-1
349ff27b3988   semitechnologies/weaviate:1.19.0   "/bin/weaviate --hos…"   10 seconds ago   Up 8 seconds                                                                                                 docker-weaviate-1
ed2efdebe7ef   ubuntu/squid:latest                "sh -c 'cp /docker-e…"   10 seconds ago   Up 8 seconds                      3128/tcp                                                                   docker-ssrf_proxy-1
faed2ace7ef9   langgenius/dify-sandbox:0.2.10     "/main"                  10 seconds ago   Up 9 seconds (health: starting)                                                                              docker-sandbox-1
```

以下にアクセスし、管理者登録を行う
http://localhost/install

## オンプレDifyでオンプレモデルを動作させるため、LM Stuidoへのモデルのダウンロード
LM Studioのインストール自体ははまらないと思うので省略する。
LM StudioはProxy対応をしていないので自分でモデルをダウンロードする

### Hugging Face CLIのインストール
```
pip install -U "huggingface_hub[cli]"
```

### モデルのダウンロード
Llamaなどはログインが必要。Hugging FaceのSettingsからTokenを発行し、ログインを行う。それ以外は不要。

```
huggingface-cli login --token $HF_TOKEN --add-to-git-credential
huggingface-cli download モデル名
```
あとは、LM StudioでAPIサーバを起動すれば、同一端末のDifyからアクセスでき、完全なローカル環境のチャットシステムが完成する。

以上