thakares 2761863c14 Release v0.5.2
- Add admin content consistency diagnostics
- Add admin-migrate CLI
- Harden RBAC for API endpoints
- Normalize multi-tenant storage paths
- Improve backup and restore compatibility
- Fix administrator routing consistency
- Improve doctor and stats commands
2026-06-29 16:11:43 +05:30
2026-06-29 16:11:43 +05:30
2026-06-11 20:19:03 +05:30
2026-06-11 20:19:03 +05:30
2026-06-29 16:11:43 +05:30
2026-06-18 13:04:28 +05:30

BZOD

Self-hosted Multi-User URL Management, Landing Page and QR Analytics Platform written in Rust.

Rust SQLite License Version

BZOD combines URL shortening, landing pages, QR code generation, analytics, moderation, audit logging, backup & restore workflows, tenant isolation, and administrative tooling into a single deployable binary powered entirely by SQLite.

Designed for:

  • Homelabs
  • Small Businesses
  • Enterprises
  • Educational Institutions
  • Government Agencies
  • Internal IT Platforms
  • Self-Hosted Enthusiasts

BZOD enables complete ownership of:

  • Links
  • Analytics
  • Users
  • QR Codes
  • Landing Pages
  • Operational Data

without requiring PostgreSQL, Redis, Elasticsearch, Kubernetes, or external SaaS services.


Why BZOD?

Most URL shorteners focus only on redirects and click tracking.

BZOD is designed as a complete self-hosted platform that combines:

  • URL Management
  • Landing Pages
  • QR Codes
  • Analytics
  • User Management
  • Audit Logging
  • Moderation
  • Backup & Restore
  • Disaster Recovery
  • Administrative Tooling

within a single deployable application.

The goal is operational simplicity without sacrificing reliability, security, or ownership.


Runtime Efficiency (v0.5.1)

Metric Value
Binary Size 11 MB
RSS Memory 11.8 MB
Peak RSS 11.8 MB
CPU Idle 0.02%
Swap Usage 0 KB
PIDs 7

On a typical 32 GB server:

  • Memory usage: ~0.04%
  • No swapping
  • Plenty of headroom

BZOD runs closer to a lightweight infrastructure service than a typical web application.

Design Philosophy

BZOD is built around five principles:

1. Single Binary Deployment

A production deployment should not require:

  • Kubernetes
  • Elasticsearch
  • Redis
  • Multiple microservices

A single binary should be capable of serving the entire platform.


2. SQLite First

SQLite offers:

  • Simplicity
  • Reliability
  • Easy Backups
  • Easy Recovery
  • Minimal Operational Overhead

BZOD embraces SQLite instead of treating it as a development-only database.


3. Self-Hosted Ownership

All data belongs to the operator.

This includes:

  • URLs
  • Analytics
  • User Accounts
  • QR Codes
  • Landing Pages
  • Audit Logs

No telemetry is required.


4. Multi-Tenant Isolation

Each tenant receives isolated storage and analytics.

The failure or compromise of one tenant must not affect another tenant.


5. Recoverability

A platform that cannot be restored is not production ready.

BZOD includes:

  • Backup Workflows
  • Restore Workflows
  • Disaster Recovery Procedures
  • Upgrade Validation
  • Integrity Checks

as first-class features.


Key Features

URL Management

  • Short URLs
  • Custom Slugs
  • Bulk Operations
  • Password-Protected Links
  • Expiring Links
  • Smart Preview Pages
  • QR Code Generation
  • QR Downloads (PNG)
  • QR Downloads (SVG)

Landing Pages

  • Hosted Landing Pages
  • Custom Slugs
  • QR Support
  • Analytics Integration
  • Shareable Campaign Pages

Analytics

  • Visitor Tracking
  • QR Scan Analytics
  • Browser Detection
  • Referrer Analysis
  • Daily Statistics
  • Monthly Statistics
  • CSV Export
  • JSON Export
  • Raw Visitor Logs

