Skip to content

sjdonado/bit

Docker Pulls Docker Stars Docker Image Size

Features

  • Minimal tracking setup: Country, browser, OS, referer. No cookies or persistent tracking mechanisms are used beyond what's available from a basic client's request.
  • Includes X-Forwarded-For header.
  • Multiple users are supported via API key authentication. Create, list and delete keys via the CLI.
  • Easy to extend, Ruby on Rails inspired setup.
  • Auto update UA regexes and GeoLite2 database.

Why bit?

Fast: 11k req/sec, latency 11ms, 40MiB avg memory usage (100k requests using 125 connections, benchmark).

Lightweight: Minimal dependencies, image size under 20 MiB, memory usage under 60 MiB at peak.

Self-hosted: Dokku, Docker Compose.

Production ready: Feature-complete by design, simple and reliable without unnecessary bloat. Bug fixes will continue, but new features aren't planned.

Run It Anywhere

All images available on Docker Hub.

Docker

docker run \
    --name bit \
    -p 4000:4000 \
    -e ENV="production" \
    -e DATABASE_URL="sqlite3://./sqlite/data.db" \
    -e APP_URL="http://localhost:4000" \
    -e ADMIN_NAME="Admin" \
    -e ADMIN_API_KEY=$(openssl rand -base64 32) \
    sjdonado/bit

# Create a new user
# docker exec -it bit cli --create-user=Admin

Docker Compose

docker-compose up

# Optional: Generate an api key
# docker-compose exec -it app cli --create-user=Admin

Dokku

  • Dockerfile
FROM sjdonado/bit
  • Over ssh
dokku apps:create bit

dokku domains:set bit bit.yourdomain.com
dokku letsencrypt:enable bit

dokku storage:ensure-directory bit-sqlite
dokku storage:mount bit /var/lib/dokku/data/storage/bit-sqlite:/usr/src/app/sqlite/

dokku config:set bit DATABASE_URL="sqlite3://./sqlite/data.db" APP_URL=https://bit.yourdomain.com ADMIN_NAME=Admin ADMIN_API_KEY=$(openssl rand -base64 32)

dokku ports:add bit http:80:4000
dokku ports:add bit https:443:4000

# Create a new user
# dokku run bit cli --create-user=Admin

Dokku (subnetwork)

Recommended for lower latency communication (no host network traversal)

  dokku network:create bit-net
  dokku network:set bit attach-post-create bit-net
  dokku network:set myapp attach-post-create bit-net

Documentation

Contributing

Found an issue or have a suggestion? Please follow our contribution guidelines.

About

Fast, lightweight, self-hosted URL shortener service with minimal click tracking

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks