https://github.com/abians/rustrak
Ultra-lightweight error tracking server compatible with Sentry SDKs
https://github.com/abians/rustrak
error-tracking rust sentry
Last synced: 3 months ago
JSON representation
Ultra-lightweight error tracking server compatible with Sentry SDKs
- Host: GitHub
- URL: https://github.com/abians/rustrak
- Owner: AbianS
- License: other
- Created: 2026-01-22T10:36:38.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-01-25T06:05:36.000Z (3 months ago)
- Last Synced: 2026-01-26T21:34:42.025Z (3 months ago)
- Topics: error-tracking, rust, sentry
- Language: Rust
- Homepage: https://abians.github.io/rustrak/
- Size: 9.28 MB
- Stars: 4
- Watchers: 0
- Forks: 3
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
Rustrak
Ultra-lightweight, self-hosted error tracking compatible with Sentry SDKs
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

## Quick Start
### 1. Create `docker-compose.yml`
```yaml
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
```bash
# Database
POSTGRES_USER=rustrak
POSTGRES_PASSWORD=rustrak
POSTGRES_DB=rustrak
# Server
SERVER_PORT=8080
RUST_LOG=info
SESSION_SECRET_KEY=
CREATE_SUPERUSER=admin@example.com:changeme123
# Dashboard
UI_PORT=3000
RUSTRAK_API_URL=http://server:8080
```
### 3. Start Rustrak
```bash
docker compose up -d
```
Open http://localhost:3000 and login with your `CREATE_SUPERUSER` credentials

## Connect Your App
Create a project in the UI, copy your DSN, and add it to your application:
```python
# Python
import sentry_sdk
sentry_sdk.init(dsn="http://@localhost:8080/")
```
```javascript
// JavaScript
import * as Sentry from "@sentry/browser";
Sentry.init({ dsn: "http://@localhost:8080/" });
```
```go
// Go
sentry.Init(sentry.ClientOptions{Dsn: "http://@localhost:8080/"})
```
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:
```bash
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
```bash
# 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 **[docs](https://abians.github.io/rustrak/)**
- [Getting Started](https://rustrak.dev/getting-started)
- [Configuration](https://rustrak.dev/configuration)
- [API Reference](https://rustrak.dev/api)
- [Self-Hosting Guide](https://rustrak.dev/self-hosting)
## Contributing
Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) before submitting a PR.
```bash
# Run tests
pnpm test
# Run linter
pnpm lint
# Format code
pnpm format
```
## License
GPL-3.0 License - see [LICENSE](LICENSE) for details.