Deploy to Railway

Railway is a great option for running Tally if you want hosted infrastructure without managing your own server. Deploy in a few clicks.

One-click deploy

Use the Railway CLI or dashboard to deploy from the Tally GitHub repository.

Manual setup

1. Create a new project

railway init

2. Set environment variables

In the Railway dashboard, set these variables for your service:

ADMIN_PASSWORD=your-secure-password-at-least-16-chars
SITES={"example.com":{"token":"your-secret-token"}}
NODE_ENV=production

3. Add a persistent volume

Mount a volume at /app/data to persist the SQLite database:

railway volume add --mount-path /app/data

4. Deploy

railway up

5. Generate a domain

railway domain

This gives you a public URL like tally-production.up.railway.app . Use this as your tracker server URL.

Custom domain

In the Railway dashboard, go to Settings Domains Add Custom Domain. Point your DNS to the provided CNAME record. Railway handles TLS automatically.

GeoIP on Railway

Set the MaxMind credentials as environment variables and the container will download the GeoLite2 database on first start:

MAXMIND_ACCOUNT_ID=your-account-id
MAXMIND_LICENSE_KEY=your-license-key

Cost estimate

Tally's resource usage is minimal (~50MB RAM, ~50MB disk). On Railway's usage-based pricing, running Tally for a personal site typically costs less than $1/month.