Installation

Get Tally running in under a minute. All you need is Docker (or a server with Bun installed).

Docker (recommended)

The fastest way to run Tally. Pull the image, set your password, and you're live.

docker run -d \
  --name tally \
  -p 3000:3000 \
  -v tally-data:/app/data \
  -e ADMIN_PASSWORD="your-secure-password" \
  -e SITES='{"yoursite.com":{"token":"a-secret-token"}}' \
  tally:latest

Production: Set ADMIN_PASSWORD to at least 16 characters. In production, the server refuses to start with the default password.

Docker Compose

For persistent deployments, use Docker Compose:

services:
  tally:
    image: tally:latest
    ports:
      - "3000:3000"
    volumes:
      - tally-data:/app/data
    environment:
      - ADMIN_PASSWORD=your-secure-password
      - SITES={"yoursite.com":{"token":"a-secret-token"}}
      # Optional: GeoIP
      - MAXMIND_ACCOUNT_ID=your-account-id
      - MAXMIND_LICENSE_KEY=your-license-key

volumes:
  tally-data:

Then run:

docker compose up -d

Verify it's running

curl http://localhost:3000/t.js
# Should return the tracker JavaScript

curl http://localhost:3000/dashboard
# Should redirect to the login page

Add the tracker

Add this snippet to your website's <head> or before </body> :

<script
  src="https://your-tally-server.com/t.js"
  data-site="yoursite.com"
  data-token="a-secret-token"
></script>

Replace your-tally-server.com with your Tally instance URL, yoursite.com with your site ID, and a-secret-token with the site token you configured.

SPA support: The tracker automatically detects navigation via pushState , replaceState , popstate , and hash changes. No extra configuration needed for React, Vue, Svelte, etc.

Bare metal (Bun)

If you prefer running without Docker:

# Install Bun
curl -fsSL https://bun.sh/install | bash

# Clone and build
git clone https://github.com/example/tally.git
cd tally
bun install
bun run build:tracker

# Configure
export ADMIN_PASSWORD="your-secure-password"
export SITES='{"yoursite.com":{"token":"a-secret-token"}}'
export PORT=3000

# Run
bun run start

Environment variables

See the Configuration page for the full list of environment variables and their defaults.

Next steps