セキュアFAT Zscaler で DIfy を動かす

やること

Difyの plugin_daemonapi のコンテナにZscalerのルート証明書を参照させる

事前準備

  • WSLでDockerが動くようにしておく
  • Windows から Zscaler のルート証明書を抽出しておく。ここでのファイル名は zscaler_root_ca.crt
  • 下の docker-compose.override.yaml を作る
# docker-compose.override.yaml
version: '3.8'
services:
  plugin_daemon:
    volumes:
      - ./zscaler_root_ca.crt:/usr/local/share/ca-certificates/zscaler_root_ca.crt:ro

    environment:
      REQUESTS_CA_BUNDLE:    /etc/ssl/certs/ca-certificates.crt
      SSL_CERT_FILE:         /etc/ssl/certs/ca-certificates.crt
      CURL_CA_BUNDLE:        /etc/ssl/certs/ca-certificates.crt
      NODE_EXTRA_CA_CERTS:   /etc/ssl/certs/ca-certificates.crt
      PIP_EXTRA_ARGS: "--native-tls"
    entrypoint: /bin/bash
    command:
      - "-c"
      - |
        update-ca-certificates && exec /app/entrypoint.sh

  api:
    volumes:
      - ./zscaler_root_ca.crt:/usr/local/share/ca-certificates/zscaler_root_ca.crt:ro

    environment:
      REQUESTS_CA_BUNDLE:    /etc/ssl/certs/ca-certificates.crt
      SSL_CERT_FILE:         /etc/ssl/certs/ca-certificates.crt
      CURL_CA_BUNDLE:        /etc/ssl/certs/ca-certificates.crt
      NODE_EXTRA_CA_CERTS:   /etc/ssl/certs/ca-certificates.crt
    entrypoint: /bin/bash
    command:
      - "-c"
      - |
        update-ca-certificates && exec /entrypoint.sh

インストール手順

# WSLで
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env

# EXPOSE_NGINX_PORT=80 となっているのを確認
grep EXPOSE_NGINX_PORT .env

# 準備してしておいた zscaler_root_ca.crt と docker-compose.override.yaml を配置
cp hoge/zscaler_root_ca.crt .
cp hoge/docker-compose.override.yaml .

# オーバーライドを含めて起動(-d はデタッチ起動)
docker compose up -d

# ブラウザから
http://localhost

# 停止
docker compose stop

# ログを見る
docker logs docker-plugin_daemon-1 --tail 100
docker logs docker-api-1 --tail 100