오픈소스 스케줄링 플랫폼 Cal.diy 자가 호스팅 가이드
요약
Cal.diy는 상업적 종속성이 없는 100% 오픈소스 커뮤니티 기반 스케줄링 플랫폼입니다. 기존 Cal.com의 엔터프라이즈 기능을 제거하고 MIT 라이선스로 공개되어, 사용자가 자신의 인프라에 직접 배포(self-host)할 수 있도록 설계되었습니다. 이 가이드는 Node.js (>=18.x), PostgreSQL (>=13.x), Yarn을 요구하며, Git 클론부터 환경 변수 설정(.env 파일), 그리고 최종적으로 `yarn dx` 명령어를 통해 로컬에서 플랫폼을 구동하는 상세 절차를 안내합니다.
핵심 포인트
- Cal.diy는 Cal.com의 커뮤니티 에디션으로, Teams, SSO/SAML 등 상업적 엔터프라이즈 기능이 모두 제거된 100% 오픈소스(MIT 라이선스) 버전입니다.
- 자가 호스팅을 위해서는 Node.js (>=18.x), PostgreSQL (>=13.x), Yarn 등의 환경 설정과 서버 관리 지식이 필수적으로 요구됩니다.
- 설치 과정은 Git 클론 후 `yarn`으로 패키지를 설치하고, `.env` 파일을 통해 인증 정보 및 비밀 키를 생성하여 구성하는 순서로 진행됩니다.
- 애플리케이션 실행 시 메모리 제한을 늘리기 위해 `export NODE_OPTIONS="--max-old-space-size=16384"`와 같은 환경 변수 설정이 권장됩니다.
Cal.diy는 상업적 종속성 없이 사용자가 자신의 인프라에 직접 배포(self-host)할 수 있도록 설계된, 커뮤니티 주도형 오픈소스 스케줄링 플랫폼입니다. 이는 원래의 Cal.com에서 기업용/상업적 코드를 모두 제거한 포크(fork) 버전이며, 100% MIT 라이선스를 따릅니다.
주요 특징 및 장점:
- 완전한 오픈소스: 전체 코드베이스가 MIT 라이선스로 공개되어 독점적인 'Enterprise Edition' 기능에 대한 제약이 없습니다.
- 상업적 종속성 없음: 조직(Organizations), 팀(Teams), 인사이트(Insights), 워크플로우(Workflows), SSO/SAML 등 기업용 기능이 모두 제거되었습니다.
- 라이선스 키 불필요: 별도의 Cal.com 계정이나 라이선스가 필요 없이 즉시 사용 가능합니다.
⚠️ 중요 경고 및 전제 조건:
Cal.diy는 자가 호스팅(self-hosted) 프로젝트이며, 관리형 서비스 버전은 제공되지 않습니다. 따라서 서버 관리, 데이터베이스 관리, 민감한 데이터 보안에 대한 고급 지식이 필수적으로 요구됩니다. 본 가이드를 진행하기 전에 이러한 책임과 난이도를 충분히 인지해야 합니다.
필수 환경 설정:
Cal.diy를 구동하려면 다음의 기술 스택이 필요합니다:
- Node.js (버전: >=18.x)
- PostgreSQL (버전: >=13.x)
- Yarn (권장 패키지 매니저)
설치 및 구동 절차:
- 리포지토리 클론: Git을 사용하여 프로젝트를 로컬 환경에 복제합니다.
git clone https://github.com/calcom/cal.diy.git - 패키지 설치: 프로젝트 폴더로 이동 후,
yarn명령어를 실행하여 필요한 모든 패키지를 설치합니다. - .env 파일 설정: 환경 변수 설정을 위해
.env.example파일을 복사하여.env파일을 생성해야 합니다. 이 과정에서 보안을 위한 비밀 키(Secret Key)를 생성하고 추가하는 것이 중요합니다 (예:NEXTAUTH_SECRET,CALENDSO_ENCRYPTION_KEY). - Node 버전 관리: 만약 Node.js 버전이 요구 사항과 다를 경우,
nvm(Node Version Manager)을 사용하여 필요한 버전을 설치하고 활성화해야 합니다. - 데이터베이스 초기화 및 실행: Docker와 Docker Compose가 설치되어 있어야 하며, 다음 명령어를 통해 로컬 PostgreSQL 인스턴스를 시작하고 테스트 사용자들을 포함한 데이터베이스를 구축합니다.
yarn dx - 추가 최적화 (선택): Node 프로세스의 메모리 제한을 늘리기 위해 쉘 스크립트에
export NODE_OPTIONS="--max-old-space-size=16384"와 같은 설정을 추가하는 것이 좋습니다. - 로깅 제어:
.env파일에NEXT_PUBLIC_LOGGER_LEVEL={level}을 설정하여 tRPC 쿼리 및 뮤테이션의 로깅 상세도를 조절할 수 있습니다 (예:3은 info 레벨부터 기록).
이 과정을 통해 사용자는 완전한 통제권을 가진, 커스터마이징 가능한 스케줄링 인프라를 구축할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending TypeScript (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기