ハクソク

世界を動かす技術を、日本語で。

Cal.diy: cal.comのオープンソースコミュニティ版

概要

  • Cal.diyはCal.comのオープンソースコミュニティ版、自己ホスティング向け
  • 商用・エンタープライズ利用非推奨、個人・非本番環境用
  • 高度なサーバー管理・DB管理・セキュリティ知識が必須
  • Cal.comは商用・エンタープライズ用途に推奨
  • Cal.diyはMITライセンス・完全オープンソース

Cal.diy 概要

  • Cal.diyはCal.comから派生した、コミュニティ主体の完全オープンソーススケジューリングプラットフォーム
  • エンタープライズ・商用コードは完全削除、MITライセンスのみで提供
  • Teams、Organizations、Insights、Workflows、SSO/SAML等のエンタープライズ専用機能は非搭載
  • ライセンスキー不要、Cal.comアカウントも不要
  • 自己ホスティング専用、運用・管理は全てユーザー責任
  • Next.js、tRPC、React.js、Tailwind CSS、Prisma.io、Daily.coで構築
  • 商用・エンタープライズ用途やSLAが必要な場合はCal.com利用を強く推奨

必要環境・前提条件

  • Node.js(バージョン18.x以上)
  • PostgreSQL(バージョン13.x以上)
  • Yarn(推奨)
  • サーバー管理・DB管理・セキュリティの十分な知識
  • 各種インテグレーション利用時は追加認証情報が必要

開発環境セットアップ手順

  • リポジトリをクローン
    git clone https://github.com/calcom/cal.diy.git
    • Windowsの場合:
      git clone -c core.symlinks=true https://github.com/calcom/cal.diy.git
  • プロジェクトディレクトリに移動
    cd cal.diy
  • パッケージインストール
    yarn
  • .envファイル設定
    • .env.exampleを複製し.envへリネーム
    • openssl rand -base64 32で生成したキーをNEXTAUTH_SECRETに設定
    • openssl rand -base64 24で生成したキーをCALENDSO_ENCRYPTION_KEYに設定
  • Windowsの場合
    • packages/prisma/.envのシンボリックリンクを削除し、実体ファイルに置き換え
  • Nodeバージョンの調整(必要時)
    • nvm install && nvm useで指定バージョンを利用

クイックスタート(yarn dx)

  • Docker/Docker Composeが必要
  • ローカルPostgresインスタンスとテストユーザー自動作成
  • yarn dxで起動、http://localhost:3000でログイン
    • テストユーザー例:
      • Email: free@example.com / Password: free / Role: Free user
      • Email: admin@example.com / Password: ADMINadmin2022! / Role: Admin

ログレベル調整

  • .envファイルにNEXT_PUBLIC_LOGGER_LEVEL={level}を設定
    • 例: NEXT_PUBLIC_LOGGER_LEVEL=3(info以上を出力)

Gitpodセットアップ

  • Gitpodボタンからオンライン開発環境を即時構築可能

手動セットアップ(DB設定)

  • .envファイルのDATABASE_URLを適切に設定
    • 例: postgresql://postgres:postgres@localhost:5432/Your-DB-Name
  • PrismaによるDB初期化
    • 開発: yarn workspace @calcom/prisma db-migrate
    • 本番: yarn workspace @calcom/prisma db-deploy
  • Mailhogで開発用メール確認(必要時)
    • docker run -d -p 8025:8025 -p 1025:1025 mailhog/mailhog

初回ユーザー作成

  • Prisma Studio利用: yarn db-studioでユーザー手動追加
  • DBシード: cd packages/prisma && yarn db-seedでダミーユーザー投入

