アクセス解析データを自分で所有する:セルフホストとプライベート EU SaaS、2026 年の選び方
セルフホスト型アクセス解析が実際に役立つ場合、プライベート EU SaaS が正解な場合、そして Statnive Live が同じプライバシー不変条件で両方を提供する方法。
セルフホスト型 Web アクセス解析は 2026 年のリセット、ニッチではない
この 10 年の大半において、「セルフホスト型アクセス解析」とは、GA4 のデフォルトに対して Plausible や Matomo の旗を立てるイデオロギー的な立場でした。2026 年にはそれが別の何かになっています。欧州委員会のデータ法(2025 年 9 月 12 日から適用)は、独自のストレージ形式による SaaS ベンダーのロックインを明示的に禁止しており、米国管理のクラウドプラットフォームからワークロードを自国に引き戻す欧州企業の SaaS 脱出が公に記録されています。MassiveGRID の表現を借りれば、*「ドイツの中堅製造業者、フランスの政府機関、オランダの医療プロバイダー」です。業界の調査はデータ主権を「規制圧力、政治的現実、データ主権が任意ではないという認識の高まりに対する現実的な対応」*と説明するようになっています。
Statnive Live は 2 つの形態で提供されます。自分で動かすセルフホスト型 Go バイナリと、ニュルンベルクのプライベート EU SaaS です。この記事は、プライバシーを重視するすべての運営者が今答えなければならない質問への正直な回答です。どちらが実際に自分に合うか? 規制上またはプロダクトに関する主張には出典を記載し、トレードオフが実在する場合はそれを明示します。
これは Statnive Live を紹介する短いシリーズの第 3 回です。第 1 回は WordPress プラグインと Statnive Live の判断を扱い、第 2 回は 2026 年の EU 規制環境を取り上げました。この記事はデプロイ形態について — コントローラー対プロセッサー、影響範囲、各側面の脅威モデルを扱います。
セルフホストが実際に守るもの
セルフホストは、よくある SaaS アクセス解析の 5 つの脅威を、すでに所有する 1 台のサーバーに集約します。
- ベンダーの廃業、方向転換、または恣意的な価格変更。 SmartSaaS と Sharp Hue はこれを典型的な SaaS リスクと位置づけています。アクセス解析スタックが他者のサーバーに住んでいれば、過去のデータも他者のロードマップに住んでいることになります。
- ベンダーの買収。 新しいオーナーはプライバシー姿勢を変え、価格を上げ、再プラットフォームを強制できます。J. Chang Law はこれらの紛争の契約面を追跡しています。
- ベンダーのデータ侵害露出。 訪問者データがマルチテナント SaaS に存在する場合、ベンダーでの侵害はすべてあなたのデータの侵害です(Kiteworks の見方)。セルフホストは影響範囲を自分のサーバーに限定します。
- 越境移転リスク。 EEA 外でのホスティングは GDPR 第 5 章(第 44〜49 条)を引き起こします。最もクリーンな答えは EEA 内に留まることです。規制上の根拠はこのシリーズの第 2 回をご参照ください。
- 規制当局による強制開示。 米国 CLOUD 法 + FISA 702 は、物理的な所在地にかかわらず、米国法人プロバイダーが管理するあらゆるデータに及びます。Civo が述べるように:「フランクフルトやダブリンにデータを保存しても、米国法執行機関の手が届かなくなるわけではありません。プロバイダーが米国企業であれば、米国当局はそのデータがどこに保存されていても、その企業が管理するあらゆるデータへのアクセスを強制できます。」 FISA 702 は2026 年 4 月に失効する予定で、執筆時点では更新圧力がかかっていました。更新後の範囲次第で状況が変わるかもしれませんが、アーキテクチャ上の答えはそれに依存しません。
非米国法人が運営する、事業者が管理するインフラ上のセルフホストバイナリは、これら 5 つの脅威をすべて、事業者がすでに管理している 1 つの問題 — 自分のサーバー — に集約します。
セルフホストが守らないもの
正直な対になるリスト一覧です。セルフホストはリスクを移転しますが、除去はしません。4 つのことが引き続きあなたの問題として残ります。
自分のサーバーへの侵害。 ホスト OS、ClickHouse、Go バイナリ、ネットワーク — これらすべてがあなたの影響範囲内に存在します。システム管理の姿勢が弱ければ、セルフホストは改善ではなく悪化をもたらす可能性があります。セルフホストをサーバー負荷として捉える Slimstat / TeamUpdraft の見方は、同じトレードオフをパフォーマンスの観点から表現したものです。
暗号鍵の紛失。 LUKS 暗号化ディスクと age 暗号化バックアップは、鍵が存在する限り機能します。鍵を失えばデータも消えます — SSH 鍵やビットコインウォレットと同じです。LUKS 回復手順は docs/luks.md に記載しています。それ以外はパスワードマネージャーの問題です。
自チームの内部リスク。 悪意のあるまたは不注意な管理者は、ハッシュ前の生イベントを読んだり、テーブルを削除したり、監査ログを持ち出したりできます。RBAC(管理者 / ビュワー / API のみ)で権限を分離できますが、残留リスクはあなたのものです。
オペレーターのミス。 データの削除、バックアップの設定ミス、ダッシュボードの無防備な公開。侵害に対抗するのと同じリストア訓練がオペレーターのミスにも有効ですが、それは実際に実施した場合に限ります。
これら 4 つが上記の SaaS ベンダーリストより許容できるなら、セルフホストを選んでください。そうでなければ、プライベート EU SaaS の選択肢が大半をカバーしながら EU 限定のデータレジデンシーの説明を維持します。
シングルバイナリアーキテクチャ
両方の選択肢は同一の Go バイナリを同一の ClickHouse スキーマに対して動かします。フォークも第 2 のコードベースも存在しません。トラッカー JS、ダッシュボード SPA、ClickHouse マイグレーション、ベンダリングされた Go 依存関係を含むすべてのアセットが go:embed で埋め込まれています。外部 CDN なし、実行時の npm install なし、実行時の go mod download なし。
エアギャップは譲れないプロジェクトの目標であり、目標ではありません。バイナリは iptables -P OUTPUT DROP 下で完全にエアギャップ状態で動作し、必須のアウトバウンド接続はゼロです。リリースゲートはすべてのリリースでエアギャップテストを実行します。イベントのインジェスト、ロールアップのマテリアライズ、ダッシュボードのレンダリング、すべてが iptables ドロップ下で行われます。オプトイン機能(例:オプションの GeoIP データベース更新)のアウトバウンドトラフィックは internal/httpclient/guarded.go を経由します — FQDN 許可リスト、DNS 解決後の RFC-1918/ループバック/CGNAT 拒否、強制 HTTPS。デフォルトの許可リストは空です。
CI では、air-gap-validator ルールが生の *http.Client 構築、実行時 DNS/HTTP、ダッシュボードやトラッカーへの CDN インポート、テレメトリーピング、外部フォント/スクリプト URL を拒否します。この契約はチェックリストではなく、コードレビューと Semgrep の両方で強制されます。
多層防御 — 具体的な主張
暗号および運用のプリミティブを、検証可能なファイルパスとともに示します。
- 訪問者識別:
HMAC(master_secret, site_id || YYYY-MM-DD)、BLAKE3 キー付き、プロセス内で導出、永続化されず、毎日ローテーション。同一訪問者 → 日ごとに異なるハッシュ。ClickHouse にFixedString(16)(BLAKE3-128 を 16 バイトに切り詰め)として保存。バイナリ内のハッシュファミリーは SHA-256 / BLAKE3 のみ。MD5 も SHA-1 もありません。 - ダッシュボード認証:
bcryptコスト 12 のパスワードハッシュ、crypto/rand32 バイトセッショントークン(256 ビット、16 進数エンコード)、14 日間 TTL、SameSite=Lax HttpOnly SecureCookie。Bcrypt コスト 12 は動かすあらゆるマシンで 50ms 以上かかります — それが目的です。 - 監査ログ: Go の
slogによる JSONL、追記のみ、v1 ではファイルシンクのみ、chattr +a規律、logrotate copytruncate=off。Syslog とリモートシンクは v1.1 以降に延期 — エアギャップデフォルトを維持するためです。 - 保存時暗号化: LUKS2、
aes-xts-plain64、キーサイズ 512、argon2idPBKDF、iter-time 2000。共有テナントクラウド VPS(Netcup VPS 2000 G12 NUE D1 を含む)では必須、専用ケージハードウェアではオプション。測定された I/O への影響は ext4-over-LUKS1 で 40〜50%、AES-NI + AVX2 が半減させます。 - 暗号化バックアップ:
clickhouse-backup+age+zstd、cron スケジュール。すべてのリリースでリストアテスト。SaaS のバックアップは EU 限定の第 2 の場所に送信、セルフホストでは場所は運営者の選択です。 - systemd ハードニング:
NoNewPrivileges、ProtectSystem=strict、PrivateTmp、CapabilityBoundingSet=CAP_NET_BIND_SERVICE。サービスユニットはエアギャップ iptables ルールとともにmake airgap-bundle経由で提供されます。 - Sec-GPC ショートサーキット:
Sec-GPC: 1またはDNT: 1が設定されている場合、リクエストは訪問者識別子が計算される前に破棄されます。拒否した訪問者に対して仮名識別子は生成されません — 何も作成されなかったため、削除するものも存在しません。
セルフホストとプライベート EU SaaS の選び方
実際に決める要素は 5 つです。ほとんどの読者はすぐにどちらかの列に自分を見出すでしょう。
1. 運用人員。 セルフホストには運用時間のコストがかかります。TLS のローテーション、GeoIP データベースの更新、ClickHouse のアップグレード、カーネルパッチ、LUKS パスフレーズ — これらすべてが運営者の責任です。Linux サーバーをすでに担当している人がいなければ、SaaS を選んでください。
2. トラフィック量。 Statnive Live の設計上限は 8 コア / 32 GB ボックスでノードあたり 2 億イベント/日です。1,000 万イベント/日以下ではどちらのパスも同等に機能します。5,000 万イベント/日以上では、セルフホストを維持する運用成熟度が独自のメリットを持ち始めます。
3. 監査とコンプライアンス姿勢。 規制業界はしばしば署名済みの第 28 条 (3) DPA と、自分たちが指示するインフラの両方を必要とします。プライベート SaaS パスは DPA の半分をカバーし、セルフホストは両半分をカバーしますが、運用負担がチームに移転します。
4. 地域。 SaaS はドイツ・ニュルンベルク(Netcup VPS 2000 G12 NUE)で処理されます — EU/EEA 限定、第 5 章の転送なし。セルフホストはデータをサーバーがある場所に置きます。国固有のデータレジデンシー規則(スイス FADP、ドイツの公共部門調達)は特定の都市を必要とする場合があります — その制御レベルはセルフホストだけが提供します。
5. 規模でのコスト。 SaaS はトラフィック連動の価格設定(Starter / Growth / Business の範囲は公開されているティアで月 $9〜$339、Enterprise は上)。セルフホストは SaaS 料金の代わりに Hetzner CX43(月 €14 程度)または Netcup VPS 2000 G12(月額 €25.48)と運営者の時間を使います。低トラフィックでは SaaS が TCO で有利、非常に高いトラフィックではセルフホストが有利です。
これら 3 つ以上が同じ方向を向いているなら、それがあなたの答えです。分かれているなら、最初の 6 ヶ月は SaaS をデフォルトとしてください — バイナリとスキーマが同一であるため、データを失わずに後でセルフホストに移行できます。
「プライベート SaaS」という中間の選択肢
この文脈での「プライベート」の意味についての正確な説明です。Statnive Live SaaS は論理的テナント分離されています — すべてのイベント行は site_id を持ち、すべてのダッシュボードクエリは最初の述語として WHERE site_id = ? を持つ whereTimeAndTenant() を経由し、CI のテナンシーチョークポイントルールがそれをバイパスする新しいクエリを拒否します。物理的なシングルテナントではありません。1 つの ClickHouse クラスターがすべての顧客にサービスを提供します。物理的なシングルテナントを求める顧客はセルフホストを選んでください。
SaaS がすぐに提供するもの:
- すべてのプランで第 28 条 (3) DPA(Free を含む)、2026-04-24 に署名・日付入り。DPA は第 28 条 (3) の 8 つのサブパラグラフすべてをカバーします — 指示のみ、秘密保持、第 32 条のセキュリティ、サブプロセッサー承認、データ主体の権利支援、第 32〜36 条のコントローラー義務支援、終了時の削除または返還、監査権。
- サブプロセッサーリストは上流の変更から 7 日以内に更新、プライバシーページ経由で顧客に14 日前の事前通知、顧客はその期間内に書面で異議申立て可能。
- 終了時の30 日間の顧客エクスポートウィンドウ — 標準エクスポートエンドポイントを介した完全 CSV/JSON。30 日後は、EU またはメンバー国法が保存を義務付けない限り、生テーブル、ロールアップテーブル、バックアップ(次のバックアップサイクル ≤ 24h)、監査ログが削除されます。
- 48 時間の侵害通知 SLA(認識から)、GDPR 第 33 条を反映。
- EU/EEA 限定処理。 EEA 外への保存済み個人データの第 5 章転送なし。チェーンに登場する 2 社の米国在住サブプロセッサー — Cloudflare(DNS のみ)と Let’s Encrypt(DV 証明書用) — は DPA の § 6 で DPF 十分性決定の下に開示されています。受け取るのは DNS メタデータと証明書メタデータのみで、アプリケーションペイロードは一切含まれません。
この最後の点が CLOUD 法 / FISA 702 の問いへの重要な答えです。*「処理チェーンに米国法人なし」が厳格なバージョンであり、それが上記の Civo と SoftwareSeni が主張するものです。「フランクフルトやダブリンと言っても米国プロバイダーを主権国家にはしない」*という問いに、アーキテクチャが実際に答える必要があります。「ニュルンベルクのインフラ上のドイツ法人の顧客であるドイツ居住者が運営する」がその答えです。
2 つの間の移行パス
この部分は短いです。それは意図的に何も起こらないようにしているからです。
同じバイナリ、同じスキーマ。 マイグレーションは clickhouse/migrations/ に存在し、最初から {{if .Cluster}} Go テンプレートを使います — シングルノード → Distributed への移行は設定の切り替えであり、再プラットフォームではありません。
データのロックインなし。 ClickHouse は 標準バイナリ形式(Parquet / Native / RowBinary)と clickhouse-backup アーカイブ形式を使います。Statnive Live から ClickHouse Cloud またはセルフ管理クラスターへの移行は、再インポートではなく clickhouse-backup のリストアです。
訪問者スコープのアクセスと削除。 GET /api/privacy/access は解決済みサイト上の Cookie に紐づく行を返します(第 15 条)。POST /api/privacy/erase が対応する削除エンドポイントです(第 17 条)。削除パスは system.columns を動的に列挙するので、cookie_id を持つ新しいテーブルは自動的に対象範囲に含まれます。さらに WHERE 句は cookie_id = ? AND site_id = ? なので、あるサイトに対する削除リクエストが他のテナントの行に到達することは決してありません。後付けではなく、初日から DSAR に対応しています。
プライベート SaaS から始めて後でセルフホストしたい場合は、バイナリとデータの clickhouse-backup アーカイブを要求してください。リリースパイプラインは再現可能な statnive-live-<VERSION>-linux-amd64-airgap.tar.gz と SHA256SUMS(およびオプションの Ed25519 署名)を生成します — tarball をコピーし、clickhouse-backup restore でデータを復元すれば、同じスキーマに対して同じダッシュボードが動きます、ただし自分のハードウェアで。
よくある質問
Statnive Live がサービス終了したらどうなりますか
同じバイナリで引き続き動かせます。セルフホストの顧客はすでに所有しています。SaaS の顧客は出口時にバイナリとデータの clickhouse-backup アーカイブを要求できます。リリースパイプラインは SHA256 サムを含む再現可能なエアギャップバンドルを生成します。それは Statnive が存続企業であることに依存しません。
データを ClickHouse Cloud に移行できますか
はい。データは標準 ClickHouse 形式であり、ClickHouse Cloud ターゲットへの clickhouse-backup restore がサポートされているパスです。別のツールでデータを使いたい場合は、エクスポートエンドポイントが CSV/JSON を生成します。
CI を Statnive インスタンスに対して実行できますか
はい。make ci-local が ClickHouse を起動し、Go バイナリを起動し、統合テストを実行し、すべてを終了します。すべての PR の CI ランナーがすでにこれを実行しています — ローカルで使う場合と同じ手順です。
暗号化バックアップはどこに保存しますか
セルフホストでは運営者の選択:任意の S3 互換ストア、任意のリモートディスク、任意のテープ。SaaS では、EU 限定の第 2 の場所が契約上の答えです。バックアップがどこに保存されるかにかかわらず、リストアはすべてのリリースでテストされます。
CLOUD 法 / FISA 702 — ニュルンベルクは有効ですか
はい、プロバイダーも非米国管理の場合に限り。Statnive Live SaaS は、ニュルンベルクの Netcup インフラ上の Netcup(ドイツ法人)のドイツ居住顧客によって運営されています。処理チェーンに米国法人なし → アプリケーションペイロードへの CLOUD 法 / FISA 702 の適用なし。DPF 十分性の下に 2 社の米国在住サブプロセッサーが登場します — Cloudflare(DNS のみ)と Let’s Encrypt — DNS メタデータと証明書メタデータのみを受け取ります。これは「データベースが AWS フランクフルトに存在する」とは異なる表面です。
災害復旧はどうなっていますか
同じリストアテストがすべてのリリースで、同じ暗号化バックアップ形式(age 暗号化、zstd 圧縮、clickhouse-backup アーカイブ)に対して実行されます。保存時暗号化レイヤーのための LUKS 回復パスも docs/luks.md に記載しています。魔法はありません。実際に実施した訓練があるだけです。
結論
セルフホストは 2026 年においてイデオロギーの旗立てではありません。EU の規制・調達圧力における測定可能なトレンドへの最もクリーンな答えです。Statnive Live は同一の Go バイナリと同一の ClickHouse スキーマを 2 つの形態で提供します。セルフホストではすべての運用責任を引き受け SaaS ベンダーリスクを失い、ニュルンベルクのプライベート EU SaaS では第 28 条 (3) DPA、EU 限定のデータレジデンシー、7 日間のサブプロセッサー SLA を得ますが、アーキテクチャが範囲を制限するよう設計したマルチテナントの影響範囲も伴います。
運用人員、トラフィック、監査姿勢に合ったパスを選んでください。決めかねる場合は SaaS から始めてください — セルフホストへの移行は clickhouse-backup のリストア一回分の距離にあります。
Statnive Live は近日公開、ja.statnive.com/live でお待ちしています。 それまでは、WordPress プラグインは WordPress.org で公開中、比較記事が WP 対 Live の判断ツリーを案内し、GDPR ガイドが規制面をカバーし、料金ページが両プロダクトを並べて掲載します。とくに GA の代替候補を比較している場合、ランキング形式のまとめ記事が WordPress 連携の注釈付きで 7 つのプライバシー重視の代替を扱っています。この記事に誤りが見つかった場合はご連絡ください — すべての主張には出典があり、磨き上げられた半真実を出荷するより誤りを訂正する方を選びます。