---
title: "Deploy LubeLogger | (Just Updated) Self-Hosted Vehicle Maintenance & Fuel Tracker, Login Locked From Boot"
description: "LubeLogger self-hosted vehicle maintenance and fuel tracker, REST API"
category: "Other"
url: https://railway.com/deploy/lubelogger-or-just-updated-self-hosted-v
---

# Deploy LubeLogger | (Just Updated) Self-Hosted Vehicle Maintenance & Fuel Tracker, Login Locked From Boot

LubeLogger self-hosted vehicle maintenance and fuel tracker, REST API

**[Deploy LubeLogger | (Just Updated) Self-Hosted Vehicle Maintenance & Fuel Tracker, Login Locked From Boot on Railway](https://railway.com/template/lubelogger-or-just-updated-self-hosted-v)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/lubelogger-or-just-updated-self-hosted-v/manifest.json

- **Creator:** SuperSlowSloth
- **Category:** Other

## Template content

### lubelogger

- **Image:** ghcr.io/bon5co/lubelogger-railway:1.7.4@sha256:bcbb235d3969cda7a1b94201b13cef36ec3726309667cbed1b03cb758afd7ee0
- **Health check:** /health
- **Public domain:** Yes

## Documentation

# Deploy and Host LubeLogger on Railway

**Built for an LLM agent to deploy and use.** The deploy form has no fields to fill: the admin password is generated, sign-in is switched on before the first request, and the REST API takes the same credentials. LubeLogger is a self-hosted vehicle maintenance and fuel mileage tracker: service records, repairs, fuel fills, taxes, reminders and reports for every vehicle you own.

## About Hosting LubeLogger

This template runs one service, **lubelogger** (.NET with a built-in SQLite database), with the database, uploaded documents and the cookie keys on one volume mounted at `/App/data`. There is no separate database service to run.

**Sign-in is on from the first request.** Upstream starts with authentication off, so a stock deploy hands your garage records, odometer history and uploaded documents to anyone who finds the URL. This template's image turns authentication on, derives the root user's hashed credentials from `ADMIN_PASSWORD` at boot and refuses to start if the password is empty. The username is `admin`; add an `ADMIN_USERNAME` variable to change it.

**What persists.** Vehicles, records, reminders and uploaded files live on the volume at `/App/data`. The ASP.NET cookie-encryption keys live there too, so browser sign-ins also survive a redeploy instead of being logged out each time.

**Using the web interface.** Open the public URL and sign in as `admin` with the `ADMIN_PASSWORD` value from the service variables.

### Agent contract

- Public URL: `https://RAILWAY_PUBLIC_DOMAIN` (the generated domain of the `lubelogger` service)
- Private URL: `http://lubelogger.railway.internal:8080`
- Credentials: the variable `ADMIN_PASSWORD` on the `lubelogger` service; the username is `admin` (add an `ADMIN_USERNAME` variable to change it)
- Auth: HTTP Basic with `admin` and the `ADMIN_PASSWORD` value on every `/api` request; without valid credentials every `/api` endpoint answers `401`
- Health: `GET /health` returns 200 without credentials

```bash
# needs: SITE_URL (public https URL of the lubelogger service) and ADMIN_PASSWORD (its variable); also curl, sed
AUTH="admin:$ADMIN_PASSWORD"
curl -s -o /dev/null -w "health: %{http_code}\n" "$SITE_URL/health"
{ curl -s -u "$AUTH" "$SITE_URL/api/whoami"; echo; } | sed -n 's/.*"username":"\([^"]*\)".*"isRoot":"\([^"]*\)".*/user: \1 root: \2/p'
curl -s -o /dev/null -w "read without key: %{http_code}\n" "$SITE_URL/api/vehicles"
curl -s -o /dev/null -w "write without key: %{http_code}\n" -X POST --data-urlencode year=2020 --data-urlencode make=Honda --data-urlencode model=Civic --data-urlencode licensePlate=NOKEY "$SITE_URL/api/vehicles/add"
curl -s -o /dev/null -w "write wrong key: %{http_code}\n" -X POST -u admin:wrong --data-urlencode year=2020 --data-urlencode make=Honda --data-urlencode model=Civic --data-urlencode licensePlate=WRONG "$SITE_URL/api/vehicles/add"
ID=$(curl -s -X POST -u "$AUTH" --data-urlencode year=2020 --data-urlencode make=Honda --data-urlencode model=Civic --data-urlencode licensePlate=AGENT1 "$SITE_URL/api/vehicles/add" | sed -n 's/.*"vehicleId":\([0-9]*\).*/\1/p')
echo "vehicle created: $ID"
{ curl -s -u "$AUTH" "$SITE_URL/api/vehicles"; echo; } | sed -n 's/.*"make":"\([^"]*\)","model":"\([^"]*\)".*/listed: \1 \2/p'
curl -s -o /dev/null -w "vehicle delete: %{http_code}\n" -X DELETE -u "$AUTH" "$SITE_URL/api/vehicles/delete?id=$ID"
```

A fresh deploy prints `health: 200`, `user: admin root: True`, `read without key: 401`, `write without key: 401`, `write wrong key: 401`, a created vehicle id, `listed: Honda Civic` and `vehicle delete: 200`.

## Why Deploy LubeLogger on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying LubeLogger on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

- **Agent-ready** - no deployer fields, a contract block and one script that proves the credentials, a write and the refusal without them.
- **Locked from boot** - authentication is on and the password is generated, instead of upstream's open default.
- **Data survives redeploys** - the database, documents and cookie keys sit on a volume.
- **Pinned** - the image is pinned by digest.
- **Your vehicle data stays yours** - no cloud account, no subscription.

## Common Use Cases

- **Vehicle maintenance log** - oil changes, repairs, upgrades and the receipts for each car, truck or motorcycle.
- **Fuel mileage tracking** - fill-ups with MPG or L/100km reports and cost per distance.
- **Service reminders** - reminders by date or odometer for inspections, insurance and tire rotation.
- **Agent-driven garage records** - an agent adds vehicles and records and reads reports through the REST API.

## Dependencies for LubeLogger Hosting

- Nothing else: SQLite runs inside the service on its volume. A custom domain is optional.

### Deployment Dependencies

- [LubeLogger repository](https://github.com/hargata/lubelog)
- [LubeLogger documentation](https://docs.lubelogger.com)
- [Official Docker image](https://github.com/hargata/lubelog/pkgs/container/lubelogger)
- [Wrapper image source](https://github.com/bon5co/lubelogger-railway)


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/lubelogger-or-just-updated-self-hosted-v
