Google Analytics代替として候補にあがる、セルフホストのアクセス解析ソフトUmamiを使っていく。
なお公式サイトはisドメインなんだけれど、なぜか弾かれる。Cloudflare経由で接続するといけるのでおまかんっぽいんだがアイスランドに嫌われるようなことしたっけ?
まぁそれはいいとして、今回インストールでは「How to Install Umami Analytics on Docker (2026 Guide)」の記事を参考にさせていただきました、っていうか正直うちの記事よりこの記事のほうが詳しいからこっち見たほうがいいよw
じゃあなんで書くのかというと、記事は消えるから……。10年以上もブログやっていると「この記事が詳しいです!」で雑に案内だけ貼ったリンクが消える消える。まぁ微妙に情報補足と雑なWordPress案内も追加したので…。
環境
- [email protected]
- 自宅サーバ
- ThinkPad L390, Core i5-8265U, 32GB RAM
- Linux Mint Xfce 22.3
- docker 29.7.2
- Cloudflare Tunnel
インストールと最初の設定
docker-compose.yml
以下でランダムな文字列を作る
openssl rand -hex 32文字列はコピーしておく。
.envを作成する。以下のAPP_SECRETにさっきのランダム文字列を入れる。パスワードは適当に入れる。
POSTGRES_USER=umami
POSTGRES_PASSWORD=your-secure-password
POSTGRES_DB=umami
APP_SECRET=run-openssl-rand-hex-32-to-generate
DISABLE_TELEMETRY=1docker-compose.ymlを編集。元記事からimageのURLだけ差し替えた(エラー出たので)。ポート番号は変えたかったら変える。バージョン固定したかったらする。ちなみにvつかないらしい(v3.2.0ではなく3.2.0)。
services:
umami:
image: umamisoftware/umami:postgresql-latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@umami-db:5432/${POSTGRES_DB}
APP_SECRET: ${APP_SECRET}
DISABLE_TELEMETRY: ${DISABLE_TELEMETRY:-1}
depends_on:
umami-db:
condition: service_healthy
init: true
restart: always
healthcheck:
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
interval: 5s
timeout: 5s
retries: 5
umami-db:
image: postgres:15-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
TZ: UTC
volumes:
- ./umami-db-data:/var/lib/postgresql/data
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5ここで、参考記事によると、Cloudflare Tunnelを使っている場合、Umamiから見ると全部CloudflareのIPを取ってしまうので、docker-compose.ymlのenvironmentに以下を追記せよとのことであった。
CLIENT_IP_HEADER: cf-connecting-ipVPSとかで直接公開してCaddyをリバースプロキシにしている場合はヘッダの付与よしなにしているから不要なはず。
準備が出来たら、docker compose upでエラーが出ないことを確認する。いけたらdocker compose up -dでバックグラウンド起動。
最初の設定
http://<IPアドレス>:<ポート>にアクセスして、ユーザ名adminとパスワードumamiでログイン。
当然危ないので、管理者設定からパスワードを変更する。ユーザ名も変更できる。
言語設定も日本語あり。
ネットワーク設定
トラッキングデータの送信はクライアントマシンから行うため、グローバルに公開する必要あり。
全体の流れは以下 by AI。
うちの場合は例によってCloudflare Tunnelで開通している。
ここでサブドメインだが、参考記事によるとanalyticsとか使うと広告ブロッカーに遮断される率が上がるらしい。参考記事ではstatsやmetricsやtrackなどにせよと言われている。
WordPressサイトの解析
別にWordPressサイトじゃなくてもやることは同じ。
トラッキングコードの取得
サイドバーの「Webサイト」より、管理したいドメインを追加する。
追加したら、Editを開くと以下のようなトラッキングコードが取得できる。
<script
defer
src="https://your-umami-domain.com/script.js"
data-website-id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
</script>基本はこれを<head>タグに貼り付けること。
タグの貼り付け
プラグイン「Integrate Umami」があるが、<head>タグに貼り付けるだけなのでプラグイン使う必要はないかなと思う。
うちはテーマとしてSwellを使っているので、「外観」「カスタマイズ」「高度な設定」から「headタグ終了直前に出力するコード」にコードを貼り付け。
自分だけ除外とかするなら functions.phpでログインユーザにはトラッキングコードを出さないとかしないといけないかなと思う。
実測で確認
しばらくダッシュボードを見てきちんと動いているか確認する。

まぁなんか動いてそう。使い方についてはおいおい見ていこうと思う。
以上。ちなみに最初AIに聞いて作業していたんだが、古いバージョンの情報に惑わされて完全に無能だった。
コメント