LogSure

Self-hosting

Your server. Your data.

LogSure is one Rust binary with the web console beside it, in one container. Run it anywhere Docker runs.

Try it in a minute

PASSWORD=$(uuidgen); echo "Password: $PASSWORD"
docker run -d --name logsure -p 8080:8080 -e ADMIN_PASSWORD=$PASSWORD \
  -e CONSOLE_HOST=localhost:8080 -e COOKIE_SECURE=0 ghcr.io/logsure/server

Open http://localhost:8080 and sign in with any username and the password it printed. Its data goes when the container does.

Keep it running

export ADMIN_PASSWORD=$(uuidgen) DATA_KEY=$(openssl rand -hex 32)
echo "ADMIN_PASSWORD=$ADMIN_PASSWORD DATA_KEY=$DATA_KEY"   # keep both
docker run -d --name logsure --restart unless-stopped -p 8080:8080 -v logsure-data:/data \
  -e ADMIN_PASSWORD -e DATA_KEY -e CONSOLE_HOST=localhost:8080 \
  -e COOKIE_SECURE=0 -e TRUST_PROXY=0 ghcr.io/logsure/server:latest

Data in the logsure-data volume, email addresses sealed with DATA_KEY, restarts with Docker. Replace a quick-start container first with docker rm -f logsure. On a domain with HTTPS: Getting started.

Small enough to understand.

One process answers the ingest API, the console API, the MCP server and the web console's files. Background jobs run inside it.

  • Rust, with axum and tokio
  • SQLite out of the box, with Postgres and MySQL on the way
  • Images for amd64 and arm64, running as uid 1000

One data folder

/data
├── care.db        the database
├── files/         attachments
├── icons/         app icons, fetched from their sites
└── backups/       one copy a day, the last 7

HTTPS in one more line.

The Compose file has a Caddy companion that gets the certificate for your domain. Or put it behind any proxy you already run.

Docker Compose

git clone https://github.com/logsure/server && cd server
cp .env.example .env    # ADMIN_PASSWORD, DATA_KEY, DOMAIN

docker compose -f docker-compose.yml \
  -f docker-compose.caddy.yml up -d

It tells your visitors what it keeps.

Every host that routes /_care/ to LogSure gets a public page listing what is received, used and kept, generated from the settings it runs with. Link it from your privacy policy.

The public page at /_care/: what the analytics and forms receive, what is used for a moment and never written, and how visitors are counted.

Upgrades and backups, handled.

The engine migrates its database at start and writes a daily backup without the visitor salts. Keep DATA_KEY with your backups: the emails need it.

Upgrade

docker compose pull
docker compose up -d

# stay on a release instead
LOGSURE_VERSION=0.1.0

Run it as a team.

Invite people with a link, as admins, members or viewers, and limit each to the apps they work on. Every change lands in the audit log.

  • Passkeys, or two-factor with an authenticator app
  • Require two-factor for the whole team
  • Sign anyone out of every device at once
Settings, Team: users with their role, apps and two-factor, an invite, and the audit log.

Only what you use.

Switch whole features off for the server or for one app: analytics, funnels, the inbox, waitlists, errors, tracing, the Lab or the MCP server. What is off takes nothing in, and its screens and tools go away.

Feature switches
Settings, Features: each feature's switch for the server, and a table of what each app has on.

How far does one server go?

One server handles most teams comfortably. At very high volume, tens of millions of events a month, or when you need high availability, the multi-node Cloud and Enterprise plans are the path.

LogSure on one server is open source under the MPL-2.0, with every feature. The managed multi-node cluster is a commercial offering, as Cloud or as an Enterprise self-hosted licence.

Cloud and Enterprise, on request

Why the cluster?

  • Scales out. Event intake runs on many nodes behind a load balancer, so traffic spikes don't slow your sites.
  • Fast at any size. Analytics move to a column store, so dashboards and funnels stay quick over billions of events.
  • Always on. No single server to fail: failover and upgrades without downtime.
  • Hands off. Set up, scaled, backed up with point-in-time restore, and updated automatically.
  • Support. A direct line to the people who build it.
Single server compared with the cluster
Single server freeCluster Cloud or Enterprise
Where it runsYour one serverOur cloud, or your own infrastructure
Who operates itYouManaged automatically; by us for Cloud
ScalingA bigger serverMore nodes, added automatically
On failure or upgradeDown while the server restartsFailover and upgrades without downtime
BackupsA daily copy, the last seven keptAutomatic, with point-in-time restore
Comfortable withMost teams, up to millions of events a monthTens of millions of events a month and beyond
SupportCommunity, on GitHubA direct line to the people who build it
LicenceMPL-2.0, open sourceCommercial

Same product, same API and apps; the cluster changes how it runs, not what it does.

The cluster is offered on request. Talk to us

How it works.

Run it

Docker, Compose or the binary built with Cargo.

cargo build --release -p logsure-server

Add an app

Settings › Apps: an id, a name and the domains it runs on.

acme-notes   notes.acme.example

Route /_care/

Send each app's /_care/ to the server and add the script.

curl -sI https://notes.acme.example/_care/health