- 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-Forheader. - 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.
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.
All images available on Docker Hub.
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=Admindocker-compose up
# Optional: Generate an api key
# docker-compose exec -it app cli --create-user=Admin- 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=AdminRecommended 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-netFound an issue or have a suggestion? Please follow our contribution guidelines.