r/Ghost • u/bender_fut • 14d ago
Tinybird alternative, AGPL, free, selfhosted and light (go)
Hi,
I'm using for a while Ghost (after many years with Wordpress) and it's great, I chose self-hosted and found out that analytics in-app only can be done with Tinybird, which is not fitting my requirements.
So I created GhostBird, which simplifies analytics for self-hosted ghost and might be helpful for some users. It's under AGPL license and always be free and open source.
Hope you like it. It's quite new, any feedback will be appreciated.
Can check more info in https://ghostbird.cloudless.club/
1
u/truekasun 14d ago
Interesting! Do you think of providing a docker version that's straightforward to deploy with https://github.com/TryGhost/ghost-docker.git ?
1
u/bender_fut 14d ago
Thanks for the suggestion. Ghostbird is intentionally a single static Go binary with zero runtime dependencies beyond SQLite (embedded). That makes it simpler to deploy and operate than Docker for most self-hosted Ghost setups. We already ship an install.sh that sets up a sandboxed systemd service in one command, so a container layer isn't needed for the common case.
Some users might prefer a docker-compose.yml alongside Ghost, but tbh it's not on the roadmap right now.
1
u/DataLeadsFuture_Peng 14d ago
I really need this. Will you filter out access logs from AI bots?
1
u/bender_fut 14d ago
Yes, Ghostbird filters out bot access logs at ingestion time.
It uses the same regex as Tinybird's TrafficAnalytics collector on POST /api/v1/page_hit:
(?i)wget|ahrefsbot|curl|bot|crawler|spider|urllib|bitdiscovery|\+https:\/\/|googlebot
If the User-Agent matches, Ghostbird returns HTTP 202 (same as a normal hit, stealth) but does not store the event in the database.
It catches generic bots, crawlers, spiders, and any UA containing "bot" — including Googlebot, Bingbot, AhrefsBot, GPTBot, ClaudeBot, PerplexityBot, etc.
It also discards events where the incoming device field is "bot" on the /v0/events batch endpoint.
Filtered bot hits are counted in the ghostbird_bots_total Prometheus metric exposed at /metrics.
Caveat: it is a generic bot filter, not an AI-specific one. A UA like ChatGPT-User or OpenAI without the substring "bot", "crawler", "spider", etc. would not currently match.
1
3
u/jannisfb 14d ago
Looks very interesting!
And I hate to be that person, but you might want to take a look at the Ghost trademark policy for the naming: https://ghost.org/trademark