E2Eテスト

  • NEXTAUTH_URLを適切に設定(例: http://localhost:3000)
  • テスト実行: yarn test-e2e
  • Playwrightブラウザ未インストール時: npx playwright installで解決

バージョンアップ手順

  • git pullで最新化
  • yarnで依存関係更新
  • DBマイグレーション(開発: db-migrate、本番: db-deploy)
  • .env変更有無を確認し反映
  • yarn devまたはyarn build && yarn startでサーバー起動

Dockerによるデプロイ

  • 公式イメージ: https://hub.docker.com/r/calcom/cal.diy
  • ARMアーキテクチャ対応: {version}-armサフィックスでpull
  • Docker Composeで起動
    • リポジトリクローン: git clone --recursive https://github.com/calcom/cal.diy.git
    • .env.example.envへコピー・編集
    • 必須シークレットキー生成
      • NEXTAUTH_SECRETCALENDSO_ENCRYPTION_KEYをopenssl等で生成し.envへ
    • VAPIDキー(Push通知用)
      • npx web-push generate-vapid-keysで生成し.envへ
    • 起動コマンド例
      • docker compose up -d(全スタック: Postgres+Web+Prisma Studio)
      • docker compose up -d calcom(Webアプリのみ、DBは外部指定)
    • 初回セットアップウィザードで管理者ユーザー作成
    • カレンダー連携は後から設定可能

バージョンアップ(Docker環境)

  • 停止: docker compose down
  • イメージ更新: docker compose pull
  • 再起動: docker compose up -d

注意点・推奨事項

  • Cal.diyは自己責任で運用、サポート無し
  • 商用・エンタープライズ利用はCal.comを利用
  • セキュリティ管理・バックアップ・アップデートは全て自己管理
  • コミュニティ貢献・Issue報告歓迎(CONTRIBUTING.md参照)

Hackerたちの意見

Cal.comはずっとオープンソースのコミュニティエディションを持ってたんだよね。しばらく使ってるけど、これはそのラインのリブランドってことなのかな?
https://cal.com/blog/cal-com-goes-closed-source-why
彼らが送ってきたメールに書いてあったOSSバージョンについてのことが気になるな。------ いくつか重要な変更点があるよ:公にDockerイメージを提供しなくなるから、チームで自分たちでイメージをビルドしなきゃいけない。Cal.diyは使わないでね — 企業用には意図されてないから。
ドキュメントには「個人の非生産的な使用に厳密に推奨される」と書いてある。ほんと、去年のブログでは「機密情報を扱う企業にとって、オープンソースのスケジューリングソフトをオンプレミスで展開することは、追加のセキュリティ層を提供できる」と言ってたのに、180度変わったね。¹ こんなバイトアンドスイッチをする会社は信じられないよ。¹ https://cal.com/blog/open-source-scheduling-empower-your-tea...
これはバイトアンドスイッチというより、法的な責任回避のためのものだと思う。彼らは「その使い方はできない」とは言ってない。ただ、推奨はしないし、そうした場合のサポートも一切しないってこと。これって全然フェアだと思う。あと、この二つは矛盾してないよ。オンプレミスでの展開は確かにセキュリティが高いけど、正しく使うのは自分次第だからね。
彼らがここでローンチしたときのこと、まだ覚えてるよ。「Calendlyのオープンソース代替品」っていうのが投稿のタイトルだった。
え、Cal.diyがCal.comのものであることに気づいてなかった。オープンソースコミュニティがフォークする前に、自分たちで先手を打とうとしてるみたいだね。
なんか興味深いね。オープンソースを運用することに対してセキュリティの影を落とそうとしてるのかな?すごく変だね。
最近、calrsっていうcal.diyの代替品をインストールしたんだけど、めっちゃいいよ!唯一の欠点は、STARTTLSを有効にしないといけないことかな。force-TLS-SMTPはサポートされてないから(ソースコードをチェックしなきゃいけなかった)。若いけど、すごく期待できるし、正直、これ以上何を求めればいいのか分からない。Radicalをrusticalに置き換えたら、無料のプッシュアップデートも得られたし。 https://cal.rs/ と https://github.com/lennart-k/rustical もし試してみたいなら、ここだよ。 https://cal.ache.one/u/ache
ほとんど雰囲気でコーディングされてるみたい。
残念ながら、これは厳格なウイルスライセンスのAGPLだから、もっと緩いライセンスの方が好きなんだよね。
これらのシステムのセキュリティを見たことがある人、もう少し詳しく教えてくれない?私がいつも気にしているのは、「実際にカレンダーデータをホストしているシステムにどのくらいのアクセス権が必要なのか?」とか、「このベンダーが侵害された場合、攻撃者がそのシステムを支配したらどのくらいのアクセス権を持つことになるのか?」ってこと。もちろん、これはバックエンドのアクセス制御の種類によって変わるよね(例えば、M365、Google Workspace、いろんなCRMシステム、小規模なクラウドプロバイダー、自ホスト型のプロバイダーなど)。編集:要するに、これらのシステムの多くで、権威あるデータ提供者/ストレージとして期待されているのは何なの?
元々cal.comの支持者だったけど、今は自分の2つの会社をcal.diyかそれに似た代替品に切り替えて、cal.comのサブスクリプションをキャンセルするつもり。オープンソースプロジェクトを独占しようとする会社への警告として、cal.comが倒産することを今は応援してる。FOSS || GTFO
願いが叶う前に、cal.diyのメンテナーを再確認した方がいいかもね。
代替案を探してるなら、NeetoCalをチェックしてみてね。https://neeto.com/cal ただし、クローズドソースだよ。ちなみに、私はNeetoCalのCEOです。
簡単なトリックがあるよ:著作権の譲渡や再ライセンスの権限を与えるために何かにサインを求めずに、オープンソースの貢献をそのまま受け入れること。これで、コードのコミュニティ所有が保証されるし、FOSSライセンスを選ぶことで約束された「良い顔」と「善意」が得られるし、将来の rug pull も避けられる。フェンスの向こう側から見ると、すべての貢献者が一人の手に権限を譲ることを求められているのを見たら(特定の財団を除いて、など)、それは形式上はオープンソースでも、精神的には本当のオープンソースじゃない。近くにいるのは考え方の変化一つでできることだし。
cal.diyに有料機能を追加するために、cal.zoneやcal.sucksを買いたくなってきた。リストまで作ってるし!チーム、組織、インサイト、ワークフロー、SSO/SAML、その他のEE専用機能が削除されてる。cal.wsはNamecheapで630ドル...これを構築するために必要なトークンはドメインより安いよ。
cal.zoneがすでに取られてないのが意外だね。
ボーナス: cal.zoneを選ぶと、ピザのダジャレで楽しめるよ!
自分たちの以前のプロダクショングレードのOSSのフォークを「プロダクションには推奨しない」とラベル付けするのは皮肉だよね。コミュニティエディションって感じじゃなくて、むしろ責任回避のためのものに見える。実際のコミュニティフォークが人々にセルフホスティングされるまで、どれくらいかかるんだろう。