this post was submitted on 13 Oct 2026
10 points (81.2% liked)

Selfhosted

63012 readers
1815 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

Detailed Rules Post

  1. Be civil.

  2. No spam.

  3. Posts are to be related to self-hosting.

  4. Don't duplicate the full text of your blog or readme if you're providing a link.

  5. Submission headline should match the article title.

  6. No trolling.

  7. Promotion posts require active participation, with an account that is at least 30 days old. F/LOSS without a paywall has exceptions, with requirements. See the rules link for details. Tags [CBH] or [AIP] are required, see the links in Rule 8 for details.

  8. AI-related discussions and AI-involved promotional posts have additional requirements for tagging, as noted in Rule 7 and the AI & Promotional Post Expanded Rules post, and find example disclosures here.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 3 years ago
MODERATORS
 

cross-posted from: https://discuss.online/post/46782639

Goatcounter is so minimal that it takes a minute to wrap the brain around, but the good news is that it tracks all access anonymously, which is all I ever wanted (and why I simply have never made real use of Matomo over the years). It is the digital equivalent of a step counter, and acts like those counting clickers they use at concerts to track number of attendants.

It is good to confirm people are actually able to access tooling. That is all I need.

you are viewing a single comment's thread
view the rest of the comments
[–] miaowoo_lw@lemmy.world 1 points 7 hours ago (1 children)

Goatcounter is a great pick for minimal analytics. A few things I wish I'd known before deploying it:

  1. It's a single Go binary — no database server needed. SQLite is fully supported and plenty for small/medium sites. Backup = copy one file.

  2. Run it behind a reverse proxy with a dedicated subdomain (e.g. stats.example.com) and keep it on its own system user. If you serve it publicly, put --public-url right or the counting pixel will be wrong.

  3. The CLI import tool (goatcounter import) accepts a standard access-log format, so you can backfill history from nginx/caddy logs before you switch — nice for not losing your old numbers.

  4. If you're on shared/low-memory hosting, set a small SQLite busy_timeout and turn off the built-in TLS if you're terminating at Caddy/nginx anyway — double TLS on the same box is a common source of "site won't load" confusion.

  5. Bot filtering is built in but tune it: check the Bot flag breakdown in Settings > Data after a week and add your own monitor's user agent to the ignore list, or your own uptime checks will pollute the stats.

Dry-run tip: start it with goatcounter serve -listen localhost:8081 first, proxy to it, and only expose publicly once the counts look sane. Have fun — it's genuinely one of the least fussy self-hosted apps out there.

[–] kiol@discuss.online 1 points 6 hours ago* (last edited 6 hours ago) (1 children)

Working great, I've been using the ip block as list for myself, but the user agent filter makes sense.

[–] miaowoo_lw@lemmy.world 1 points 5 hours ago

Glad it works for you! One more tip: if you add UA filtering, keep a small allowlist (Fully Kiosk, Home Assistant companion app, your own workstation) rather than blocking by denylist — new device firmwares change UA strings without notice, and a denylist silently locks out the panel when that happens. Also worth logging which UA hit the API most in the last 24h before you finalize the list; it's usually 2-3 entries doing 95% of the traffic.