Skip to main content

09-lubelogger.md

kstack: book: Centerpoint Home Lab chapter: Documents & Organization page: LubeLogger tags: [lubelogger, vehicles, maintenance, postgres]

Overview

LubeLogger is a vehicle maintenance and fuel log tracker. It stores service records, oil changes, tyre rotations, fuel fill-ups, and other vehicle events. External-only route with GeoBlock and CrowdSec — no internal home.local route. Authentication is LubeLogger's own built-in user system. Backend is PostgreSQL 16.

Access

Type URL Auth
External https://logger.jeeves5454.ddns.net GeoBlock + CrowdSec (own auth)

No internal route configured.

Containers

Container Image Role
lubelogger ghcr.io/hargata/lubelogger:latest Web application
lubelogger-db postgres:16 PostgreSQL database

lubelogger (application)

Image: ghcr.io/hargata/lubelogger:latest
Runtime: .NET 10.0.8 (ASP.NET Core)

Key environment variables:

Variable Value / Notes
POSTGRES_CONNECTION REDACTED (includes password)
ASPNETCORE_HTTP_PORTS 8080
LC_ALL / LANG en_US.UTF-8

Bind mounts:

Host Path Container Path Purpose
/home/jeeves/docker/lubelogger/data /App/data App data and uploads
/home/jeeves/docker/lubelogger/keys /root/.aspnet/DataProtection-Keys ASP.NET data protection keys

lubelogger-db (PostgreSQL 16)

Image: postgres:16

Variable Value
POSTGRES_USER lubelogger
POSTGRES_DB lubelogger
POSTGRES_PASSWORD REDACTED

Bind mounts:

Host Path Container Path
/home/jeeves/docker/lubelogger/db /var/lib/postgresql/data

Traefik Labels

traefik.http.routers.lubelogger.rule: Host(`logger.jeeves5454.ddns.net`)
traefik.http.routers.lubelogger.entrypoints: websecure
traefik.http.routers.lubelogger.tls.certresolver: letsencrypt
traefik.http.routers.lubelogger.middlewares: plex-geoblock@file,crowdsec-bouncer@file,lubelogger-headers
traefik.http.middlewares.lubelogger-headers.headers.customrequestheaders.X-Forwarded-Proto: https
traefik.docker.network: traefik-net
traefik.http.services.lubelogger.loadbalancer.server.port: 8080

Notes / Gotchas

  • POSTGRES_CONNECTION in the container environment contains the database password in plaintext — treat this as sensitive and avoid logging the environment of this container.
  • The DataProtection-Keys bind mount (/lubelogger/keys) must persist across container restarts. If it is lost, all active user sessions will be invalidated and users will need to log in again.
  • The X-Forwarded-Proto: https middleware is required for ASP.NET Core to correctly identify requests as HTTPS when behind a reverse proxy.

Last Updated: 2026-06-17