fusionaly_
GitHub
MIT free · open source · self-hosted

Self-hosted web analytics
in one SQLite file.

Runs on a Raspberry Pi or a $5 VPS, on your own domain. One command installs it. It updates itself every night.

$ curl -fsSL https://fusionaly.com/install | sudo bash -s data.example.com

19.8k downloads

pi@raspberrypi: ~
$ curl -fsSL https://fusionaly.com/install | sudo bash -s data.example.com
→ Docker ................................ ok
→ TLS for data.yoursite.com ............. ok
→ Nightly backup + self-update .......... ok
✓ Fusionaly is running at https://data.yoursite.com

# incoming events (demo)

This is the dashboard. It's running.

Demo data for example.com, updating while you read. Pick a theme or press T. See fusionaly.com's real dashboard ↗

// events

Track anything with one attribute.

Page views and clicks track on their own. Name an event on any button, link or form, and it shows up in the dashboard. Try the buttons below.

index.html
<script defer src="https://your-domain.com/y/api/v1/sdk.js"></script>

<button data-fusionaly-event-name="signup_clicked">
  Sign up
</button>
your site, rendered
Events · arriving on your server
  1. Click a button on the left. The event lands here.
signup_clicked 0download_started 0newsletter_signup 0
1Docker image
1SQLite file
0cookies set
0personal data stored
$5VPS is enough

// why

Everything you need. Nothing that follows people around.

storage

One file. One container.

No PostgreSQL, no ClickHouse, no Redis. Ten years at 50,000 page views a day fits in one SQLite file. Back it up with scp.

tracking

First-party. Ad-block proof.

The script loads from your own subdomain. Ad blockers see your site, not a tracker, so your numbers stay whole.

privacy

Nothing personal.

No cookies, no personal data. Visitor IDs reset every day, so nobody is followed from one day to the next. See what we know about you.

ops

Install once. It updates itself.

Every night it backs up your data, then pulls the new version with zero downtime. You never SSH in to upgrade.

ai · optional

Ask your AI client.

Ask Claude Code, Codex, Cursor or Gemini CLI "Which pages drive signups?". A read-only MCP server answers from your server. How it works.

/plugin marketplace add karloscodes/fusionaly-oss
/plugin install fusionaly
sharing

One link for the whole team.

Share a read-only dashboard with a link. Turn it off again with one click.

// themes

Five themes. Yours is a few lines of CSS.

Every color, corner and font reads from CSS variables. The terminal themes go monospace and square. Click one: this page switches too.

A theme is pure data. Define the variables, add a switcher entry, and the charts, tables and heat map follow. No component changes.

Copy one of the five as a starting point. Send it back as a pull request if you want it in the box.

web/src/index.css

      

// install

Three steps. About three minutes.

1

Run one command

It sets up Docker, SSL, nightly updates, and live backups.

curl -fsSL https://fusionaly.com/install | sudo bash -s data.example.com
Installation docs
2

Add one script

Page views and clicks track on their own. One attribute tracks anything else.

<script defer src="https://your-domain.com/y/api/v1/sdk.js"></script>
Tracking docs
3

Open your dashboard

Your traffic shows up right away.

https://your-domain.com/admin

// faq

Questions, answered.

Something missing? Ask on GitHub.

What does Fusionaly cost?
Nothing. Fusionaly is free and open source (MIT). There's no paid tier and no license to buy. You run it on your own server, so you pay for that server. That's usually a few dollars a month.
What's in it?
The full analytics dashboard, unlimited events and websites, custom events, revenue tracking, user flows, goal conversions, annotations, and shareable dashboards. Plus the activity feed (what changed today) and an MCP server, so your AI client can answer questions about your data.
How do AI clients work with Fusionaly, and what do they see?
It's optional. Fusionaly answers the Model Context Protocol (MCP), so Claude Code, Codex, Cursor or Gemini CLI can ask questions about your analytics. You connect them with an agent key that you create. The tools are read-only. Your AI client sees the results of the queries it runs. Your database stays on your server.
How is Fusionaly different from self-hosted Plausible?
Moving parts. Plausible runs PostgreSQL plus ClickHouse: two databases, several containers, config to tune. Fusionaly is one SQLite file in one container. A backup is a file copy. Moving servers is one scp. Any SQLite tool can query your data.
How does Fusionaly handle privacy and GDPR?
No cookies, and nothing is stored on the visitor's device. Each visitor gets an ID hashed from request headers with a salt that changes every day. The raw IP address is thrown away. IDs reset at midnight UTC, so nobody is followed from one day to the next. See exactly what we store.
Will ad blockers block Fusionaly?
No. The script loads from your own domain, so ad blockers see your site, not a tracker.
How do I install it?
Run one command on your server, or run the Docker image yourself. Then paste one script tag on your site. See the docs.
What happens if you shut down?
Everything keeps running. It's MIT licensed, the Docker image is on your server, and your data is a file you own. The only thing that stops is the nightly updates.
Is there support?
It's open source, so support is the community: GitHub issues and discussions. I'm a solo developer and read them, but there's no SLA or guaranteed response time.

// why I built it

Your visitors' data shouldn't go to a third party.

Once it sits on someone else's server, they set the terms. They can raise the price, change the rules, get breached, or shut down.

You don't need them anymore. A $5 server runs Fusionaly, and it looks after itself.

I built it for myself first. I still use it every day.

Carlos Castellanos maker of Fusionaly

Own your numbers.

One command on your server. Your data stays in one file you control.

$ curl -fsSL https://fusionaly.com/install | sudo bash -s data.example.com
Star on GitHub