Tott

Get Tott running.

About three minutes from here to your first event. One container, one volume, your data on your box. The whole install is below.

17 seconds: setup wizard → paste license → logged in.
Prerequisites
  • Docker 20.10+ with Compose v2. Don't have it yet? Install Docker — the official guide covers Linux, macOS, and Windows.
  • A box to run it on. x86 Linux server, Apple Silicon or Intel Mac (Docker Desktop), or a Raspberry Pi 4 / Pi 5. ~256 MB RAM, ~200 MB disk.
  • About 5 minutes. No license key needed up front — you paste it in the app once it's running.

Quick start

In an empty directory (e.g. ~/tott):

1. Save docker-compose.yml

Copy this into a new file called docker-compose.yml.

services:
  tott:
    image: ghcr.io/dmarkham/tott:latest
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - tott-data:/data

volumes:
  tott-data:

2. Start it

docker compose up -d

First boot pulls ghcr.io/dmarkham/tott:latest (~50 MB) and applies migrations.

3. Open it & paste your license

Browse to http://<your-box>:8080 — or http://localhost:8080 if you ran it on this machine. The app boots straight to /license: paste your key from your LemonSqueezy order confirmation email and click Activate. The setup wizard takes over from there — household password, child name, birth date, and you're tracking.

The key is verified offline and saved into the data volume; you won't need to paste it again on this box.

Reach it from outside the house

On home Wi‑Fi you're done. To check the last feed time at the pediatrician's office — without opening any router ports — the simplest path is Tailscale Funnel. Install Tailscale on the host, then:

sudo tailscale funnel --bg 8080

You get an HTTPS URL like https://tott.<your-tailnet>.ts.net with a real Let's Encrypt cert. Free for typical household use. Tailscale Funnel docs.

Cloudflare Tunnel works too if you already own a domain. Caddy / nginx / Traefik in front of :8080 is fine if that's your stack.

Stuck?

Email user-support@trytott.com with your docker --version and the last ~30 lines of docker compose logs tott. Don't include the license key.