-
Notifications
You must be signed in to change notification settings - Fork 11
FAQ
Common questions and answers about MyGarage installation, configuration, and usage.
MyGarage is a self-hosted vehicle maintenance tracking application. It helps you track service records, fuel economy, documents, and reminders for all your vehicles in one place.
Yes! MyGarage is 100% free and open-source under the MIT License. You can use it, modify it, and even distribute it without any cost.
No. If you can run Docker containers, you can use MyGarage. The Quick Start guide gets you running in under 5 minutes.
Yes. The MIT License allows commercial use. MyGarage scales to support dozens of vehicles and users.
Yes. MyGarage is self-hosted - all data stays on your server. Nothing is sent to external services except:
- VIN decoding (NHTSA public API - no personal data sent)
- OCR processing (local, not cloud-based)
- Email notifications (if you configure SMTP)
Yes. MyGarage has a responsive web interface that works on mobile browsers. There's no native app yet, but the web version is fully mobile-optimized.
Minimum:
- CPU: 1 core
- RAM: 512MB
- Disk: 2GB
- OS: Linux, Windows, macOS (anything that runs Docker)
Recommended:
- CPU: 2 cores
- RAM: 1GB
- Disk: 10GB (for photos and documents)
Yes. See the Installation Guide for bare metal installation instructions. You'll need Python 3.14+ and Bun 1.3+.
No. The published ghcr.io/homelabforge/mygarage:latest image is amd64-only, so it won't run on ARM boards like the Raspberry Pi. Run it on an x86-64 host, or build your own ARM image from source.
Yes! See platform-specific instructions:
- Synology NAS Installation
- QNAP: Similar process via Container Station
Docker Compose:
docker-compose pull
docker-compose up -dDocker Run:
docker stop mygarage
docker rm mygarage
docker pull ghcr.io/homelabforge/mygarage:latest
docker run -d \
--name mygarage \
-p 8686:8686 \
-v $(pwd)/data:/data \
ghcr.io/homelabforge/mygarage:latestNo. Your data is stored in the /data volume, which persists across container updates. Always backup before major updates as a precaution.
By default, MyGarage starts with authentication disabled for easy initial setup. This is not secure for public-facing deployments. Enable local or oidc auth mode before exposing to the internet.
See the Authentication Guide. TL;DR: open Settings → System → Authentication and switch to Local (username/password) or OIDC. The change takes effect immediately — no restart or environment variables. In Local mode, register the first account from the login screen.
If you're the only user:
- Stop MyGarage
- Delete the database file (WARNING: loses all data)
- Restart MyGarage
- Re-register with new password
- Restore data from backup
If you have an admin account:
- Admin can reset passwords in Settings → Users
Better option: Switch to OIDC/SSO for centralized password management.
Yes! MyGarage supports OIDC/OAuth2 authentication. See Authentication - OIDC Configuration.
For production: Yes. HTTPS is required for:
- Secure JWT cookies
- OIDC authentication
- Protecting sensitive data (insurance, VINs)
See Reverse Proxy Configuration for HTTPS setup.
Yes! There's no limit. Track as many vehicles as you want (cars, motorcycles, boats, RVs, etc.).
Yes! MyGarage supports Electric and Hybrid vehicles with smart charging tracking:
- Electric vehicles — Track kWh charged, charging costs, efficiency (kWh/100mi)
- Hybrid vehicles — Track both gallons AND kWh for plug-in hybrids
- Smart form — UI adapts based on vehicle type (hides/shows relevant fields)
See Fuel Tracking - Electric Vehicles for details.
Yes. Set Metric under Settings → System → Units and fuel, distance, and economy display in liters, kilometers, and L/100km. You can also mix them: Custom sets each quantity separately, so litres with miles, or PSI on an otherwise metric account, are both valid. Values are stored in metric-canonical units, so switching units doesn't lose precision. See Units.
Yes, since v3.0.1. Number fields accept either separator, so 528,25 and 528.25
are both read as the same value. This matters most on a phone, where the keyboard
often offers only the separator matching your system locale.
Thousands separators are understood too — 1 234,56, 1.234,56 and 1,234.56
all work. If a value is genuinely ambiguous, your selected language decides how
it's read.
One exception: the window sticker MSRP fields don't yet handle a typed comma decimal. Pasted and scanned values are fine. See Troubleshooting.
Yes, for diesel vehicles. Fill-ups, tank level, consumption rate, and cost appear on a dedicated DEF tab, with optional low-DEF alerts. DEF is diesel-only; other vehicles don't see it.
Beyond odometer, volume, and cost, a fill-up can record time, station, driver, payment method, trip type, outside temperature, and trip-computer (OBC) values. "Auto-fill from last drive" pulls OBC values from the most recent LiveLink drive session.
MyGarage queries the NHTSA vPIC API (free public service) to decode VINs. This works for vehicles sold in the United States. International vehicles may have limited support.
Possible Reasons:
- Non-US vehicle - NHTSA database only covers US market vehicles
- Old vehicle - Vehicles older than 1981 may not be in the database
- Commercial vehicle - Some commercial vehicles, RVs, motorcycles have limited data
- Invalid VIN - Verify the 17-character VIN is correct
Solution: Use manual entry for vehicles that don't decode.
Yes. Export your data as CSV, then import via:
- Settings → Import Data → Upload CSV
Map columns during import (date, odometer, cost, etc.).
Yes. Set SCHEDULER_ENABLED=true and configure a notification backend. A background scheduler checks for due/overdue maintenance, insurance/warranty expiry, NHTSA recalls, and odometer milestones, and sends notifications via ntfy, Gotify, Pushover, Slack, Discord, Telegram, Matrix, or email (Settings → Notifications).
Yes! Use auth_mode=local or auth_mode=oidc and create user accounts for family members. Vehicles can be shared with all users or assigned to specific users.
Yes. Settings → Export Data supports:
- JSON - Complete data backup
- CSV - Service records and fuel logs
- PDF - Visual reports with charts
LiveLink is MyGarage's real-time vehicle telemetry integration. It connects WiCAN OBD2 devices to MyGarage, providing live data, drive session tracking, diagnostic trouble codes, and automatic odometer updates.
See the full LiveLink Guide for setup and usage.
You need a WiCAN device from MeatPi Electronics:
| Device | HTTPS POST | MQTT | Price |
|---|---|---|---|
| WiCAN PRO (recommended) | ✅ Yes | ✅ Yes | ~$50 |
| Standard WiCAN | ❌ No | ✅ Yes | ~$35 |
The WiCAN PRO is recommended because it supports both transport methods. Standard WiCAN requires an MQTT broker.
No. LiveLink specifically integrates with WiCAN devices that can push data via HTTPS POST or MQTT. Generic Bluetooth OBD2 scanners (like ELM327) are not supported.
| Aspect | HTTPS POST | MQTT |
|---|---|---|
| Setup | Simpler (direct to MyGarage) | Requires MQTT broker |
| Latency | Higher (new connection each request) | Lower (persistent connection) |
| Device Support | WiCAN PRO only | All WiCAN devices |
| Remote Access | Works over internet | LAN only (unless broker is exposed) |
You can use both simultaneously — LiveLink deduplicates data automatically.
Partially. WiCAN devices require WiFi to transmit data. When your vehicle is away from WiFi range:
- ❌ No live telemetry reaches MyGarage
- ❌ Drive sessions during this time have gaps
- ✅ Data resumes when you return to WiFi range
When the device reconnects to WiFi, MyGarage backfills the gap from the WiCAN's SD-card log (SD-equipped devices) — automatically on reconnect, or via a manual admin trigger — so drives away from home are filled in after the fact.
Gaps occur when the WiCAN device loses WiFi connectivity — typically when the vehicle is away from home. On reconnect, MyGarage backfills the gap from the device's SD-card log (SD-equipped WiCAN devices), so most gaps fill in automatically once you return to WiFi range.
It depends on:
- Number of parameters being polled
- Polling interval (typically 5 seconds)
- How much you drive
Rough estimate: 10-50 MB per vehicle per month with typical usage.
Configure retention periods (30-365 days) in Settings → LiveLink to manage storage. Daily aggregation preserves trends even after raw data is purged.
"Device offline" means MyGarage hasn't received data from the WiCAN for the configured timeout (default 15 minutes).
Possible causes:
- Vehicle is away from WiFi
- WiCAN lost power (vehicle battery disconnected)
- WiFi network issues
- Incorrect token or endpoint configuration
Phantom devices appear when using MQTT with retained messages. If other WiCAN devices previously published to your broker, their retained messages may be replayed when MyGarage subscribes.
Solution: Clear retained messages from your MQTT broker. See LiveLink Troubleshooting.
Odometer sync requires:
- Your vehicle supports an odometer PID (not all do)
- WiCAN's AutoPID includes the correct odometer PID for your make/model
- The device is linked to a vehicle in MyGarage
Some vehicles (especially older or non-US models) don't expose odometer via OBD2. You may need manufacturer-specific PIDs.
Yes! Each vehicle needs its own WiCAN device. Link each device to its respective vehicle in Settings → LiveLink → Devices.
Use SQLite (default) if:
- Single user or small family (< 5 users)
- Small garage (< 10 vehicles)
- Homelab deployment
Use PostgreSQL if:
- Multi-user (10+ users)
- Large garage (50+ vehicles)
- High traffic (hundreds of requests/day)
See Database Configuration for details.
Yes! See Database Configuration - Migration.
TL;DR: Export data as JSON, switch database, import JSON.
Easiest: Settings → Backup & Restore (works for both databases; SQLite backups use the Online Backup API, so they're safe while the app is running).
Manual:
# SQLite — stop the container first (a live copy is a torn copy under WAL)
docker-compose stop mygarage && cp data/mygarage.db data/mygarage-backup.db && docker-compose start mygarage
# PostgreSQL
docker exec mygarage-postgres pg_dump -U mygarage mygarage > backup.sqlSee Database Configuration - Backups.
SQLite: /data/mygarage.db (inside container)
PostgreSQL: Inside the postgres_data Docker volume
Uploads (photos, documents): /data/uploads/ (inside container)
Docker Volume Mapping: ./data:/data maps container /data to host ./data directory.
- SQLite: 50-100 vehicles comfortably
- PostgreSQL: 1,000+ vehicles
Tested with up to 10,000 service records without performance issues.
- SQLite: 5-10 concurrent users
- PostgreSQL: 100+ concurrent users
Possible Causes:
- Large database - Too many records for SQLite → Migrate to PostgreSQL
- Low resources - Increase Docker memory limit
- Slow disk - Use SSD instead of HDD
- Network latency - Check network between client and server
Diagnostics:
# Check Docker resource usage
docker stats mygarage
# Check database size
ls -lh data/mygarage.db
# Optimize SQLite
docker exec mygarage sqlite3 /data/mygarage.db "VACUUM;"Yes, but:
- Each instance needs its own database (or shared PostgreSQL database with connection pooling)
- Use load balancer (HAProxy, Traefik) to distribute traffic
- Shared file storage required for uploads (NFS, S3, etc.)
Not recommended unless you have advanced DevOps needs.
Check logs:
docker logs mygarageCommon Issues:
- Port 8686 already in use → Change port in
docker-compose.yml - Database connection error → Verify
MYGARAGE_DATABASE_URLif using PostgreSQL - Permission errors → Ensure
/datavolume is writable
Cause: Reverse proxy can't reach MyGarage container
Fix:
- Verify MyGarage is running:
docker ps | grep mygarage - Check health endpoint:
curl http://localhost:8686/health - Verify reverse proxy and MyGarage are on same Docker network
See Reverse Proxy Configuration.
Cause: MPG requires 2+ full tank fill-ups
Fix:
- Ensure "Full Tank?" is checked on fill-ups
- Verify accurate odometer readings
- Check you have at least 2 fill-ups (first fill is baseline)
See Fuel Tracking.
Cause: Low-quality scan or unsupported language
Fix:
- Re-scan at 300 DPI or higher
- Ensure document is well-lit, flat, and in focus
- OCR works best on typed documents (not handwritten)
See Documents - OCR Text Extraction.
Possible Causes:
- File too large (> 10MB for photos, > 25MB for PDFs)
- Browser timeout on slow connection
- Disk full on server
Fix:
- Compress large files before uploading
- Check server disk space:
df -h - Increase Docker timeout if needed
No. All data stays on your server. The only external API call is VIN decoding (NHTSA), which sends only the VIN (no personal info).
Only if you connect a Torque Pro source. Torque can send GPS coordinates alongside its OBD2 readings, and MyGarage stores those as trip routes and a last-known-location card. This arrived in v3.0.0.
WiCAN devices do not report position, so a WiCAN-only setup records no location data at all.
Location tracking is on by default for each vehicle, though it does nothing until a Torque source is actually sending GPS. To switch it off, open the vehicle's LiveLink → Trips tab and turn off Location tracking. It's per-vehicle, so each one is set independently.
Points already recorded are kept for 90 days by default and then pruned automatically, on the same retention setting as raw telemetry (adjustable in LiveLink settings). There's no on-demand delete button — shortening the retention window is how you clear history sooner.
As with everything else, location data stays on your server. See Trips & Location for the full picture.
VIN decoding is optional. You can always use manual entry instead of VIN decoding.
Optional. MyGarage works offline except for:
- VIN decoding (requires NHTSA API access)
- Email notifications (requires SMTP server access)
- OIDC authentication (requires identity provider access)
All core features (service tracking, fuel logging, document storage) work offline.
Yes. Install MyGarage on your local network, and access it via local IP address. VIN decoding won't work, but all other features will.
MyGarage is a self-hosted tool, so you are the data controller (not us). As long as you:
- Use it for personal/family data only (or get user consent for business use)
- Implement proper security (auth, HTTPS)
- Provide data export/deletion capabilities (built-in)
...you should be GDPR compliant. Consult a lawyer if using for business purposes.
MyGarage includes a light/dark theme toggle in the top bar, and an accent colour picker offering six colours (blue, amber, teal, red, violet, green) under the gear icon → Quick Settings. Both save to your account, so the choice follows you between devices. Customization beyond that requires modifying the source code.
Yes! MyGarage is open-source. See CONTRIBUTING.md for development setup and contribution guidelines.
Yes! Open a Feature Request on GitHub or discuss in GitHub Discussions.
The MyGarage project is community-driven and doesn't offer paid custom development. However, you can:
- Fork the project and customize yourself (MIT License allows this)
- Hire a developer familiar with Python/React to customize
- Submit feature requests for community implementation
MIT License - Very permissive open-source license.
You can:
- ✅ Use commercially
- ✅ Modify the code
- ✅ Distribute modified versions
- ✅ Use privately
You must:
- Include the original license and copyright notice
You cannot:
- ❌ Hold the authors liable
Yes. The MIT License allows commercial use. You can host MyGarage and charge users for access.
However: You must include the MIT License notice and give credit to the original project.
Yes, but you must retain the MIT License notice in the codebase (users have the right to know it's based on MyGarage).
- Documentation - Read the wiki (you're here!)
- Troubleshooting Guide - See Troubleshooting
- GitHub Discussions - Ask questions at GitHub Discussions
- GitHub Issues - Report bugs at GitHub Issues
- Check if it's already reported: Search Issues
- If not, open a new issue: Bug Report
- Include:
- MyGarage version (
docker inspect mygarage | grep "org.opencontainers.image.version") - Steps to reproduce
- Expected vs actual behavior
- Relevant logs (
docker logs mygarage)
- MyGarage version (
Do NOT open a public issue!
Use GitHub Security Advisories or create a private issue. See SECURITY.md.
No. Use GitHub Discussions for community interaction.
It's on the roadmap! For now, use the mobile-optimized web interface.
Yes! MyGarage now includes LiveLink, which integrates with WiCAN OBD2 devices for real-time telemetry. See the LiveLink Guide for details.
Yes, via LiveLink. MyGarage supports real-time telemetry monitoring through WiCAN devices and the Torque Pro app:
- ✅ Live engine data (RPM, speed, temperatures)
- ✅ Drive session tracking
- ✅ Diagnostic trouble codes (DTCs)
- ✅ Automatic odometer sync
- ✅ GPS trips and last known location — Torque Pro sources only, and switchable per vehicle. WiCAN devices don't report position. See Trips & Location.
Not supported:
- ❌ Remote vehicle control
Changed in v3.0.0. Earlier versions of this page said GPS tracking was not supported. That is no longer accurate — GPS trips arrived in v3.0.0 for Torque sources. See Does MyGarage record my location? for what is stored and how to switch it off.
- Search Discussions: GitHub Discussions
- Ask the Community: Post a Question
- Read Troubleshooting: Troubleshooting Guide
Next: Check the Troubleshooting Guide for detailed problem-solving steps.