95 lines
2.9 KiB
Markdown
95 lines
2.9 KiB
Markdown
[](https://hub.docker.com/r/sjdonado/bit)
|
|
[](https://hub.docker.com/r/sjdonado/bit)
|
|
[](https://hub.docker.com/r/sjdonado/bit)
|
|
|
|
## 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](docs/SETUP.md#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](docs/SETUP.md#benchmark)).
|
|
|
|
**Lightweight:** Minimal dependencies, image size under 20 MiB, memory usage under 60 MiB at peak.
|
|
|
|
**Self-hosted:** [Dokku](docs/SETUP.md#dokku), [Docker Compose](docs/SETUP.md#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
|
|
|
|
Images available on [Docker Hub](https://hub.docker.com/r/sjdonado/bit/tags).
|
|
|
|
### Docker
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
docker-compose up
|
|
|
|
# Optional: Generate an api key
|
|
# docker-compose exec -it app cli --create-user=Admin
|
|
```
|
|
|
|
### Dokku
|
|
|
|
- Dockerfile
|
|
```dockerfile
|
|
FROM sjdonado/bit
|
|
```
|
|
|
|
- Over ssh
|
|
|
|
```bash
|
|
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)
|
|
|
|
```bash
|
|
dokku network:create bit-net
|
|
dokku network:set bit attach-post-create bit-net
|
|
dokku network:set myapp attach-post-create bit-net
|
|
```
|
|
|
|
## Documentation
|
|
- [API Reference](https://sjdonado.github.io/bit/)
|
|
- [Local Development](docs/SETUP.md)
|
|
|
|
## Contributing
|
|
Found an issue or have a suggestion? Please follow our [contribution guidelines](CONTRIBUTING.md).
|