自分のサーバーで使うプライベートな web 解析
Cookie バナーのいらない web 解析。
成果につながるページ、流入元、キャンペーン、イベントを確認できます。Cookie、同意バナー、 第三者の SaaS は不要で、データは自分のサーバーから出ません。Tadoru はセルフホスト型で、 3 つのコマンドでインストールできます。
得られる情報
サイト改善に必要な答えを、分かりやすく。
数字の背後にいる人をプロファイルせず、訪問者、コンテンツ、コンバージョンをひと目で把握できます。
訪問のきっかけを確認する
訪問者数とページビュー、よく見られるページ、リファラー、国、デバイス、UTM キャンペーンを 確認できます。どこから関心が集まり、どのページに向かうかを分かりやすく表示します。
複雑な解析ツールを使わずに、次に公開、告知、改善すべき内容を判断できます。
訪問後の行動を確認する
エンゲージメント時間、スクロール到達率、外部リンク、ダウンロード、独自イベントと目標を 測定します。Core Web Vitals で、実際の表示が高速で安定しているかも確認できます。
個々の訪問者を追跡せず、コンテンツ、キャンペーン、製品の判断に必要な情報を得られます。
改善に使える解析
必要な情報を取得し、個人プロファイルは作らない。
訪問者、ページ、リファラー、キャンペーン、イベント、Web Vitals を測定します。個人を継続的に 特定できる詳細情報は、意図的に取得しません。
取得するもの
- +機密情報を除いたページパス
- +流入元と参照サイト
- +キャンペーン
- +国のみ(正確な位置情報は取得しません)
- +デバイスとブラウザーの種類(正確なバージョンは取得しません)
- +エンゲージメント時間とスクロール到達率
- +外部リンクのクリックとダウンロード
- +独自イベントと目標
- +Web Vitals
Tadoru が取得しないもの
- ×Cookie やブラウザーのストレージ
- ×ブラウザーのフィンガープリンティング
- ×生の IP アドレスやブラウザー情報の保存
- ×デバイスやブラウザーの正確な詳細
- ×毎日のプライバシーリセット後も残る識別子
- ×サイトをまたいで人を追跡するプロファイル
- ×DNT または GPC を使う訪問者のデータ
これは単なる宣伝文句ではありません。Tadoru はここに挙げた種類のデータだけを受け付け、 それ以外は拒否するため、余分な個人データが時間とともに蓄積されることを防ぎます。
インストール
3 つのコマンドで Tadoru をインストール。
Node 22 以上の VPS で、インストールし、4 つの質問に答え、サービスを起動するだけです。 Docker、別のデータベース、crontab は不要です。
パッケージをインストールする
npm でグローバルインストールするだけです。GeoIP データベースも同梱されているため、外部サービスへの問い合わせは不要です。
sudo npm install -g tadoru
設定する
計測するドメインを渡します。権限を持たないユーザーを作成し、堅牢化した unit を書き、ダッシュボードのパスワードを一度だけ表示します。必ず控えてください。マイグレーションは起動時に適用され、ソルトのローテーション、集計、保持期限を過ぎたデータの削除もプロセス内で実行されます。これらを手動で管理する必要はありません。
sudo tadoru install-service \ --sites yourdomain.com,another.dev
起動する
install-service は意図的に何も起動しません。サービスを動かすかどうかは、あなたの明示的な判断として残されています。
sudo systemctl enable --now tadoru
外から届くようにする
Tadoru は 127.0.0.1:3000 で待ち受け、インターネットに直接は姿を見せません。サブドメインをサーバーに向け、すでに使っているもの(nginx、Caddy、Apache、ホスティングのロードバランサー)で HTTPS を終端し、次を渡して転送してください:
Host 公開ホスト名 X-Forwarded-Proto https X-Forwarded-For 訪問者の IP
これらが無いと、ダッシュボードが壊れたスニペットを出し、管理用 Cookie が Secure 属性を失い、すべての訪問者がサーバー自身の国から来たように見えます。
サイトにスニペットを追加する
script タグひとつ。約 4 KB、依存関係なし。サイトは自身のドメインで識別されるので、登録するものはありません。
<script defer src="https://tadoru.yourdomain.com/t.js"> </script>
ダッシュボード
何が機能しているかを 1 画面で確認。
レポートを作成しなくても、アクセスの変化、よく見られるコンテンツ、主な流入元を確認できます。 軽量なダッシュボードは 3 言語に対応し、サードパーティのリソースを読み込みません。
上位ページ
| パス | ビュー | |
|---|---|---|
| / | 5,204 | |
| /docs/install | 3,177 | |
| /blog/cookieless | 1,982 | |
| /pricing | 1,093 | |
| /changelog | 624 |
国
| 国 | 訪問者 | |
|---|---|---|
| スペイン | 1,842 | |
| ドイツ | 866 | |
| 日本 | 571 | |
| フランス | 442 | |
| ポルトガル | 298 |
内訳ごとにユニーク訪問者を個別に計算し、互換性のない合計値は足し合わせません。ページ、国、 流入元を正確に比較できます。
デフォルトでプライバシーを保護
永続的な識別情報を使わず、必要な集計を。
// リクエストごとに導出し、そのまま捨てる visitor_id = blake2b( daily_salt + site_id + ip + user_agent ).slice(0, 16) // IP と user agent はここで使うだけで、 // どこにも書き込まれません。書き込む先の // ip カラムも user_agent カラムも、 // データベースには存在しません。
- +Cookie もブラウザーのストレージも使用しない
- +生の IP と user agent は一時的に使うだけで、保存しない
- +フィンガープリンティングもサイト間追跡も行わない
- +DNT と GPC の信号を尊重する
- +生イベントは 25 か月後に削除し、匿名の集計だけを残す
毎日のソルトから短期間だけ使う訪問者 ID を作り、24 時間ごとに破棄します。同じ人を日付や サイトをまたいで結びつけることはできません。そのため、00:00 UTC をまたぐセッションは 2 つとして数えます。
運用する
面倒な部分は、すでに片づいています。
バックアップはコマンドひとつ
tadoru backup がデータベースを日付つきのファイルに書き出します。復元は
tadoru restore で、サーバーが動いていれば拒否し、そのファイルが本当に Tadoru の
データベースかを先に検証します。
監視できるヘルスチェック
GET /health がデータベースとすべての定期ジョブの状態を返します。ジョブが停滞して
いればそれも含みます。tadoru status は同じことをシェルから尋ねます。
パスワードを失くしたら
ハッシュ化して保存されているので、誰も読み出せません。
sudo tadoru reset-password が新しいものを生成し、環境ファイルをバックアップし、
パスワードを一度だけ表示します。
アップデート
sudo npm update -g tadoru のあと再起動するだけ。マイグレーションは冪等で、起動時に
自動で適用されます。手動のマイグレーション手順はありません。
古いデータは自動で消えます
生イベントは 25 か月で削除されます。設定は不要です。ロールアップは匿名の集計なので保持されます。
危険な状態では起動しません
管理者パスワードがない、あるいは例示用のままであれば、サービスは理由を説明して停止します。 誰でも推測できる認証情報のまま起動することはありません。
よくある質問
インストール前に確認しておきたいこと。
本当に同意バナーは要らないのですか?
データの責任は私とあなたのどちらにありますか?
JavaScript が無効でも動きますか?
<noscript> のピクセルが、日時、サイト、パス、
リファラー、国、デバイスの系統、言語を記録します。滞在時間、スクロール、外部リンクのクリック、
独自イベント、Web Vitals にはスクリプトが必要です。
なぜ SQLite なのですか。持ちこたえられますか?
1 つのインストールでいくつのサイトを計測できますか?
費用はいくらですか?
生データをエクスポートできますか?
sqlite3 で開いて好きなように
クエリしてください。エクスポート機能がないのは、抜け出すべき囲い込みがそもそもないからです。