
2025/12/24 20:08
**Matomo から Umami へのウェブ解析移行** 1. **移行準備** - 現在の Matomo インスタンスからすべてのデータと設定をエクスポートします。 - Matomo データベースのバックアップを必ず取得してください。 2. **Umami の設置** - お好みのホスティング環境(Docker、Fly.io など)に Umami をデプロイします。 - データベース接続設定と環境変数を構成します。 3. **データインポート** - Umami のインポートツールまたはスクリプトを使用して過去のデータをロードします。 - 訪問数・ページビュー・イベントなど主要指標が正しく表示されることを確認します。 4. **トラッキングコード更新** - すべてのウェブページで Matomo の追跡スニペットを Umami 用スクリプトに置き換えます。 - 本番投入前にステージング環境で新しいコードをテストします。 5. **検証と監視** - 移行期間中に解析レポートを比較し、差異や欠落データがないか確認します。 - 不一致や不足箇所があれば速やかに対処します。 6. **Matomo の廃止** - Umami が正しく稼働していることを確信したら Matomo を停止します。 - データ保持ポリシーに従い、古い Matomo ログはアーカイブまたは削除してください。
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
要約
著者は Google Analytics から Matomo(2018 年にリブランド)へ移行し、10 年以上利用した後、UI がシンプルで Next.js + PostgreSQL スタックがより簡潔だった Umami に 2022 年に再度切り替えました。angristan.fr(Matomo ID 1)と stanislas.blog(ID 5)の二つのサイトで、10 年分のデータを保持していたため、Matomo を廃止する際に分析データを保存する方法が必要でした。オープンソースのエクスポート/インポートツールは存在しなかったため、著者は Python スクリプト(
angristan/matomo-to-umami)を作成しました。このスクリプトは Matomo の MySQL/MariaDB テーブルを読み取り、Umami の PostgreSQL スキーマ(sessions, pageviews, browsers, countries, outlinks, downloads, return visits など)に一致する SQL INSERT 文を生成します。
ライブデータの移行前にローカルの
docker‑compose 環境でスクリプトを実行し、生成されたダンプを確認できるようにしています。二つのサイトでのドライランでは、約 1 352 812 セッションと 1 999 709 イベント(angristan.fr が 861 301/1 332 275、stanislas.blog が 491 511/667 434)が生成されました。最終的な SQL は Kubernetes ポッド内の psql を介して Umami インスタンスにインポートされ、その後古い Matomo サーバーは停止しリソースが解放されました。このスクリプトは GitHub で公開されており、レガシーな Matomo データを軽量な分析スタックへ歴史的指標を失うことなく移行できることを示しており、モダンなオープンソースソリューションのより広い採用を促進しています。本文
22 年12月 21日 · 714語・4分
2014 年にフランス語ブログを開始した直後、Google Analytics から Piwik(現在の Matomo)へ移行しました。
2018 年に名前が変更されて以来、10年以上も安定して稼働しています—創作者とメンテナの皆さんのおかげです。
Matomo の代替となるモダンなツールを探す
2022 年に私は Umami を導入し、Matomo への置き換えを検討しました。
Matomo の UI はほとんど進化しておらず、Umami の洗練されたモダンデザインと比べて古臭く感じます。
- 機能セット:Matomo は私が使わない多機能を備えているのに対し、Umami は自動 DB マイグレーションやプラグイン不要でシンプルです。
- テックスタック:Matomo は PHP + MySQL、Umami は Next.js アプリ+PostgreSQL。
- ホスティング:Umami の方が設置・管理が簡単です。
Umami には満足しており、Matomo インスタンスを廃止したいと考えています—ただし angristan.fr と stanislas.blog の10年間にわたる解析データを失いたくはありません。
Matomo からのエクスポート
「Umami 用インポートツール」を検索しても何も見つからず、クラウド版のみがインポート機能を持っていることが判明しました(オープンソースではありません)。
そこで私は独自のマイグレーションスクリプトを作成しました:
- リポジトリ:GitHub 上の
。angristan/matomo-to-umami - 言語:Python。
- 目的:Matomo の MySQL/MariaDB データベースから訪問セッションとページビューイベントを抽出し、Umami の PostgreSQL スキーマに合致する SQL INSERT 文を生成。
ブラウザ・国・外部リンク・ダウンロード・リターンビジットのマッピングを確認し、直帰率も保持。生 SQL を使うことで API 制限を回避し、処理速度が向上します。
マイグレーションテスト
リポジトリに用意されたローカル
docker‑compose 環境で生成したダンプを Umami にインポートし、数値や値を検証できます。バグ発見には不可欠です。
私のマイグレーションワークフロー
Matomo と Umami はともに私の k8s ノード上で稼働しています:
- Matomo:MariaDB
- Umami:PostgreSQL
移行対象は以下の 2 サイトです。
| Matomo ID | Umami UUID | ドメイン |
|---|---|---|
| 1 | | angristan.fr |
| 5 | | stanislas.blog |
MariaDB をポートフォワード
kubectl -n matomo port-forward svc/mariadb 3306:3306 &
マイグレーションのプレリード(プレビュー)
uv run migrate \ --mysql-host localhost --mysql-port 3307 \ --mysql-user root --mysql-password password --mysql-database matomo \ --site-mapping "1:a5d41854-bde7-4416-819f-3923ea2b2706:angristan.fr" \ --site-mapping "5:3824c584-bc9d-4a9b-aa35-9aa64f797c6f:stanislas.blog" \ --start-date 2015-01-01 --end-date 2022-07-10 \ --dry-run -v
出力
[22:13:22] INFO Configured 2 site mapping(s) [22:13:23] INFO Connecting to MySQL at localhost:3307 [22:13:23] INFO Successfully connected to MySQL database Dry Run Mode - No SQL will be generated Migration Summary ┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ ┃ Metric ┃ Value ┃ ├──────────────────┼─────────────────────┤ │ Total Sessions │ 1,352,812 │ │ Total Events │ 1,999,709 │ │ Date Range Start │ 2015‑01‑18 10:45:32 │ │ Date Range End │ 2022‑07‑09 23:58:58 │ └──────────────────┴─────────────────────┘ Per‑Site Breakdown ┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┓ ┃ Matomo ID ┃ Domain ┃ Sessions ┃ Events ┃ ├───────────┼────────────────┼──────────┼───────────┤ │ 1 │ angristan.fr │ 861,301 │ 1,332,275 │ │ 5 │ stanislas.blog │ 491,511 │ 667,434 │ └───────────┴────────────────┴──────────┴───────────┘ Ready to migrate. Run without --dry-run to generate SQL.
マイグレーション SQL を生成し、Umami にインポート
# SQL 生成(--dry-run は除外) uv run migrate ... > migration.sql # Umami へインポート kubectl -n umami exec -i umami-cnpg-1 -- env PGPASSWORD=<password> \ psql -h localhost -U app -d app < migration.sql
これで Matomo を手放し、リソースを節約できるようになりました。
matomo-to-umami をぜひご活用ください。他の方にも役立てば幸いです。
Matomo と Umami の皆さん、オープンソースで貢献していただきありがとうございます ❤️