junjiem/dify-plugin-repackaging

Scripting tool for downloading Dify plugin package from Dify Marketplace and Github and repackaging [true] offline package.

Dify 플러그인 재패키징

무엇인가요 – 공식 마켓플레이스, GitHub, 또는 로컬 .difypkg 파일에서 Dify AI 플랫폼 플러그인을 다운로드하고, 다른 OS/아키텍처에서 실행되는 Dify 인스턴스에 설치할 수 있도록 재패키징하는 간단한 유틸리티입니다.

왜 존재하는가 – Dify는 서버의 정확한 플랫폼에 맞게 빌드된 플러그인만 허용합니다 (예: many-linux 2014 x86_64). 이 스크립트는 원본 패키지를 가져오고, 적절한 manylinux 태그로 다시 빌드하는 과정을 자동화하여, amd64와 arm64 호스트 모두에 동일한 플러그인을 배포할 수 있게 해줍니다.

사용 방법

  1. GitHub Action – 리포지토리를 포크하고 제공된 워크플로를 활성화한 후 실행하여 생성된 아티팩트를 다운로드합니다. README의 스크린샷에서 UI 단계를 확인할 수 있습니다.
  2. Docker – 이미지를 빌드합니다 (docker build -t dify-plugin-repackaging .)하고 실행하며, 로컬 디렉터리를 마운트하여 재패키징된 .difypkg 파일을 호스트에 표시합니다. 기본 CMD는 예제 인수로 plugin_repackaging.sh를 실행하며, 필요 시 사용자 정의 파라미터로 덮어쓸 수 있습니다.
  3. 직접 스크립트 – 리포지토리를 클론하고 ./plugin_repackaging.sh를 실행합니다:
    • 마켓플레이스: ./plugin_repackaging.sh market <plugin-name> <plugin-version>
    • GitHub: ./plugin_repackaging.sh github <repo> <tag> <output-name>
    • 로컬: ./plugin_repackaging.sh local ./my_plugin.difypkg
    • 다른 플랫폼을 타겟으로 하려면 -p manylinux_2_17_x86_64 (또는 manylinux_2_17_aarch64)를 추가합니다.

사전 요구 사항

  • Linux (RPM 기반) 또는 macOS; RPM 시스템에서는 yum/dnf를 통해 unzip을 설치합니다.
  • Python 3.12.x (dify-plugin-daemon에서 사용되는 동일한 버전).
  • Docker (선택 사항) – 컨테이너 기반 실행을 선호할 경우.

핵심 구성 변경 사항 – 재패키징된 플러그인을 Dify 서버에 설치하려면 README에서 세 가지 .env 변경을 제안합니다:

FORCE_VERIFYING_SIGNATURE=false   # 서명되지 않은 플러그인 허용
PLUGIN_MAX_PACKAGE_SIZE=524288000 # 크기 제한을 500 MiB로 늘림
NGINX_CLIENT_MAX_BODY_SIZE=500M   # Nginx가 더 큰 업로드를 수락할 수 있도록 함

이 설정들은 Dify의 기본 보안 및 크기 제한을 완화합니다.

일반적인 워크플로우

  1. 필요한 플러그인을 식별합니다 (예: langgenius agent 0.0.9).
  2. 적절한 소스 (market, github, 또는 local)로 스크립트(또는 Docker 컨테이너)를 실행합니다.
  3. 스크립트는 마운트된 디렉터리에 .difypkg 파일을 생성합니다.
  4. Dify UI에서 플러그인 관리 → 로컬 패키지 파일로 이동하여 생성된 파일을 업로드합니다.

누가 이 도구가 필요한가 – 특히 ARM 서버에서 커뮤니티 플러그인을 실행하거나 공식 마켓플레이스 바이너리가 사용 불가능한 환경에서 자체 호스팅 Dify 배포를 확장하려는 개발자.

라이선스 / 커뮤니티 – 리포지토리는 오픈소스이며(README에 라이선스 미기재), 스타 히스토리 배지가 표시되어 있어 어느 정도의 커뮤니티 관심을 보이고 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트