Risulta
Self-hosted · Multi-site v0.1.5

The smallest self-hosted analytics you can run.

A single 4.6 MB binary, no Docker, no database container, no Node runtime. Just the file and its data directory.

Install or update on Debian or Ubuntu

Downloads and verifies the latest release, then installs or updates the Risulta systemd service. Run the same command whenever you want the newest version.

curl -fsSL https://raw.githubusercontent.com/baronunread/risulta/main/deploy/install.sh | sudo sh
Source code

AGPL-3.0 server and dashboard; MIT tracker script.

4.6 MB

Risulta 4.6 MB
GoatCounter ~25 MB
Plausible CE ~58 MB*
Umami ~130 MB*

*Docker image, before adding a database

Risulta dashboard: seven-day visitor trend, top pages, and traffic sources

Built as a binary using Sproutboat.

Risulta compiles from a Workers-style fetch handler straight into one native Linux binary through Porffor and Zig. No Node runtime, no Docker, no bundler config ships with it.

Sproutboat is the toolchain behind that build. Risulta is the real product proving it holds up: the same router, storage, and dashboard you can read end to end, running as one file.

Read about sproutboat

src/index.js

export default {

fetch(request) {

return routeRequest(request);

},

};

# sproutboat build --standalone

✓ dist/risulta-sprout, one file, no runtime

4.6 MB

About a fifth the size of the next-smallest self-hosted option

~5.1 ms

Median response time in a local ingest benchmark

~100 ms

Cold start, only on restart - it runs as a long-lived service

Measured with bench.mjs against a same-machine loopback ingest run, 25 concurrent connections. Numbers move with hardware; the method is in the repo.

Included

What ships in the binary

Collector and dashboard

Track pageviews and review reports from the same small server.

Multiple websites

Give every site its own tracker key, data store, and access rules.

Cookie-free visitor counts

Anonymous, daily-scoped hashes instead of browser identifiers.

Goals and funnels

Define conversion events and follow drop-off across ordered steps.

Exportable reports

Bounded JSON and CSV reports with filters, dimensions, and pagination.

Online backups

One authenticated call snapshots SQLite with an integrity-checked manifest.

The difference

No analytics stack to operate.

Risulta favors a focused executable and local storage over containers, hosted accounts, and a separate database service. It's a self-hosted alternative to Plausible, Umami, and GoatCounter.

One executable

Dashboard, collector, and authentication together.

Embedded SQLite

No PostgreSQL, ClickHouse, or managed database.

Small tracker

A pageview-only script without a product suite.

Run your own analytics today.

One command on a Debian or Ubuntu box, and you have a dashboard with no third party reading your traffic.

Open source

All of it is open source.

The server, dashboard, tracker, and installer all live in one public repository under AGPL-3.0 (the tracker script is MIT).