Install with Docker
Run Tally, PostgreSQL, and ClickHouse with Docker Compose. You download one Compose file and create a settings file; no Tally binary is installed on your computer.
Before you start#
- Docker Engine with the Compose plugin on Linux, or Docker Desktop on macOS.
- OpenSSL, used once to generate passwords. Linux and macOS include it.
The Tally image, quay.io/godellabs-ai/godel-tally, is published for linux/amd64 and linux/arm64. PostgreSQL and ClickHouse use their official images.
Install and start#
1. Download the Compose file
mkdir -p ~/godel-tally && cd ~/godel-tally
curl -fsSLO https://raw.githubusercontent.com/godellabs-ai/godel-tally/main/docker-compose.yml2. Create the settings file
Compose reads every setting from .env beside the Compose file. Tally needs a secret key and passwords for both databases and will not start without them. This command generates them once and makes the file readable only by you:
(umask 077 && cat > .env <<EOF
TALLY_URL=https://localhost:8443
TALLY_PUBLISH_BIND=0.0.0.0:8443
TALLY_SECRET_KEY=$(openssl rand -hex 32)
TALLY_POSTGRES_PASSWORD=$(openssl rand -hex 32)
TALLY_CLICKHOUSE_PASSWORD=$(openssl rand -hex 32)
EOF
)3. Start Tally
docker compose up -d --waitWhen the command returns, open https://localhost:8443, accept the self-signed certificate, and create the first account. Tally creates the certificate on first start and keeps it in its data volume. The containers restart with Docker.
Settings#
| Setting in .env | Purpose |
|---|---|
TALLY_URL | The HTTPS address you open in the browser, including the port. |
TALLY_PUBLISH_BIND | Host address and port Docker publishes. 127.0.0.1 keeps Tally on this machine; 0.0.0.0 accepts other machines. Keep the port the same as in TALLY_URL. |
TALLY_SECRET_KEY, TALLY_POSTGRES_PASSWORD, TALLY_CLICKHOUSE_PASSWORD | Required. Generated in step 2. |
TALLY_IMAGE_TAG | Optional Tally version to run, such as 0.1.3. Defaults to the version named in the Compose file. |
TALLY_TLS_DIR | Optional folder containing your certificate. Defaults to tls beside the Compose file. |
TALLY_AI_LOG_RETENTION_DAYS | Optional AI-log retention in days. Defaults to 90. |
Add other Tally settings, such as email delivery, to the same file as KEY=value lines. After changing .env, run docker compose up -d --wait again.
Use your own certificate#
Point your hostname's DNS to this server and allow the port through your firewall. In .env, set TALLY_URL to that hostname, for example https://tally.example.com:8443, and TALLY_PUBLISH_BIND=0.0.0.0:8443. Then copy the certificate and key into the tls folder:
mkdir -p tls
cp /absolute/path/to/fullchain.pem tls/tally.crt
cp /absolute/path/to/privkey.pem tls/tally.key
docker compose up -d --waitThe certificate must cover the TALLY_URL hostname; otherwise Tally does not start and its log names the problem. The key may stay readable only by its owner: Tally copies it before dropping root. After renewing the certificate, copy the files again and run docker compose restart tallyd. Remove both files to return to the self-signed certificate.
Run, update, and remove#
docker compose ps # status
docker compose logs -f tallyd # application log
docker compose stop # stop; data is kept
docker compose up -d --wait # start againTo update, download the Compose file again (step 1), then run docker compose pull and docker compose up -d --wait. Your .env, certificate, and data volumes are kept. Back up first, as for any update.
docker compose down # remove the containers; keep data volumes
docker compose down -v # also delete all Tally data