EmDash 1.0: the stable CMS with a secure plugin registry
EmDash 1.0 출시 — 보안 플러그인 레지스트리를 갖춘 CMS
Cloudflare가 Astro 기반 오픈소스 CMS EmDash 1.0을 공개했습니다. 서명된 플러그인 배포 기록을 검증하고 플러그인별 권한을 격리하는 구조가 특징이며, Cloudflare Blog 운영 경험으로 편집·미디어·확장성 기능을 다듬었습니다.
- 주제
AI 요약
Cloudflare가 Astro 기반 콘텐츠 관리 시스템 EmDash 1.0을 공개했습니다. 무료 오픈소스 프로젝트로, 개발자는 Astro로 사이트를 만들고 편집자는 관리자 화면에서 콘텐츠를 관리합니다. 에이전트는 API, CLI, 내장 MCP 서버를 이용합니다. Cloudflare는 편집, 미디어 관리, 현지화, 마이그레이션, 배포 흐름을 실제 운영 환경에서 다듬었다고 설명합니다.
프로덕션 운영으로 다듬은 1.0
EmDash는 4월 1일 WordPress의 ‘정신적 후계자’라는 표현과 함께 처음 소개됐습니다. 만우절 농담이 아니냐는 의구심에 Cloudflare는 안정판 1.0 출시로 답했습니다. 베타 이후 5개월 동안 데이터 안전성, 데이터베이스 마이그레이션, 편집 작업 흐름, 플러그인 보안, 성능, 관리자 화면과 API의 신뢰성을 개선했습니다.
Cloudflare는 8월에 자사 블로그를 EmDash로 이전했습니다. 이 과정에서 현지화, 미디어 관리, 편집기와 확장성 요구를 확인했습니다. 블로그는 주당 수백만 페이지뷰와 초당 최대 5,000건의 정상 요청, 간헐적인 DDoS 공격을 감당해야 했습니다. 선택 기능인 KV 객체 캐시, Hyperdrive 데이터베이스 어댑터, Workers Cache 호환성도 이전 작업에서 나왔습니다.
개발에는 175명 넘는 기여자가 참여했고, 커밋은 1,800건을 넘었습니다. 25개 언어 번역도 이뤄졌습니다. Cloudflare는 Avulux가 WordPress로 운영하던 맞춤형 마이크로사이트를 EmDash로 옮기는 데 하루도 걸리지 않았다고 소개합니다. EmDash Agent Skills를 이전 과정에 활용했습니다.
배포처가 소유권을 쥐지 않는 플러그인 레지스트리
EmDash의 플러그인 레지스트리는 AT Protocol(atproto)을 기반으로 합니다. 플러그인 개발자는 Bluesky 등에서도 쓰이는 이 프로토콜의 휴대 가능한 신원인 Atmosphere 계정으로 게시합니다. 패키지와 릴리스 기록은 개발자 계정에 저장되며 개발자 서명을 받습니다. EmDash는 기본 카탈로그 서비스를 운영하지만, 다른 서비스도 같은 게시물을 색인해 별도 카탈로그와 정책을 만들 수 있습니다.
기존 레지스트리는 게시자 계정, 패키지의 기준 기록, 검색 카탈로그를 한곳에서 운영하는 경우가 많습니다. 계정 정지나 서비스 종료가 생기면 게시자가 신원과 릴리스 이력을 다른 곳으로 옮기기 어렵습니다. EmDash는 게시물과 카탈로그를 분리해 이 문제를 피하려 합니다. 기본 카탈로그는 이름, 설명, 링크, 이미지의 부적절한 콘텐츠를 숨길 수 있지만, 릴리스 내용을 바꾸거나 플러그인 소유권을 가져가지는 않습니다.
레지스트리는 서명된 Merkle Search Tree를 이용해 릴리스 기록이 게시자 계정의 서명된 커밋에 포함됐는지 검증합니다. 이어 체크섬, 패키지 이름과 버전, 요청 권한, 필요한 빌드 출처 정보를 확인하고 내려받은 번들이 서명된 기록과 일치하는지 검사합니다. 현재 플러그인은 무료이며, 향후에도 분산형 모델을 유지하면서 유료 배포를 지원할 계획이라고 밝혔습니다.
권한을 제한하는 플러그인 샌드박스
플러그인은 각자 격리된 런타임에서 실행되며 자체 비공개 저장소만 기본으로 사용합니다. 사이트 콘텐츠와 미디어, 사용자 정보, 비밀 값, 환경 변수, 파일 시스템, 네트워크에는 접근하지 못합니다. 추가 권한은 플러그인이 선언하고 사이트 관리자가 승인해야 합니다. 설치 전 요청 권한을 확인하고, 승인된 권한만 런타임이 허용합니다.
권한은 서로 독립적입니다. 이미지 최적화 플러그인에 미디어 관리 권한을 줘도 사용자 콘텐츠는 노출되지 않습니다. 검색 플러그인이 게시된 글을 읽고 검색 서비스에 연결하더라도 글을 수정하거나 다른 호스트에 접속하지 못합니다. 웹훅 플러그인도 지정된 이벤트와 공개 목적지에만 접근하도록 제한할 수 있습니다.
Cloudflare에서는 Worker Loader를 통해 플러그인을 Dynamic Worker로 실행합니다. Node.js 환경에서는 오픈소스 Workers 런타임인 workerd를 별도 프로세스로 띄우고 플러그인마다 격리된 서비스로 실행합니다. 두 환경은 같은 매니페스트와 권한 제한 API를 사용합니다.
사이트 제작 플랫폼과 EmDash Build
EmDash는 단일 Astro 사이트뿐 아니라 고객별 웹사이트를 제공하는 호스팅 플랫폼도 겨냥합니다. 플랫폼은 관리자 화면을 그대로 쓰거나 API와 CLI로 자체 화면을 만들 수 있고, MCP 서버 앞에 에이전트를 둘 수도 있습니다. Cloudflare Workers for Platforms를 쓰면 고객 사이트를 각각 Worker로 실행할 수 있습니다.
Cloudflare는 오픈소스 AI 사이트 빌더 EmDash Build의 알파 버전도 공개했습니다. 에이전트가 요청에 맞춰 콘텐츠 모델과 페이지를 만들고 MCP 서버로 콘텐츠를 채웁니다. 사이트에는 서버 렌더링 Astro 페이지, 데이터베이스, 미디어 저장소, 관리자 화면이 포함됩니다. 프로젝트마다 Cloudflare Sandbox 컨테이너를 제공하며, 에이전트는 Agents SDK를 기반으로 작업 결과를 확인합니다. Artifacts는 변경 사항을 Git 커밋으로 기록합니다. 게시할 때 콘텐츠를 프로덕션 EmDash 사이트로 옮겨 Workers for Platforms에 배포합니다.
Reddit 반응
- @u/phoenix1984 — 새 CMS 발표를 보는 일이 오랜만이라 꽤 신선합니다. 제가 이런 말을 하게 될 줄은 몰랐습니다.
- @u/myriadOslo — Cloudflare 배포 버튼을 눌러 시험했는데, 로그인 직후 R2 업그레이드를 권하는 창이 떴습니다. 제공량이 넉넉하더라도 신용카드를 요구하면 경계심이 생깁니다. 사용량 한도를 설정할 방법도 찾지 못했습니다. 비용 폭탄을 막을 호스팅 방법을 찾기 전에는 쓰지 않겠습니다.
- @u/TKI_Kesasar — 저는 개발자지만 WordPress가 작업하기 어렵다고 느껴 싫어합니다. EmDash도 시간이 지나면 비대해지고 느려지며 보안 문제가 늘고 런타임 설정이 복잡해지는 길을 갈지 궁금합니다.
- @u/Lower_Rabbit_5412 — WordPress는 사용법을 모르면 비대해지고 느려지며 보안 문제가 생깁니다. 불필요한 플러그인을 피하고 핵심을 최신으로 유지하면 문제가 많지 않습니다. 문제는 고객이 그 조언을 따르게 하는 일입니다.
- @u/TKI_Kesasar — 제가 WordPress 개발자가 아니라서 숙련도 문제일 수 있습니다. 하지만 제 작업 방식에는 WordPress가 잘 맞지 않습니다. 오래된 WordPress 사이트를 고쳐 달라는 고객이 있는데, 테마를 완전히 바꾸려다 보니 재앙에 가까웠습니다. 처음부터 직접 코딩하고 싶습니다.
- @u/Dramatic_Mastodon_93 — 꽤 괜찮아 보입니다. Astro와 Cloudflare를 좋아합니다. 프로그래밍 없이 몇 번 눌러 무료 개인 블로그를 만들 수 있는 방법으로는 제가 아는 한 유일하고, 최신 기술을 쓰며 관리자 로그인에 패스키만 허용합니다. 기능도 풍부하고 블로그 템플릿도 보기 좋습니다. 오래 유지되기만 바랍니다.
- @u/Momkay — 흥미로워서 살펴보겠습니다. 그런데 왜 Cloudflare 생태계에 묶이는 건가요?
- @u/Dramatic_Mastodon_93 — Cloudflare에 묶이는 건 아닙니다.
- @u/krileon — 샌드박스 플러그인이라는 주요 장점을 쓰려면 Cloudflare Workers가 필요합니다. Workers 요금제가 없으면 샌드박스를 현실적으로 쓰기 어렵고, 샌드박싱을 끄면 비슷한 CMS가 수천 개 있습니다. workerd로 해결하려는 것 같지만 설정이 복잡하고 보안이 강화된 샌드박스도 아니라면 실익이 적습니다.
- @u/SpartanDavie — Cloudflare에 어떤 식으로 묶인다는 건가요? 오픈소스이며 Node.js가 돌아가는 곳이면 어디서든 쓸 수 있다고 명시돼 있습니다. 발표 당일 개발자 인터뷰에서도 Cloudflare에서만 작동하는 CMS를 만들 이유가 없다고 했습니다.
- @u/Kyle772 — 몇 달 전에 써봤는데 맞춤화와 확장이 직관적이지 않았고, WordPress 대안 말고 다른 용도에는 제한적으로 느껴졌습니다. 계속 지켜보겠지만 적합한 영역을 찾으려면 3~4년은 더 걸릴 것 같습니다.
- @u/Lopsided_Road_109 — Cloudflare가 운영하는 분산형 레지스트리라니, 주황색 로고를 붙인 npm 같네요. 플러그인 샌드박스는 실제 장점이지만 레지스트리는 그렇지 않습니다.
- @u/creaturefeature16 — WordPress나 다른 헤드리스 CMS, 특히 Astro용 대안으로 인정받으려면 갈 길이 멉니다. 고객 프로젝트에 쓰지는 않겠지만 개인 프로젝트에서 시험해볼 수는 있습니다. 아직은 더 다듬어야 합니다.
- @u/Dramatic_Mastodon_93 — 블로그 템플릿을 로컬에서 시험해봤습니다. 문구와 브랜딩만 바꾸면 개인 블로그에 그대로 써도 괜찮겠습니다.
원문: Cloudflare / 번역·요약: Trawling