💾 Archived View for wilw.capsule.town › notes › umami.gmi captured on 2024-05-10 at 11:02:56. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-04-19)
-=-=-=-=-=-=-
I use Umami [1] for analytics on this website and a few other services that I run. I self-host Umami using Docker.
To start, create a `docker-compose.yml`:
version: '3' services: umami: image: ghcr.io/mikecao/umami:postgresql-latest environment: DATABASE_URL: postgresql://umami:CHANGEME@umamidb:5432/umami DATABASE_TYPE: postgresql HASH_SALT: CHANGEME depends_on: - umamidb restart: always expose: - 3000 networks: - traefik_net labels: - traefik.http.routers.umami.rule=Host(`CHANGEME`) - traefik.http.routers.umami.tls=true - traefik.http.routers.umami.tls.certresolver=myresolver umamidb: image: postgres:12-alpine environment: POSTGRES_DB: umami POSTGRES_USER: umami POSTGRES_PASSWORD: CHANGEME volumes: - ./sql/schema.postgresql.sql:/docker-entrypoint-initdb.d/schema.postgresql.sql:ro - ./umami-data:/var/lib/postgresql/data restart: always networks: - traefik_net networks: traefik_net: external: true
Since Umami must be publicly-accessible (so it can measure analytics on public websites), it must also be served over HTTPS.
The `docker-compose.yml` above puts the containers into the `traefik_net` network. See the Traefik [2] note for more information on setting this up.
Back-up Umami using the filesystem backups in the Backup [3] note.