플러그인 설치

이 페이지

EmDash 플러그인은 두 가지 방법으로 설치할 수 있습니다: 관리 대시보드를 통해 마켓플레이스에서, 또는 Astro 구성에 직접 추가합니다. 마켓플레이스 플러그인은 항상 샌드박스에서 실행됩니다. 구성 기반 플러그인은 선언된 배열(sandboxed: [] vs plugins: [])에 따라 샌드박스 또는 인프로세스로 실행됩니다.

마켓플레이스에서

관리 대시보드에는 플러그인을 검색, 설치, 관리할 수 있는 마켓플레이스 브라우저가 포함되어 있습니다.

전제 조건

마켓플레이스 플러그인을 설치하려면 사이트에 다음이 필요합니다:

  1. 샌드박스 러너 구성 — 마켓플레이스 플러그인은 격리된 런타임에서 실행되며, 샌드박스 러너가 필요합니다. 다음 구성으로 활성화합니다:

    import { defineConfig } from "astro/config";
    import emdash from "emdash/astro";
    
    export default defineConfig({
      integrations: [
        emdash({
          marketplace: "https://marketplace.emdashcms.com",
          sandboxRunner: "@emdash-cms/sandbox-cloudflare",
        }),
      ],
    });

    Cloudflare Workers에서 샌드박싱은 Dynamic Worker Loader API를 사용합니다(추가 설정 불필요). Node.js에서는 workerd 샌드박스 러너를 설치합니다:

    npm install @emdash-cms/sandbox-workerd

    그런 다음 러너를 명시적으로 전달합니다:

    emdash({
      marketplace: "https://marketplace.emdashcms.com",
      sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox",
    })

    개발 시, 더 빠른 샌드박스 시작을 위해 miniflare를 개발 의존성으로 설치합니다:

    npm install -D miniflare
  2. 관리자 접근 — 관리자만 플러그인을 설치하거나 제거할 수 있습니다.

탐색 및 설치

  1. 관리 패널을 열고 플러그인 > 마켓플레이스로 이동합니다
  2. 플러그인을 탐색하거나 검색합니다
  3. 플러그인 카드를 클릭하여 상세 페이지를 봅니다 — README, 스크린샷, 기능, 보안 감사 결과
  4. 설치를 클릭합니다
  5. 기능 동의 대화상자를 검토합니다 — 플러그인이 접근할 수 있는 항목이 표시됩니다
  6. 설치를 확인합니다

플러그인이 다운로드되어 사이트의 R2 버킷에 저장되고 샌드박스 러너에 로드됩니다. 즉시 활성화됩니다.

기능 동의

설치 전에 플러그인이 접근해야 하는 항목을 나열하는 대화상자가 표시됩니다:

기능의미
content:read콘텐츠를 읽습니다
content:write콘텐츠를 생성, 업데이트, 삭제합니다
media:read미디어 라이브러리에 접근합니다
media:write미디어를 업로드하고 관리합니다
network:request특정 호스트에 네트워크 요청을 보냅니다

보안 감사

마켓플레이스의 모든 플러그인 버전은 자동 보안 감사를 거칩니다. 감사 결과는 플러그인 카드에 표시됩니다:

  • 통과 — 문제가 발견되지 않았습니다
  • 경고 — 사소한 우려 사항이 표시되었습니다(결과를 검토하세요)
  • 실패 — 중대한 보안 문제가 감지되었습니다

플러그인의 상세 페이지에서 전체 감사 보고서를 볼 수 있으며, 개별 발견 사항과 심각도가 포함됩니다.

업데이트

설치된 플러그인의 새 버전이 있을 때:

  1. 관리 패널에서 플러그인으로 이동합니다
  2. 마켓플레이스 플러그인에 업데이트 가능 배지가 표시됩니다
  3. 업데이트를 클릭하여 변경 로그와 기능 변경 사항을 확인합니다
  4. 새 버전이 추가 기능을 요구하면 차이점이 표시되고 승인이 필요합니다
  5. 확인하여 업데이트합니다

제거

  1. 관리 패널에서 플러그인으로 이동합니다
  2. 제거하려는 마켓플레이스 플러그인을 클릭합니다
  3. 제거를 클릭합니다
  4. 플러그인의 저장된 데이터를 유지할지 삭제할지 선택합니다
  5. 확인합니다

플러그인의 샌드박스 코드가 R2 버킷에서 제거되고 즉시 실행이 중지됩니다.

구성에서

네이티브 플러그인 — 자체 코드 또는 npm을 통해 설치한 패키지 — 은 Astro 구성에 직접 추가합니다. 다음 예시는 SEO 플러그인을 등록합니다:

import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import seoPlugin from "@emdash-cms/plugin-seo";

export default defineConfig({
  integrations: [
    emdash({
      plugins: [
        seoPlugin({ generateSitemap: true }),
      ],
    }),
  ],
});

네이티브 플러그인:

  • 인프로세스로 실행됩니다(샌드박스 아님)
  • Node.js API에 대한 전체 접근 권한이 있습니다
  • 빌드 시 및 매 서버 시작 시 로드됩니다
  • 관리 UI에서 설치하거나 제거할 수 없습니다

마켓플레이스 vs. 구성 — 언제 무엇을 사용할까

마켓플레이스 (샌드박스)구성 (네이티브 또는 인프로세스 샌드박스)
설치 방법관리 UI에서 원클릭코드 변경 + npm install + 배포
실행구성된 러너를 통한 샌드박스 런타임인프로세스 (또는 sandboxed: []에 나열되고 러너가 사용 가능한 경우 샌드박스)
기능샌드박스 브릿지로 적용 — ctx.* 게이팅과 런타임 격리ctx.* 게이팅만 (인프로세스 플러그인은 직접 fetch(), env, imports로 우회 가능)
Node.js API사용 불가전체 접근 (인프로세스만)
React 관리 페이지아니오 (대신 Block Kit)예 (네이티브 플러그인)
PT 렌더링 컴포넌트아니오예 (네이티브 플러그인)
업데이트관리에서 원클릭버전 범프 + 배포
최적 용도대부분의 플러그인빌드 시 통합이 필요한 플러그인