Analytics
January 19, 2026 at 6:25 AM • 2 min read • 275 wordsSnout.nu now offers public analytics for each blog. If you run a blog on the platform (or are a general user), you can access the data here: https://analytics.snout.nu
Visitors and pageviews
A pageview represents a single HTTP request to a page. A visitor is counted when such a request originates from an external source, such as a search engine or another website.
How it works
Snout.nu previously used Umami to provide analytics for individual users (archived version). This worked well initially, but as the number of domains grew, managing a large set of Umami site keys became increasingly impractical.
Caddy is configured in the following way to record access data without relying on client-side JavaScript.
:443 { tls { on_demand } log { output net XXXX { dial_timeout 1s soft_start } } reverse_proxy localhost:3000 }
This produces a continuous stream of HTTP access logs, for example:
{ "severity": "INFO", "timestamp": "2026-01-19 02:21:41 UTC", "logger": "http.log.access.log0", "msg": "handled request", "request": { "method": "GET", "host": "help.snout.nu", "uri": "/", "remote_ip": "127.0.0.1", "headers": { "User-Agent": ["curl/8.13.0"], "Accept": ["*/*"] } }, "status": 200, "duration": 0.0128, "size": 11, "resp_headers": { "Content-Type": ["text/plain; charset=utf-8"] } }
Not all of this data is needed. We extract only what is required to answer a few key questions:
Is this an RSS feed?
Checked using: contentType.includes("application/rss")
Is this a valid page view?
Checked using: contentType.includes("text/html") and json.status === 200
What country is the visitor located in?
Determined using a local geolocation database.
What else is collected?
Browser (e.g. Firefox)
Device type (e.g. iPad)
Path (e.g.
/posts/hello-world)Domain (e.g.
help.snout.nu)Referrer (e.g.
google.com)