All apps · 0 apps
smart-garage
Docker app from Flizzy's Repository
Overview
Readme
View on GitHubSmart Garage
Your vehicles. Your data. Your NAS.
Self-hosted vehicle management for Unraid and homelab — maintenance, fuel, costs, and documents in one Docker container.
Install · Features · Updates · Changelog · Report issue
Why Smart Garage?
Most vehicle apps live in the cloud — your service history, receipts, and fuel data on someone else's server. Smart Garage runs entirely on your Unraid box or homelab: one container, one data folder, no subscription.
Built for people who want a clean garage dashboard without handing their data to a third party.
✨ Features
| 🚗 Vehicles | Profiles, photos, specs from the built-in catalog or manual entry, modifications, odometer quick-update |
| 🔧 Maintenance | Schedules, service log with parts & fluids, overdue/due-soon dashboard |
| 🛡️ TÜV / HU & AU | Inspection due dates with reminders |
| ⛽ Fuel | Quick fill-up, consumption analytics (L/100 km or MPG), projected annual usage, charts |
| 🧭 Odometer | Log readings over time, distance per month, yearly projection, charts |
| 🧮 Fuel calculator | Route planner (your location or type-ahead address search → road distance), trip cost, split per person, tank & range, commute per month/year, vehicle comparison, "is the cheaper station worth the detour?", mileage reimbursement — collapsible cards that remember what you typed |
| 📍 Live fuel prices | Pump prices around you by GPS or address, radius slider, your grade (E5/E10/Diesel), cheapest-first, brand filter, manual + auto refresh. Germany, via a free Tankerkönig key entered in the app or the container — see docs/FUEL-PRICES.md |
| 💶 Expenses & costs | Track costs, monthly overview dashboard, category breakdown |
| 📋 Insurance | Policies, SF class, premiums, renewal tracking |
| 📄 Documents | Store invoices and PDFs per vehicle |
| 🕓 History | One timeline for services, fill-ups and odometer updates |
| 🔔 Notifications | Push alerts via Pushover or Telegram — delivered by a background worker, no open browser tab needed |
| 📝 Notes & wishlist | Markdown notes linked to vehicles or services, plus planned purchases |
| 👨👩👧 Family garage | Share vehicles with other users (view or edit) |
| 💾 Backup | JSON backup with restore, CSV export from the UI |
| 📱 Installable (PWA) | Add to home screen on iOS, Android, desktop Chrome/Edge |
| 🎨 Personal | Dark/light mode, 9 design presets, custom background with adjustable blur |
| 🌍 Languages & units | English & German · kilometres or miles · litres or US gallons · your currency |
| 🧩 Your fields | Hide fields you don't need (HSN/TSN, VIN…) and add custom ones like tire size |
| 👤 Multi-user | Open local registration, per-user data + sharing, optional OIDC single sign-on |
| 📦 Simple ops | Single Docker image, SQLite on /data, no extra database container |
🖥️ Install
Unraid — Community Applications
Smart Garage is available in the Unraid Community Applications store. No docker compose required.
- Open the Apps tab (Community Applications must be installed).
- Search for Smart Garage.
- Click Install and review the template settings:
- Web UI port — default
3000(change if that port is in use) - AppData — default
/mnt/user/appdata/smart-garage(database + uploads; created automatically) - Upload limits — optional, defaults are fine for most users
- Web UI port — default
- Click Apply, then open the WebUI (or
http://<unraid-ip>:<port>/). - Register your account (first user becomes admin) and add your first vehicle.
Updates: Docker → smart-garage → Force Update (pulls ghcr.io/flizzy27/smart-garage:latest).
More detail: docs/UNRAID.md
Docker — Linux, NAS, homelab (no Unraid)
Use the pre-built image from GitHub Container Registry. You need a persistent volume mounted at /data inside the container.
docker run:
docker run -d \
--name smart-garage \
--restart unless-stopped \
-p 3000:3000 \
-v smart-garage-data:/data \
-e DATABASE_URL=file:/data/smart-garage.db \
-e UPLOAD_DIR=/data/uploads \
-e MAX_UPLOAD_SIZE_MB=25 \
-e MAX_IMAGE_SIZE_MB=10 \
ghcr.io/flizzy27/smart-garage:latest
Open http://localhost:3000/ (or your host IP), register, and add a vehicle.
Docker Compose (optional):
docker compose up -d
Uses the same image and a named volume — see docker-compose.yml.
Image: ghcr.io/flizzy27/smart-garage:latest
Full ops guide: docs/INSTALL.md
Updates
| Channel | Image tag | When updated |
|---|---|---|
| Stable (default) | ghcr.io/flizzy27/smart-garage:latest |
Version release tags only (v0.13.0, …) — CI must pass first |
| Development | ghcr.io/flizzy27/smart-garage:development |
Every push to main after CI passes |
| Platform | Stable update | Dev preview |
|---|---|---|
| Unraid | Docker → Force Update (uses :latest) |
Change repository tag to :development in container settings |
| Docker | docker pull ghcr.io/flizzy27/smart-garage:latest |
docker pull ghcr.io/flizzy27/smart-garage:development |
Promote to stable: when a dev build is approved, tag a release (git tag v0.10.1 && git push origin v0.10.1). That publishes :latest.
Pin a version: ghcr.io/flizzy27/smart-garage:v0.13.0
💾 Backup
In-app backup: Settings → Data & export — download a full JSON backup (restorable) or a CSV export of expenses.
Manual backup — archive your AppData / volume:
/data/
├── smart-garage.db # all app data
└── uploads/ # images & documents
On Unraid: /mnt/user/appdata/smart-garage
📚 Documentation
| Doc | Description |
|---|---|
| docs/UNRAID.md | Unraid install & troubleshooting |
| docs/INSTALL.md | Backup, restore, updates |
| docs/OIDC.md | Optional single sign-on (Pocket ID, Authentik, Keycloak…) |
| docs/FUEL-PRICES.md | Optional live fuel prices (Tankerkönig key, coverage, privacy) |
| docs/CA-SUBMISSION.md | Community Applications submission packet |
| CHANGELOG.md | Release history |
| SECURITY.md | Security policy |
🏗️ Tech
Next.js 16 · React 19 · SQLite · Prisma · Tailwind CSS 4 · next-intl
Single standalone Docker image (~production-ready for homelab scale).
📄 License
MIT — Copyright (c) 2026 flizzy27
Install smart-garage on Unraid in a few clicks.
Find smart-garage in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/flizzy27/smart-garage:latestRuntime arguments
- Web UI
http://[IP]:[PORT:3000]/- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Web interface port.
- Target
- 3000
- Default
- 3000
- Value
- 3000
SQLite database and uploads. Created automatically by Unraid.
- Target
- /data
- Default
- /mnt/user/appdata/smart-garage
- Value
- /mnt/user/appdata/smart-garage
Maximum document upload size (PDF, receipts).
- Target
- MAX_UPLOAD_SIZE_MB
- Default
- 25
- Value
- 25
Maximum vehicle image upload size.
- Target
- MAX_IMAGE_SIZE_MB
- Default
- 10
- Value
- 10
- Target
- DATABASE_URL
- Default
- file:/data/smart-garage.db
- Value
- file:/data/smart-garage.db
- Target
- UPLOAD_DIR
- Default
- /data/uploads
- Value
- /data/uploads
- Target
- NODE_ENV
- Default
- production
- Value
- production
Optional. Enables the live fuel price page (German filling stations). Request a free key at https://onboarding.tankerkoenig.de/ — registrations are reviewed by hand, so the key arrives by email after a few days, up to about a week. You can paste it here, or enter it later under Settings -> Fuel prices in the app (no container restart needed). Left empty, the Fuel prices page just explains how to get a key. Guide: https://github.com/flizzy27/smart-garage/blob/main/docs/FUEL-PRICES.md
- Target
- TANKERKOENIG_API_KEY
Optional single sign-on. Base URL of your OpenID Connect provider, e.g. https://id.example.com (Pocket ID, Authentik, Keycloak, Authelia). Leave empty to keep username/password login only. Guide: https://github.com/flizzy27/smart-garage/blob/main/docs/OIDC.md
- Target
- OIDC_ISSUER
Optional single sign-on. Client ID registered with your provider.
- Target
- OIDC_CLIENT_ID
Optional single sign-on. Client secret registered with your provider.
- Target
- OIDC_CLIENT_SECRET
Optional. Text on the login button, e.g. 'Pocket ID'. Defaults to 'Single Sign-On'.
- Target
- OIDC_BUTTON_LABEL
Optional. Only needed behind a reverse proxy that does not forward X-Forwarded-Proto/Host. Example: https://garage.example.com/api/auth/oidc/callback
- Target
- OIDC_REDIRECT_URI
Optional. 'false' only lets people sign in who already have an account here. Default is 'true'.
- Target
- OIDC_ALLOW_SIGNUP