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
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