Skip to content
/ rustrak Public

Ultra-lightweight error tracking server compatible with Sentry SDKs

License

Notifications You must be signed in to change notification settings

AbianS/rustrak

Repository files navigation

Rustrak

Rustrak

Ultra-lightweight, self-hosted error tracking compatible with Sentry SDKs

CI License Release

Documentation · Report Bug · Request Feature


Why Rustrak?

Most error tracking solutions are either expensive SaaS products or heavy self-hosted applications. Rustrak is different:

  • Sentry Compatible - Works with any existing Sentry SDK (Python, JavaScript, Go, Rust, etc.)
  • Lightweight - Server runs with ~50MB memory footprint
  • Fast - <50ms P99 ingestion latency, 10k+ events/second
  • Simple - Single binary + PostgreSQL, no Redis or complex infrastructure
Frame 2

Quick Start

1. Create docker-compose.yml

services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5
    restart: unless-stopped

  server:
    image: abians7/rustrak-server:latest
    ports:
      - "${SERVER_PORT}:8080"
    environment:
      - HOST=0.0.0.0
      - PORT=8080
      - RUST_LOG=${RUST_LOG}
      - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
      - SESSION_SECRET_KEY=${SESSION_SECRET_KEY}
      - CREATE_SUPERUSER=${CREATE_SUPERUSER}
    depends_on:
      postgres:
        condition: service_healthy
    restart: unless-stopped

  ui:
    image: abians7/rustrak-ui:latest
    ports:
      - "${UI_PORT}:3000"
    environment:
      - RUSTRAK_API_URL=${RUSTRAK_API_URL}
    depends_on:
      - server
    restart: unless-stopped

volumes:
  postgres_data:

2. Create .env file

# Database
POSTGRES_USER=rustrak
POSTGRES_PASSWORD=rustrak
POSTGRES_DB=rustrak

# Server
SERVER_PORT=8080
RUST_LOG=info
SESSION_SECRET_KEY=<run: openssl rand -hex 32>
CREATE_SUPERUSER=admin@example.com:changeme123

# Dashboard
UI_PORT=3000
RUSTRAK_API_URL=http://server:8080

3. Start Rustrak

docker compose up -d

Open http://localhost:3000 and login with your CREATE_SUPERUSER credentials

ezgif-3519bd2e7e178ab7

Connect Your App

Create a project in the UI, copy your DSN, and add it to your application:

# Python
import sentry_sdk
sentry_sdk.init(dsn="http://<key>@localhost:8080/<project_id>")
// JavaScript
import * as Sentry from "@sentry/browser";
Sentry.init({ dsn: "http://<key>@localhost:8080/<project_id>" });
// Go
sentry.Init(sentry.ClientOptions{Dsn: "http://<key>@localhost:8080/<project_id>"})

Works with any Sentry SDK - no code changes needed if you're migrating from Sentry.

Architecture

┌─────────────────┐     ┌─────────────────┐     ┌──────────────┐
│   Sentry SDK    │────▶│  Rustrak Server │────▶│  PostgreSQL  │
│   (your app)    │     │   (Rust/Actix)  │     │              │
└─────────────────┘     └─────────────────┘     └──────────────┘
                               │
                               ▼
                        ┌─────────────┐
                        │  Rustrak UI │
                        │  (Next.js)  │
                        └─────────────┘
Component Tech Purpose
Server Rust + Actix-web API & event ingestion
UI Next.js 16 Dashboard
Database PostgreSQL 16 Storage

Docker Images

Available on Docker Hub:

docker pull abians7/rustrak-server
docker pull abians7/rustrak-ui
Image Size Description
rustrak-server ~20MB API & event ingestion
rustrak-ui ~50MB Next.js dashboard

Development

# Prerequisites: Rust, Node.js 20+, pnpm, Docker

# Install dependencies
pnpm install

# Start PostgreSQL
docker-compose -f docker-compose.dev.yml up -d postgres

# Run server (terminal 1)
cd apps/server && cargo run

# Run UI (terminal 2)
cd apps/webview-ui && pnpm dev

Documentation

Full documentation is available at rustrak.dev

Contributing

Contributions are welcome! Please read our Contributing Guide before submitting a PR.

# Run tests
pnpm test

# Run linter
pnpm lint

# Format code
pnpm format

License

GPL-3.0 License - see LICENSE for details.