CForum — Cloudflareで動くモダンなサーバーレスフォーラム

Web

概要

CForumは、Cloudflareのエッジサービス群(Pages、Workers)、組み込みSQLite互換のD1、オブジェクトストレージR2を組み合わせたサーバーレスフォーラム実装です。フロントエンドは静的ファイルをPagesで配信し、APIはWorkersで処理する「単一ドメイン+スマートゲートウェイ」構成を採ることで、静的配信の無料帯域を活かしつつWorker実行コストを大幅に削減します。主要機能として投稿管理、スレッドコメント、画像アップロード、2要素認証(2FA)をサポート。TypeScriptで実装され、シンプルで拡張しやすいアーキテクチャが特徴です。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 127
  • フォーク数: 126
  • ウォッチャー数: 127
  • コミット数: 14
  • ファイル数: 19
  • メインの言語: TypeScript

主な特徴

  • Pages + Worker のハイブリッド配置で静的配信をPagesへ集約し、Workerの実行回数とコストを削減
  • D1(Cloudflareの組み込みデータベース)を用いたサーバーレスDB設計で低レイテンシなデータアクセスを実現
  • R2を利用した画像アップロード/ホスティング機能と、スレッド化されたコメント機能を備える
  • 2要素認証(2FA)を含む認証機能により、ユーザーセキュリティを強化

技術的なポイント

CForumはCloudflareのエコシステム最適化が中心設計で、Pages(静的コンテンツ)とWorkers(API/ビジネスロジック)を明確に分離することで、リクエストごとのWorker実行を最小化します。Pages Functionsが入り口でルーティング判定を行い、/api/* へ振られたリクエストのみWorkerへ転送しJSONを返す一方、静的リソースやシングルページアプリのエントリはPagesが直接返すことで帯域コストと呼び出し回数を抑制します。データ層はD1を採用しており、スキーマは投稿・コメント・ユーザ・メタ情報などのテーブル構成が想定されます。D1はSQLite互換のエンジンのため、軽量なクエリとローカル的なトランザクション管理が可能で、Workersからの直接アクセスで高速に動作します。

メディアはCloudflare R2に格納され、アップロード時にWorker側で受け取ったバイナリをR2へ保存し、公開はR2のオブジェクトURL(あるいは署名付きURL)で配信します。画像処理やリサイズはエッジで行う実装も想定可能で、費用対効果やレスポンスの観点から重要な拡張ポイントです。認証は2FAをサポートしており、トークンベース(TOTP)やワンタイムコード生成、あるいはメール/SMS連携と組み合わせることで不正ログイン対策を強化します。TypeScriptでフロント・バック双方が書かれているため型安全が高く、開発者体験(DX)も良好です。

運用面ではPagesのCDNキャッシュ、Workerでのキャッシュヘッダ制御、R2のオブジェクト配置方針がパフォーマンスに直結します。単一ドメインで運用するためにDNS・TLSはCloudflare側で一元管理され、CORSやセッション管理、CookieのSameSite設定などフロントとAPIの連携周りを適切に設計する必要があります。将来的な拡張としては、全文検索やリアルタイム通知、画像変換のエッジ処理、モデレーションワークフローの導入などが考えられます。(約1200字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .editorconfig: file
  • .github: dir
  • .gitignore: file
  • .prettierrc: file
  • LICENSE: file

…他 14 ファイル

(※リポジトリ全体はTypeScript中心で、Pages向けの静的ファイルとWorker用コード、D1/R2連携の設定や環境設定ファイルが含まれている想定です。)

まとめ

Cloudflareのサーバーレス技術を活かし、コスト効率とスケーラビリティを両立した実践的なフォーラム実装です。(約50字)

リポジトリ情報:

READMEの抜粋:

CForum

一个基于 Cloudflare Workers + Pages + D1 + R2 的论坛,支持帖子、评论、图片上传、2FA 等。

💡 性能优化:采用 Pages + Worker 混合部署,静态资源免费无限请求,节省 ~90% Worker 成本!


🏗️ 架构设计

单域名 + 智能网关方案

用户访问:forum.adysec.com

    Cloudflare Pages(Edge 网络)

  ┌─ Pages Functions 判断路由

  ├─ /api/* ?
  │  ├─ YES → 转发给 Worker(处理业务逻辑 + 数据库)
  │  │         返回 JSON
  │  │
  │  └─ NO  → 返回静态文件或 index.html
  │           前端 React Router 接管

  └─ 用户看到页面

✨ 功能特性

  • 帖子管理 - 发布、编辑、删除、置顶、分类