Dubは短縮リンク発行・コンバージョン計測・アフィリエイトプログラム運用を1つにまとめたオープンソースのリンク帰属分析プラットフォームです。Next.jsのモノレポ構成で、Framer・Perplexity・Twilioなど実際のマーケティングチームが使う商用SaaS「dub.co」と同じコードベースをセルフホストできます。README記載のとおりコアはAGPLv3で公開され、管理者向けの一部エンタープライズ機能(/ee配下)のみ商用ライセンス扱いの「オープンコア」構成です。
apps/web はNext.jsアプリで、リンク作成・クリック計測・課金・パートナー管理などのAPIルートを app/(ee)/api 以下に大量に持っています。データ永続化はPrisma経由のMySQL(PlanetScale)、キャッシュとレート制御はUpstash Redis、クリックなどの大量イベント分析はTinybird(ClickHouse系)が担当する設計です。バックグラウンド処理はUpstash QStashのキューと大量の app/(ee)/api/cron/* ルート群(ドメイン更新、コミッション作成、CSVインポート、不正検知の保留解除など)が定期実行を担い、認証はNextAuth.jsとBoxyHQ SAML/SSOです。Stripeはサブスクリプションおよびアフィリエイト報酬決済向けのWebhookを持ち、Resend/SMTPでメール送信、admin.dub.co配下は運営向け管理画面としてリンクBAN・ドメイン管理・パートナー審査などを行います。CI(playwright.yaml)を見るとMySQL・Redis・Tinybird Local・QStash devサーバー・MailHogをDockerサービスとして起動し、実運用に近い形でE2Eテストしていることが確認できます。
- STEP 01
READMEのローカル開発ガイドに沿ってnode v23.11.0とpnpm 9.15.9を用意し、pnpm installを実行して依存関係インストールに時間がかかることを体感します。
- STEP 02
apps/web/.env.exampleを見ると、DATABASE_URL・UPSTASH_REDIS_REST_URL・TINYBIRD_API_KEY・QSTASH_TOKENなど外部サービスの鍵設定が必須で、これらを揃えない限り起動できないことに気づきます。
- STEP 03
README記載の`pnpm prisma:push`を実行してPrismaスキーマをMySQLへ反映し、テーブル未存在エラーに遭遇した場合の対処法として案内されている手順を試すことになります。
- STEP 04
`cd apps/web && pnpm run script dev/seed`でシード投入を行い、開発用のダミーデータ入りダッシュボードを確認できます。
- STEP 05
admin.dub.co配下の管理画面やStripe連携・SAML認証など/ee配下のエンタープライズ機能は、追加の鍵設定なしでは動作確認しづらいことを実感します。
自分のインフラ上でDubの短縮リンク発行・クリック分析・アフィリエイトコミッション管理までを一通り動かせるコードベースが手に入ります。ただしMySQL・Redis・Tinybird・QStash・Stripe・Resendなど複数の外部サービス契約または自前構築が前提で、READMEも公式ガイドへの誘導が中心のため、単体リポジトリだけで完結する体験ではありません。
コア機能の大半は動作に外部SaaS(PlanetScale、Upstash、Tinybird、Vercel Domains APIなど)を要求するため、無料かつオフラインで完結するセルフホストとは言えません。
app/(ee)配下はLICENSE.mdに明記のとおり商用ライセンス対象で、管理画面やSAML/SSOなど一部機能は無条件に自由利用できるわけではありません。
CIのplaywright.yamlを見る限りE2Eテストの環境構築だけでもMySQL・Redis・Tinybird Local・QStash dev・MailHogなど多数のサービスをDockerで起動する必要があり、ローカル再現の手間は小さくありません。
README記載の「よくあるローカル開発の問題」欄からも、node/pnpmバージョン不一致やPrismaスキーマ未反映によるエラーが頻発する実情がうかがえます。
自社でリンク帰属分析やアフィリエイトプログラムの基盤を持ちたい、かつPlanetScale・Upstash・TinybirdなどモダンなJAMスタック構成に慣れたエンジニアリングチーム向けの選択肢です。README・CI設定・.env.example・大量のcronルート群という一次資料から、機能範囲と外部依存の重さは十分読み取れるため、実際にインストールしなくても「何ができて、何が前提として必要か」は本レビューだけで概ね判断できます。ただし本番投入の可否は、Tinybird/QStashなど有料サービスの契約可否と、/ee部分のライセンス条件を自組織で精査したうえで判断すべきです。