Multi-User Platform

  • User Accounts
  • User Quotas
  • Session Management
  • API Tokens
  • Tenant Isolation
  • Ownership Validation
  • Administrative Controls

Administration

  • User Management
  • Moderation
  • Audit Logs
  • Session Administration
  • Quota Management
  • Backup Management
  • Health Dashboard
  • Namespace Diagnostics

Operations

  • Backup & Restore
  • Disaster Recovery
  • Health Monitoring
  • Upgrade Validation
  • Migration Framework
  • WAL-Enabled SQLite Databases
  • Registry Integrity Validation

Global Namespace Integrity

BZOD enforces a platform-wide slug namespace.

The following resources cannot share the same slug:

  • Administrator URLs
  • Administrator Landing Pages
  • User URLs
  • User Landing Pages

Example:

Valid:

/company
/docs
/about

Invalid:

Admin URL:
/docs

User Landing Page:
/docs

Namespace conflicts are automatically detected during:

  • Creation
  • Startup
  • Restore
  • Upgrade
  • Validation

This guarantees predictable routing behavior across the platform.


Global Slug Registry

BZOD uses a centralized registry to manage all public routes.

Stored in:

system.db

Registry table:

global_slugs

Tracks:

  • slug
  • owner_user_id
  • target_type
  • target_id
  • status

The registry acts as the authoritative source of truth for:

  • Redirect Resolution
  • Landing Page Routing
  • QR Generation
  • Ownership Validation
  • Namespace Enforcement

Architecture

                           Browser
                               │
                               ▼
                    ┌──────────────────┐
                    │    Axum Server   │
                    └────────┬─────────┘
                             │
          ┌──────────────────┼──────────────────┐
          │                  │                  │
          ▼                  ▼                  ▼

      users.db          system.db        User Databases

      Accounts          Global Slugs     content.db
      Sessions          Moderation       analytics.db
      API Tokens        Audit Events
      Quotas            Settings

High-Level Request Flow

Client Request
      │
      ▼
Axum Router
      │
      ▼
Global Slug Registry Lookup
      │
      ▼
Ownership Resolution
      │
      ▼
Tenant Database
      │
      ▼
Response

Data Layout

data/
├── admin/
│   ├── users.db
│   ├── system.db
│   ├── admin.db
│   └── admin.db-wal
│
└── users/
    ├── 1/
    │   ├── content.db
    │   ├── analytics.db
    │   └── profile.db
    │
    ├── 2/
    │   ├── content.db
    │   ├── analytics.db
    │   └── profile.db
    │
    └── ...

Core Databases

users.db

Stores:

  • Users
  • Password Hashes
  • Sessions
  • API Tokens
  • Quotas
  • User Status

system.db

Stores:

  • Global Slug Registry
  • Moderation Events
  • Audit Events
  • Reserved Slugs
  • Settings
  • System Metadata

Tenant Databases

Every user receives isolated databases.

content.db

Stores:

  • URLs
  • Landing Pages
  • Metadata
  • QR Relationships
  • Preview Data

analytics.db

Stores:

  • Visits
  • QR Scans
  • Referrers
  • User Agents
  • Aggregated Statistics

profile.db

Stores:

  • User Preferences
  • Tenant Metadata
  • Account Configuration

Feature Matrix

Feature Status
URL Shortening ✅
Custom Slugs ✅
Landing Pages ✅
QR Codes ✅
QR Analytics ✅
PNG Downloads ✅
SVG Downloads ✅
Password Protection ✅
Link Expiration ✅
Analytics Dashboard ✅
CSV Export ✅
JSON Export ✅
REST API ✅
Web UI ✅
CLI ✅
Multi-User Support ✅
User Quotas ✅
Session Management ✅
API Tokens ✅
Audit Logging ✅
Moderation ✅
Global Namespace Integrity ✅
Ownership Isolation ✅
Dashboard Parity ✅
Backup & Restore ✅
Disaster Recovery ✅
Health Monitoring ✅
Upgrade Validation ✅
Restore Collision Detection ✅
Stale Reservation Recovery ✅

Screenshots

