Bun 기반 1분 배포 셀프호스티드 비주얼 CMS
Instatic은 Bun 서버 한 대로 시각적 에디터, 콘텐츠 엔진, 플러그인 샌드박스, 퍼블리셔를 통합해 정적에 가까운 시맨틱 HTML과 컴팩트 CSS를 생성하는 셀프호스티드 CMS이다.
TL;DR
Instatic은 Bun 단일 서버에서 시각적 에디터, 콘텐츠 스토어, 미디어, 플러그인 샌드박스, 퍼블리셔를 통합해 퍼블리시 시점에 페이지를 디스크에 베이크하고 시맨틱 HTML과 작고 단순한 CSS를 생성하는 셀프호스티드 CMS이다. 에디터는 Core Framework 디자인 토큰을 내장해 색상 음영·유동 타입·간격 스케일을 실시간으로 반영하며 비주얼 컴포넌트와 루프를 통해 재사용 가능한 레이아웃을 생성한다. 플러그인은 QuickJS-WASM 샌드박스에서 실행되고 AI 편집은 프로바이더 비종속 드라이버로 외부 모델을 연결해 작동한다. 원클릭 Railway 템플릿으로 약 1~2분 내에 배포가 가능하고 프로덕션 환경에서는 Docker/VPS 또는 Postgres를 선택해 확장할 수 있다. 현재 버전은 0.0.x로 API와 워크플로가 변화할 수 있어 안정성이 필요한 경우 1.0을 기다리는 선택지도 제시된다.
주요 기능
- 에디터 캔버스에서 데스크탑·모바일 프레임을 나란히 편집하고 라이브 모드로 전체 페이지를 직접 수정할 수 있다. 에디터는 실제 DOM 노드로 블록을 배치하고 중첩해 편집할 수 있으며 실시간으로 디자인 토큰 변경을 반영한다. 이 작업 흐름은 미리보기 분리 모델 대신 실제 페이지 구조를 즉시 조작하는 방식을 제공한다.
- 재사용 가능한 비주얼 컴포넌트를 파라미터화하고 슬롯을 정의해 한 번 수정하면 모든 인스턴스가 갱신되게 할 수 있다. 파라미터 타입은 문자열·숫자·색상·이미지·리치텍스트 등으로 지정되며, 자기 참조되는 컴포넌트는 사전에 차단되어 순환 참조를 방지한다. 템플릿과 루프를 통해 데이터 컬렉션을 반복 렌더링할 수 있어 게시판·상품 그리드 같은 패턴을 자동화한다.
- 퍼블리시 단계에서 페이지를 디스크에 베이크해 정적 파일로 제공함으로써 별도 런타임이나 빌더 속성 없이 빠른 로드를 달성한다. 라우트가 변경되는 경우에는 버전된 인메모리 캐시를 사용해 동적 부분만 처리하고 퍼블리싱 시 버전이 증가해 오래된 항목이 점진적으로 소진된다. 방문자에게 전달되는 런타임은 자동 감지된 per-visitor 부분만 지연 로드하는 1.1 kB 규모의 경량 런타임으로 구성된다.
- 플러그인 시스템은 ZIP 매니페스트와 QuickJS-WASM 샌드박스에서 서버 엔트리포인트를 실행해 파일 시스템·환경변수·네트워크 접근을 기본 차단 상태로 유지한다. SDK를 통해 플러그인은 HTTP 라우트, 어드민 페이지, 루프용 데이터 소스, 스토리지 어댑터, 스케줄 배경작업을 등록할 수 있으며 설치 시 명시적 권한 부여 모델을 따른다. 에디터 확장은 관리자 창에서 동작하고 'editor.code' 권한을 별도로 요구한다.
어떻게 동작하는가
퍼블리시는 페이지를 빌드 시점에 파일로 베이크해 디스크에 저장하는 방식으로 동작하므로 방문자는 파일을 직접 받아 빠르게 로드한다. 동적으로 변해야 하는 경로는 버전된 인메모리 캐시에 보관하며, 퍼블리시가 이루어지면 버전이 올라가고 오래된 항목은 점진적으로 무효화된다. per-visitor로 남겨야 하는 부분은 약 1.1 kB 크기의 경량 런타임이 자동으로 감지해 지연 로드하도록 구성되어 있다.
해결 문제
웹사이트를 운영하려면 일반적으로 헤드리스 CMS, 프레임워크, 호스팅, 폼 서비스, 이미지 CDN 등 여러 도구를 조합해야 하고 각각의 비용과 대시보드, 장애 책임이 분산된다. Instatic은 시각적 에디터, 콘텐츠 스토어, 미디어 관리, 인증, 폼, 플러그인, 퍼블리셔를 하나의 Bun 서버로 통합해 스택 파편화를 줄인다. 그 결과 퍼블리셔가 생성하는 출력은 시맨틱 HTML과 소형 CSS로 유지되어 별도의 런타임이나 빌더 속성 없이도 정적인 파일처럼 배포가 가능하다.
지금 주목받는 이유
프로젝트는 Bun 기반 단일 서버 아키텍처, Core Framework 내장, 그리고 Railway 등으로의 원클릭 배포 흐름을 앞세워 빠른 시범 배포와 간편한 운영 경험을 내세운다. README와 메타데이터상에서 수천 개의 스타를 보유하고 있고 문서에 데모 영상과 배포 템플릿을 포함해 입문장벽을 낮춘 점이 주목 요인으로 나타난다. 또한 플러그인 샌드박스와 AI 편집 드라이버가 결합된 확장성 전략이 커뮤니티의 관심을 끌고 있다.
차별점
- Core Framework를 내장해 디자인 토큰과 유동 타입·스페이싱 스케일을 에디터 수준에서 직접 조작할 수 있게 통합해 별도의 디자인 시스템 설치가 필요 없다.
- 퍼블리셔가 페이지를 파일로 베이크하고 에디터 런타임을 공개 페이지에 남기지 않으므로 배포 후 결과물이 깨끗한 시맨틱 HTML과 컴팩트 CSS로 유지된다.
- 플러그인 서버 코드를 QuickJS-WASM 샌드박스에서 실행해 기본적으로 파일 시스템과 네트워크 접근을 차단하며 소유자가 권한을 부여한 경우에만 외부 접근을 허용하는 보안 경계를 제공한다.
사용 사례
- 블로그·포트폴리오·소규모 비즈니스 사이트처럼 단일 사이트를 빠르게 띄우고 관리해야 하는 경우에는 SQLite 기본 설정과 원클릭 배포 흐름으로 빠른 론치가 가능하다. 에디터를 통해 디자인과 콘텐츠를 같은 환경에서 편집하므로 별도 프론트엔드 개발 없이도 페이지를 운영할 수 있다. 퍼블리시된 산출물이 정적 파일처럼 동작하므로 CDN과 조합해 성능을 최적화하기도 용이하다.
- 여러 저자가 참여하는 팀이나 백업·스케일이 필요한 경우에는 Postgres를 선택해 데이터베이스를 분리하고 팀 작업 흐름과 버전 관리를 활용할 수 있다. 데이터 테이블과 루프를 활용해 제품 목록, 포트폴리오, 사례집 같은 컬렉션 기반 페이지를 구성하고 관리할 수 있다. 폼 제출과 미디어 관리는 자체 저장소에 남기므로 타사 서비스 의존도를 줄일 수 있다.
- 사내 호스팅 정책이나 맞춤 백업 정책을 적용해야 하는 경우에는 Docker/VPS 배포 지침과 Caddy TLS 가이드를 따라 자체 서버에서 운영할 수 있다. 플러그인 샌드박스로 내부 비즈니스 로직을 안전하게 실행하면서도 에디터 확장과 백오피스 커스터마이즈가 가능하다. AI 편집 기능은 사용자가 선택한 모델 드라이버를 연결해 편집 작업을 자동화하는 보조 도구로 활용할 수 있다.
시작하기
로컬 개발은 Bun이 설치돼 있으면 가능하며 기본 명령은 저장소 클론, 의존성 설치, 개발 서버 실행의 세 단계로 구성된다. 예시 명령은 git clone https://github.com/corebunch/instatic.git 부터 bun install, bun run dev 순서이며 첫 접속 시 사이트 생성과 소유자 계정 설정을 안내하는 온보딩이 진행된다. 프로덕션 목적이라면 제공된 compose 파일과 Docker 이미지를 사용해 INSTATIC_IMAGE=ghcr.io/corebunch/instatic:latest docker compose -f compose.prod.yml -f compose.sqlite.yml up -d 같은 방식으로 배포할 수 있다.
요구사항
- 런타임으로 Bun을 요구하며 개발과 빌드, 서버 실행 모두 Bun 환경에서 동작한다.
- 기본 데이터베이스는 SQLite이며 팀 규모나 백업 필요성에 따라 Postgres를 선택할 수 있다.
- 관리자 UI는 React 기반으로 빌드되므로 로컬 개발 시에는 Vite 빌드 툴과 node 호환 환경이 필요할 수 있다.
이미지 분석



6.8k
Stars
598
Forks
+213
Trending
7
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.