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.