Administrator Dashboard

Features:

  • Platform Statistics
  • User Management
  • Health Monitoring
  • Moderation
  • Audit Events
  • Namespace Diagnostics
screenshots/dashboard.png

URL Management

Features:

  • URL Creation
  • QR Preview
  • PNG Download
  • SVG Download
  • Analytics
  • Export Functions
screenshots/short-url-panel.png

Landing Pages

Features:

  • Landing Page Creation
  • Slug Management
  • QR Support
  • Analytics
  • Public Publishing
screenshots/landing-page-panel.png

Settings

Features:

  • Password Management
  • Session Control
  • API Tokens
  • User Preferences
screenshots/settings.png

Health Dashboard

Features:

  • Database Health
  • Namespace Validation
  • Storage Information
  • System Diagnostics
screenshots/server-status.png

Installation

BZOD can be deployed using:

  • Docker
  • Docker Compose
  • Native Binary
  • Systemd Service

Supported Platforms:

  • Linux
  • Debian
  • Ubuntu
  • Arch Linux
  • Rocky Linux
  • Alma Linux
  • Fedora

Docker Deployment

Build:

docker compose build

Start:

docker compose up -d

Check status:

docker compose ps

View logs:

docker compose logs -f

Stop:

docker compose down

Docker Compose Example

services:
  bzod:
    build: .
    container_name: bzod
    restart: unless-stopped

    ports:
      - "8654:8654"

    volumes:
      - ./data:/app/data

    environment:
      - BZOD_BASE_URL=https://bzo.in

Native Installation

Clone repository:

git clone https://github.com/thakares/nx9-url-shortener.git
cd nx9-url-shortener

Build:

cargo build --release

Binary:

target/release/bzod

Run:

./target/release/bzod serve

Systemd Service

Example:

[Unit]
Description=BZOD URL Management Platform
After=network.target

[Service]
User=bzod
Group=bzod

WorkingDirectory=/opt/bzod

ExecStart=/opt/bzod/bzod serve

Restart=always

[Install]
WantedBy=multi-user.target

Enable:

sudo systemctl enable bzod
sudo systemctl start bzod

Status:

sudo systemctl status bzod

Command Line Interface

BZOD includes an extensive command-line interface.

Display help:

bzod --help

Available commands:

serve
backup
restore
migrate
stats
validate
doctor

shorten
expand

create-admin

create-user
delete-user
disable-user
enable-user
reset-password
list-users

backup-user
restore-user

Example Commands

Create administrator:

bzod create-admin

Create user:

bzod create-user

List users:

bzod list-users

Disable user:

bzod disable-user

Backup system:

bzod backup

Restore system:

bzod restore backup.tar.gz

Health diagnostics:

bzod doctor

Statistics:

bzod stats

Shorten URL:

bzod shorten https://example.com

Expand URL:

bzod expand abc123

REST API

BZOD provides a RESTful JSON API.

Typical operations:

  • Create URLs
  • Update URLs
  • Delete URLs
  • Retrieve Analytics
  • Export Data
  • Manage Landing Pages

Example:

POST /api/urls
{
  "destination": "https://example.com",
  "code": "example"
}

Response:

{
  "success": true,
  "code": "example"
}

See:

docs/API.md

for full API documentation.


Security

Security features include:

  • Argon2 Password Hashing
  • Session Management
  • CSRF Protection
  • Ownership Validation
  • Tenant Isolation
  • Namespace Integrity
  • Audit Logging

Users cannot:

  • Access other user resources
  • Access other user analytics
  • Export other user data
  • Modify other user records

For details see:

docs/SECURITY.md

Backup & Recovery

BZOD treats recoverability as a core feature.

Supported:

  • Full System Backup
  • Full System Restore
  • Per User Backup
  • Per User Restore
  • Disaster Recovery
  • Upgrade Validation
  • Collision Detection

See:

docs/BACKUP_RESTORE.md

Testing

BZOD includes an extensive automated validation suite.

