snout.nu help

Analytics

January 19, 2026 at 6:25 AM • 2 min read • 275 words

Snout.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?