<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Umami on 或る阿呆の記</title><link>https://hack-le.com/tags/umami/</link><description>Recent content in Umami on 或る阿呆の記</description><generator>Hugo -- gohugo.io</generator><language>ja</language><lastBuildDate>Wed, 26 Aug 2026 00:15:34 +0900</lastBuildDate><atom:link href="https://hack-le.com/tags/umami/index.xml" rel="self" type="application/rss+xml"/><item><title>【脱Google？】Google抜きで古のアクセスカウンタを設置できる、そうAIならね</title><link>https://hack-le.com/google-umami/</link><pubDate>Fri, 28 Aug 2026 00:00:00 +0900</pubDate><guid>https://hack-le.com/google-umami/</guid><description>&lt;p&gt;&lt;strong&gt;アクセス解析といえばみんな大好き過ぎて涙目で泡吹いているGA4ことGoogle Analytics&lt;/strong&gt;なんですが、当サイトはマイブームだった脱Googleの流れで利用をやめました。まぁこれに関しては脱Googleというより、&lt;strong&gt;純粋に使いづらかったからやめた&lt;/strong&gt;面もあります。GA4は個人サイトのアクセス解析としてはあまりにも重すぎて意味不明、最初からGA4だったら誰も使わなかったんじゃないのこれ、と思います。&lt;/p&gt;&#10;&lt;h2 id="umamiの導入"&gt;Umamiの導入&#10;&lt;/h2&gt;&lt;p&gt;それから当サイトではWordPressのプラグインのお世話になっていたんですけれど、最近、セルフホストできるUmamiを導入しました。&lt;/p&gt;&#10;&lt;div class="blog-card-wrapper"&gt;&#10; &lt;a href="https://hack-le.com/umami-wordpress/" class="blog-card"&gt;&#10; &lt;div class="blog-card-content"&gt;&#10; &lt;div class="blog-card-label"&gt;&#10; &lt;svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"&gt;&lt;/path&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"&gt;&lt;/path&gt;&lt;/svg&gt;&#10; &lt;span&gt;あわせて読みたい&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="blog-card-title"&gt;セルフホストしたUmamiでWordPressサイトのアクセス解析&lt;/div&gt;&#10; &lt;div class="blog-card-url"&gt;/umami-wordpress/&lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;div class="blog-card-thumbnail"&gt;&#10; &lt;img src="https://hack-le.com/images/uploads/2026/08/image.png" alt="セルフホストしたUmamiでWordPressサイトのアクセス解析" loading="lazy" /&gt;&#10; &lt;/div&gt;&#10; &lt;/a&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;これでWordPressプラグインに頼らず、またWordPress以外のあらゆるサイトについて一括してアクセス解析ができるようになりました。有り難いことです。&lt;/p&gt;&#10;&lt;p&gt;UmamiはAPIを利用できるので、サイト内の記事のアクセスランキングなどもつくれます。ま、WordPressで実現しようと思ったらカスタムフィールドとかいじる必要あると思いますが…当サイトはもともと別に独自実装で入れていたものがあるので、それを流用することでランキング生成のバックエンドもサクッとUmamiベースに置換できました。&lt;/p&gt;&#10;&lt;h2 id="アクセスカウンタをもう一度"&gt;アクセスカウンタをもう一度&#10;&lt;/h2&gt;&lt;p&gt;作業中、&lt;strong&gt;もしかして古のアクセスカウンタを設置できるのかなぁ&lt;/strong&gt;、とふと思いました。アクセスカウンタって古代文明の名残みたいな感じかもしれませんが、というか若い人はもしかすると存在を知らないかもしれませんが、昔の個人サイトはたいていあったものです。&lt;/p&gt;&#10;&lt;p&gt;アクセスカウンタが消えたのは、需要が消えたから、ではないと思います。実際、PVランキング自体はけっこう色々なサイトで今でもありますよね。というかWordPressでもアクセス解析プラグインはたくさんあります。&lt;/p&gt;&#10;&lt;p&gt;だったらアクセスカウンタもあっていいじゃない、と思うわけですが、アクセス解析で覇権を取ったGoogle AnalyticsのAPIを追従しながら頑張って設置するにはちょっと情熱が必要になります。API権限の管理問題で、どうしても煩雑になりますよね。まぁ少なくとも、私は今までやる気にはならなかったですねぇ。&lt;/p&gt;&#10;&lt;h2 id="aiが一晩でやってくれました"&gt;AIが一晩でやってくれました&#10;&lt;/h2&gt;&lt;p&gt;しかし今は、今までとは違う。セルフホストの環境が完全に整っており、さらにAIがある。このセットによって、今までならば「できるだろうけどめんどくさいなー」ということで半年の放置不可避だったものが、爆速でそれらしいものが出来上がる。&lt;/p&gt;&#10;&lt;p&gt;ということで、GeminiにUmamiのAPIをつかったアクセスカウンタのジェネレータを作ってもらいました。&lt;/p&gt;&#10;&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hack-le.com/images/uploads/2026/08/image-6-700x616.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;若干の調整は発生しましたが、ジェバンニも真っ青の凄まじいスピードでつくってくれました。これは嬉しい。HTMLの埋め込みタグ一つでアクセスカウンタが設置できます。&lt;/p&gt;&#10;&lt;p&gt;そして当サイトに古のアクセスカウンタがのっかりました。&lt;/p&gt;&#10;&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hack-le.com/images/uploads/2026/08/image-7-697x187.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;ふふふ。00年代感。&lt;/p&gt;&#10;&lt;p&gt;これは既に作っていたサイト管理用Webアプリを土台にして作ったのですが、機能的には独立しているので、切り離せば誰でも使える形になります。なので気が向いたら分離しようかな…と思ったりもしますが、これの場合、通常一番の障壁はどっちかっていうとUmamiをセルフホストすることでしょうね(^_^;)&lt;/p&gt;&#10;&lt;p&gt;まぁUmamiも結構な頻度で更新しているようなのですが、バージョン固定できますし、&lt;strong&gt;Googleの気分に振り回されず、自分のやりたい解析ができて、解析結果もAI使えば存分に利用可能&lt;/strong&gt;、というのは、これはかなり魅力的ではないでしょうか。&lt;/p&gt;&#10;&lt;p&gt;AI使ってなんだかんだと喧しい世の中ですが、そんな派手なことしなくても、確かに自分にとって役立つものができるので、そういうことを人にも勧めていきたいですねぇ。&lt;/p&gt;&#10;&lt;p&gt;&amp;lt;関連記事&amp;gt;&lt;/p&gt;&#10;&lt;div class="blog-card-wrapper"&gt;&#10; &lt;a href="https://hack-le.com/2022-ga/" class="blog-card"&gt;&#10; &lt;div class="blog-card-content"&gt;&#10; &lt;div class="blog-card-label"&gt;&#10; &lt;svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"&gt;&lt;/path&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"&gt;&lt;/path&gt;&lt;/svg&gt;&#10; &lt;span&gt;あわせて読みたい&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="blog-card-title"&gt;2022年改正個人情報保護法でGoogle Analytics使うのに結局同意ポップアップはいるのかいらないのか&lt;/div&gt;&#10; &lt;div class="blog-card-url"&gt;/2022-ga/&lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;div class="blog-card-thumbnail"&gt;&#10; &lt;img src="https://hack-le.com/images/uploads/2022/04/77facb44116fc4217274ff52525b8254.webp" alt="2022年改正個人情報保護法でGoogle Analytics使うのに結局同意ポップアップはいるのかいらないのか" loading="lazy" /&gt;&#10; &lt;/div&gt;&#10; &lt;/a&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="blog-card-wrapper"&gt;&#10; &lt;a href="https://hack-le.com/httptohttps/" class="blog-card"&gt;&#10; &lt;div class="blog-card-content"&gt;&#10; &lt;div class="blog-card-label"&gt;&#10; &lt;svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"&gt;&lt;/path&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"&gt;&lt;/path&gt;&lt;/svg&gt;&#10; &lt;span&gt;あわせて読みたい&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="blog-card-title"&gt;結局サイトをhttps対応させました&lt;/div&gt;&#10; &lt;div class="blog-card-url"&gt;/httptohttps/&lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;div class="blog-card-thumbnail"&gt;&#10; &lt;img src="https://hack-le.com/images/uploads/2016/11/f87bbb3a69696219efe976c987643be6.webp" alt="結局サイトをhttps対応させました" loading="lazy" /&gt;&#10; &lt;/div&gt;&#10; &lt;/a&gt;&#10;&lt;/div&gt;&#10;&#10;</description></item><item><title>セルフホストしたUmamiでWordPressサイトのアクセス解析</title><link>https://hack-le.com/umami-wordpress/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0900</pubDate><guid>https://hack-le.com/umami-wordpress/</guid><description>&lt;p&gt;Google Analytics代替として候補にあがる、セルフホストのアクセス解析ソフトUmamiを使っていく。&lt;/p&gt;&#10;&lt;p&gt;&lt;a class="link" href="https://github.com/umami-software/umami" target="_blank" rel="noopener"&#10; &gt;GitHub - umami-software/umami: Umami is a privacy-first analytics platform. Traffic, campaigns, behavior, conversions, and revenue in one place — no cookies, no tracking, self-hosted or in the cloud. · GitHub&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;なお公式サイトはisドメインなんだけれど、なぜか弾かれる。Cloudflare経由で接続するといけるのでおまかんっぽいんだがアイスランドに嫌われるようなことしたっけ？&lt;/p&gt;&#10;&lt;p&gt;まぁそれはいいとして、今回インストールでは「&lt;a class="link" href="https://www.bitdoze.com/umami-analytics-install/" target="_blank" rel="noopener"&#10; &gt;How to Install Umami Analytics on Docker (2026 Guide)&lt;/a&gt;」の記事を参考にさせていただきました、っていうか正直うちの記事よりこの記事のほうが詳しいからこっち見たほうがいいよｗ&lt;/p&gt;&#10;&lt;p&gt;じゃあなんで書くのかというと、記事は消えるから……。10年以上もブログやっていると「この記事が詳しいです！」で雑に案内だけ貼ったリンクが消える消える。まぁ微妙に情報補足と雑なWordPress案内も追加したので…。&lt;/p&gt;&#10;&lt;h2 id="環境"&gt;環境&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a class="link" href="mailto:Umami@3.2.0" &gt;Umami@3.2.0&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;自宅サーバ&#10;&lt;ul&gt;&#10;&lt;li&gt;ThinkPad L390, Core i5-8265U, 32GB RAM&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Linux Mint Xfce 22.3&#10;&lt;ul&gt;&#10;&lt;li&gt;docker 29.7.2&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Cloudflare Tunnel&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="インストールと最初の設定"&gt;インストールと最初の設定&#10;&lt;/h2&gt;&lt;h3 id="docker-composeyml"&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;&#10;&lt;/h3&gt;&lt;p&gt;以下でランダムな文字列を作る&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;openssl&lt;/span&gt; &lt;span class="nx"&gt;rand&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;hex&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;文字列はコピーしておく。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;.env&lt;/code&gt;を作成する。以下の&lt;code&gt;APP_SECRET&lt;/code&gt;にさっきのランダム文字列を入れる。パスワードは適当に入れる。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;POSTGRES_USER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;umami&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your-secure-password&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;POSTGRES_DB&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;umami&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;APP_SECRET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;run-openssl-rand-hex-32-to-generate&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DISABLE_TELEMETRY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;を編集。元記事からimageのURLだけ差し替えた（エラー出たので）。ポート番号は変えたかったら変える。バージョン固定したかったらする。ちなみにvつかないらしい（v3.2.0ではなく3.2.0）。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;services:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; umami:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; image: umamisoftware/umami:postgresql-latest&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ports:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - &lt;span class="s2"&gt;&amp;#34;3000:3000&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; environment:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; DATABASE_URL: postgresql://&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;POSTGRES_USER&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;:&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;@umami-db:5432/&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;POSTGRES_DB&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; APP_SECRET: &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;APP_SECRET&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; DISABLE_TELEMETRY: &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DISABLE_TELEMETRY&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; depends_on:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; umami-db:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; condition: service_healthy&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; init: &lt;span class="nb"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; restart: always&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; healthcheck:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; test: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;CMD-SHELL&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;curl http://localhost:3000/api/heartbeat&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; interval: 5s&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; timeout: 5s&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; retries: &lt;span class="m"&gt;5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; umami-db:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; image: postgres:15-alpine&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; environment:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; POSTGRES_DB: &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;POSTGRES_DB&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; POSTGRES_USER: &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;POSTGRES_USER&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; POSTGRES_PASSWORD: &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; TZ: UTC&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; volumes:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - ./umami-db-data:/var/lib/postgresql/data&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; restart: always&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; healthcheck:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; test: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;CMD-SHELL&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;pg_isready -U &lt;/span&gt;&lt;span class="nv"&gt;$$&lt;/span&gt;&lt;span class="s2"&gt;{POSTGRES_USER} -d &lt;/span&gt;&lt;span class="nv"&gt;$$&lt;/span&gt;&lt;span class="s2"&gt;{POSTGRES_DB}&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; interval: 5s&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; timeout: 5s&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; retries: &lt;span class="m"&gt;5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ここで、参考記事によると、Cloudflare Tunnelを使っている場合、Umamiから見ると全部CloudflareのIPを取ってしまうので、&lt;code&gt;docker-compose.yml&lt;/code&gt;の&lt;code&gt;environment&lt;/code&gt;に以下を追記せよとのことであった。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CLIENT_IP_HEADER: cf-connecting-ip&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;VPSとかで直接公開してCaddyをリバースプロキシにしている場合はヘッダの付与よしなにしているから不要なはず。&lt;/p&gt;&#10;&lt;p&gt;準備が出来たら、&lt;code&gt;docker compose up&lt;/code&gt;でエラーが出ないことを確認する。いけたら&lt;code&gt;docker compose up -d&lt;/code&gt;でバックグラウンド起動。&lt;/p&gt;&#10;&lt;h3 id="最初の設定"&gt;最初の設定&#10;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;http://&amp;lt;IPアドレス&amp;gt;:&amp;lt;ポート&amp;gt;&lt;/code&gt;にアクセスして、ユーザ名&lt;code&gt;admin&lt;/code&gt;とパスワード&lt;code&gt;umami&lt;/code&gt;でログイン。&lt;/p&gt;&#10;&lt;p&gt;当然危ないので、管理者設定からパスワードを変更する。ユーザ名も変更できる。&lt;/p&gt;&#10;&lt;p&gt;言語設定も日本語あり。&lt;/p&gt;&#10;&lt;h3 id="ネットワーク設定"&gt;ネットワーク設定&#10;&lt;/h3&gt;&lt;p&gt;トラッキングデータの送信はクライアントマシンから行うため、グローバルに公開する必要あり。&lt;/p&gt;&#10;&lt;p&gt;全体の流れは以下 by AI。&lt;/p&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;sequenceDiagram&#10;autonumber&#10;actor Client as クライアント&#10;participant WP as WPサーバー(ブログサイト)&#10;participant Umami as Umamiサーバー(セルフホスト)&#10;Note over Client, Umami: 1. ブログページの読み込み&#10;Client-&gt;&gt;WP: ① ページリクエスト (アクセス)&#10;WP--&gt;&gt;Client: ② HTML返却 (Umamiのscriptタグを含む)&#10;Note over Client, Umami: 2. アクセス解析データの送信 (クライアント直接)&#10;Client-&gt;&gt;Umami: ③ script.jsの読み込みリクエスト&#10;Umami--&gt;&gt;Client: ④ script.jsの返却&#10;Client-&gt;&gt;Umami: ⑤ 閲覧データ(PV等)を直接送信 [要グローバル公開]&lt;/pre&gt;&lt;p&gt;うちの場合は例によってCloudflare Tunnelで開通している。&lt;/p&gt;&#10;&lt;p&gt;ここでサブドメインだが、参考記事によると&lt;code&gt;analytics&lt;/code&gt;とか使うと広告ブロッカーに遮断される率が上がるらしい。参考記事では&lt;code&gt;stats&lt;/code&gt;や&lt;code&gt;metrics&lt;/code&gt;や&lt;code&gt;track&lt;/code&gt;などにせよと言われている。&lt;/p&gt;&#10;&lt;h2 id="wordpressサイトの解析"&gt;WordPressサイトの解析&#10;&lt;/h2&gt;&lt;p&gt;別にWordPressサイトじゃなくてもやることは同じ。&lt;/p&gt;&#10;&lt;h3 id="トラッキングコードの取得"&gt;トラッキングコードの取得&#10;&lt;/h3&gt;&lt;p&gt;サイドバーの「Webサイト」より、管理したいドメインを追加する。&lt;/p&gt;&#10;&lt;p&gt;追加したら、Editを開くと以下のようなトラッキングコードが取得できる。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;defer&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://your-umami-domain.com/script.js&amp;#34;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;website&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;/script&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;基本はこれを&amp;lt;head&amp;gt;タグに貼り付けること。&lt;/p&gt;&#10;&lt;h3 id="タグの貼り付け"&gt;タグの貼り付け&#10;&lt;/h3&gt;&lt;p&gt;プラグイン「Integrate Umami」があるが、&amp;lt;head&amp;gt;タグに貼り付けるだけなのでプラグイン使う必要はないかなと思う。&lt;/p&gt;&#10;&lt;p&gt;うちはテーマとしてSwellを使っているので、「外観」「カスタマイズ」「高度な設定」から「headタグ終了直前に出力するコード」にコードを貼り付け。&lt;/p&gt;&#10;&lt;p&gt;自分だけ除外とかするなら &lt;code&gt;functions.php&lt;/code&gt;でログインユーザにはトラッキングコードを出さないとかしないといけないかなと思う。&lt;/p&gt;&#10;&lt;h3 id="実測で確認"&gt;実測で確認&#10;&lt;/h3&gt;&lt;p&gt;しばらくダッシュボードを見てきちんと動いているか確認する。&lt;/p&gt;&#10;&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hack-le.com/images/uploads/2026/08/image-700x380.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;まぁなんか動いてそう。使い方についてはおいおい見ていこうと思う。&lt;/p&gt;&#10;&lt;p&gt;以上。ちなみに最初AIに聞いて作業していたんだが、古いバージョンの情報に惑わされて完全に無能だった。&lt;/p&gt;&#10;</description></item></channel></rss>