Validation Categories:

  • Unit Tests
  • Integration Tests
  • HTTP E2E Tests
  • Security Tests
  • Business Workflow Tests
  • Backup Tests
  • Restore Tests
  • Disaster Recovery Tests
  • Upgrade Validation Tests
  • Namespace Integrity Tests
  • Ownership Isolation Tests
  • Dashboard Parity Tests
  • QR Endpoint Tests
  • Concurrency Tests
  • WAL Recovery Tests

Run validation:

cargo fmt --check

cargo clippy --all-targets -- -D warnings

cargo test --all-targets -- --nocapture

Build production release:

cargo build --release

See:

docs/TESTING.md

Documentation

Document Description
ADMIN_GUIDE.md Administrator Operations
API.md REST API Reference
ARCHITECTURE.md System Architecture
BACKUP_RESTORE.md Backup & Recovery
CHANGELOG.md Version History
CLI.md Command Reference
COMPARISON.md Comparison With Alternatives
DATABASES.md Database Architecture
DOCKER-Deploy.md Docker Deployment
INSTALL.md Installation Guide
MULTI_USER.md Multi-Tenant Architecture
RELEASE-NOTES.md Release Notes
SECURITY.md Security Model
TESTING.md Testing Guide
UPGRADE.md Upgrade Procedures

Project Structure

src/
├── analytics/
├── auth/
├── charts/
├── cli/
├── db/
├── jobs/
├── models/
├── services/
├── templates/
├── utils/
└── web/

templates/
tests/
docs/
www/

Current codebase:

~200 files
Rust
SQLite
Axum
Askama

Comparison

Feature BZOD Traditional URL Shortener
URL Shortening ✅ ✅
Landing Pages ✅ ❌
QR Analytics ✅ Limited
Multi-User Support ✅ Limited
Audit Trail ✅ Rare
Backup & Restore ✅ Rare
Ownership Isolation ✅ Rare
Namespace Integrity ✅ Rare
Health Diagnostics ✅ Rare
Single Binary Deployment ✅ Varies

For detailed comparisons:

docs/COMPARISON.md

Release Status

v0.5.1

Namespace Integrity & Multi-User Hardening Release

Status:

Production Ready

Validated:

  • Formatting
  • Static Analysis
  • Release Builds
  • Namespace Integrity
  • Ownership Isolation
  • Dashboard Parity
  • QR Endpoints
  • Routing
  • Upgrade Validation
  • Backup & Restore
  • Disaster Recovery
  • Security Validation

Roadmap

Future areas of exploration:

  • SSO Integration
  • OIDC Authentication
  • LDAP Integration
  • Enhanced API Tokens
  • Scheduled Reporting
  • Additional Export Formats
  • Enhanced Moderation Tools
  • Advanced Analytics

Roadmap priorities remain guided by:

  • Operational Simplicity
  • Reliability
  • Recoverability
  • Self-Hosting

License

Dual Licensed:

  • MIT License
  • Apache License 2.0

See:

LICENSE-MIT
LICENSE-APACHE

Repository

GitHub:

https://github.com/thakares/nx9-url-shortener

Codeberg:

https://codeberg.org/thakares/nx9-url-shortener

Author

Sunil Thakare

BZOD is developed as a practical, self-hosted URL management platform focused on simplicity, ownership, and recoverability.


Final Thoughts

BZOD is not merely a URL shortener.

It is a self-hosted platform for:

  • URL Management
  • Landing Pages
  • QR Analytics
  • Multi-Tenant Operations
  • Administrative Control
  • Data Ownership
  • Backup & Recovery

while remaining deployable as a single Rust application backed by SQLite.

The goal is simple:

Own your links. Own your analytics. Own your data.

S
Description
A lightweight self-hosted URL shortener and landing page platform written in Rust, featuring SQLite storage, analytics, REST API access, audit logging, QR codes, and Docker deployment.
https://bzo.in
Readme
5.7 MiB
0 Stars 1 Watchers 0 Forks
Languages
Rust 78.6%
HTML 20.2%
Shell 1.1%
Dockerfile 0.1%