플러그인 설치

이 페이지

관리자는 플러그인 레지스트리에서 샌드박스 플러그인을 설치하거나 astro.config.mjs에 npm 패키지를 등록할 수 있습니다. 구성 기반 플러그인은 샌드박스 또는 사이트 프로세스에서 실행될 수 있습니다.

관리자 설치 준비

레지스트리 설치에는 다음이 필요합니다.

  • plugins:manage 권한이 있는 관리자 계정.
  • 다운로드한 플러그인 번들을 위한 구성된 스토리지.
  • 사용 가능한 샌드박스 러너.

Cloudflare Workers에서는 @emdash-cms/cloudflare의 sandbox()를 사용하세요.

import { sandbox } from "@emdash-cms/cloudflare";
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";

export default defineConfig({
	integrations: [
		emdash({
			sandboxRunner: sandbox(),
		}),
	],
});

Cloudflare 러너는 Worker Loader를 사용해 플러그인마다 별도 Worker를 만듭니다. Workers Paid 플랜과 LOADER라는 이름의 worker_loaders 바인딩이 필요합니다. 샌드박스 플러그인은 PluginBridge를 통해 콘텐츠, 미디어, 스토리지, 네트워크, 이메일 API에 도달하므로 사이트의 Worker 진입점은 해당 클래스를 내보내야 합니다.

*-cloudflare 템플릿은 PluginBridge를 내보내지만 Worker Loader 바인딩은 주석 처리해 두어, 새 프로젝트가 Workers 무료 플랜에 배포될 수 있습니다. 스캐폴딩 중 샌드박스 플러그인을 활성화하거나 Cloudflare 샌드박스 설정을 따라 나중에 바인딩을 추가하세요. sandbox() 헬퍼는 빌드 시 유효한 Wrangler 구성을 읽습니다. LOADER가 없으면 레지스트리 탐색은 계속 가능하지만 구성 관리 샌드박스 플러그인은 로드되지 않고, 설치 또는 업데이트 요청은 SANDBOX_NOT_AVAILABLE을 반환합니다.

Node.js에서는 러너와 workerd 피어 의존성을 설치하세요.

npm install @emdash-cms/sandbox-workerd workerd

workerd 프로세스는 Node.js 서버와 별도로 플러그인 코드를 실행합니다. EmDash 통합에서 러너를 선택하세요.

import { defineConfig } from "astro/config";
import emdash from "emdash/astro";

export default defineConfig({
	integrations: [
		emdash({
			sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox",
		}),
	],
});

두 플랫폼의 개발 설정, 런타임 요구 사항, 리소스 한도, 러너 사용 불가 오류는 플러그인 샌드박스를 보세요.

레지스트리에서 설치

  1. 관리 패널에서 Registry를 엽니다.
  2. 플러그인을 검색하고 상세 페이지를 엽니다.
  3. 릴리스를 선택하고 게시자, 메타데이터, 요청된 권한, 검증 상태를 검토합니다.
  4. Install을 선택합니다.
  5. 동의 대화상자에서 검증된 릴리스 식별자와 권한을 검토한 뒤 확인합니다.

EmDash는 게시자의 현재 서명된 레코드를 검증하고, 샌드박스 러너를 통해 로드하기 전에 다운로드한 번들을 확인합니다. 플러그인은 Plugins에 나타나며 비활성화하거나 구성할 수 있습니다. 전체 검증 및 신뢰 모델은 플러그인 레지스트리를 보세요.

권한 검토

동의 대화상자는 플러그인이 선언한 모든 권한을 보여 줍니다. 일반적인 권한은 다음과 같습니다.

권한부여된 접근
content:read사이트 콘텐츠 읽기
content:write콘텐츠 생성, 업데이트, 삭제
content:revisions:read유지된 콘텐츠 개정 이력 읽기
schema:read컬렉션 및 필드 정의 읽기
redirects:read리다이렉트 규칙 읽기
redirects:write방문자 전송 위치 변경
media:read준비된 미디어의 안전한 메타데이터 읽기
media:bytes:read준비된 미디어의 파일 내용 및 콘텐츠 해시 읽기
media:metadata:write미디어 대체 텍스트, 캡션, 초점 변경
media:write미디어 업로드, 교체, 삭제
network:request플러그인의 허용 호스트 목록으로 요청 보내기

대화상자는 플러그인이 선언한 경우 Model Context Protocol(MCP) 도구로 노출된 플러그인 라우트도 식별합니다. 전체 권한 모델은 Capabilities 및 보안을 보세요.

플러그인 업데이트

  1. 관리 패널에서 Plugins를 엽니다.
  2. Check for updates를 선택합니다.
  3. 사용 가능한 릴리스가 있는 레지스트리 플러그인에서 Update를 선택합니다.
  4. 동의 대화상자를 검토한 뒤 업데이트를 확인합니다.

레지스트리 업데이트는 권한이나 MCP 도구를 추가하거나, 라우트가 인증됨에서 공개로 바뀔 때 다시 확인이 필요합니다. EmDash는 변경을 승인할 때까지 설치된 버전을 유지합니다.

플러그인 제거

  1. 관리 패널에서 Plugins를 열고 설치된 플러그인을 펼칩니다.
  2. Uninstall을 선택합니다.
  3. 이후 재설치를 위해 플러그인 저장 데이터가 필요 없을 때만 Also delete plugin storage data를 선택합니다.
  4. 제거를 확인합니다.

EmDash는 설치된 번들을 제거하고 플러그인 로드를 중지합니다. 플러그인 스토리지 데이터는 기본적으로 유지됩니다.

npm에서 설치

네이티브 플러그인과 구성 관리 샌드박스 플러그인은 npm 의존성으로 설치합니다. 패키지 안내에 따라 plugins: [] 또는 sandboxed: []를 선택하세요.

다음 예는 네이티브 Field Kit 플러그인을 등록합니다.

import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import { fieldKitPlugin } from "@emdash-cms/plugin-field-kit";

export default defineConfig({
	integrations: [
		emdash({
			plugins: [fieldKitPlugin()],
		}),
	],
});

구성 관리 플러그인은 npm 의존성을 업데이트하고 사이트를 배포할 때 바뀝니다. 관리 패널에서 설치하거나 제거할 수 없습니다.

설치 방법 선택

레지스트리npm의 sandboxed: []npm의 plugins: []
설치 및 업데이트관리 패널의존성 변경 및 배포의존성 변경 및 배포
실행구성된 샌드박스 러너구성된 샌드박스 러너사이트 프로세스
EmDash 접근선언된 플러그인 API만선언된 플러그인 API만선언된 플러그인 API와 직접 프로세스 접근
Node.js API 및 직접 fetch()사용 불가사용 불가사용 가능
React 관리 컴포넌트사용 불가사용 불가사용 가능
Portable Text 렌더러사용 불가사용 불가사용 가능

React 관리 컴포넌트, Portable Text 렌더러, 페이지 프래그먼트, 또는 사이트 프로세스에 대한 직접 접근이 필요할 때 네이티브 플러그인을 사용하세요. 선언된 플러그인 API로 동작할 수 있을 때 샌드박스 플러그인을 사용하세요.