May - Gestor de vehículos autohospedado en Docker

May | Vehicle Management | Docker

May: Gestor de vehículos autohospedado en Docker para rastrear combustible y gastos

Dashboard minimalista para gestionar flotilla de vehículos. Log de combustible, cálculo automático MPG/L100km. Gastos, mantenimiento, recordatorios. Multi-usuario. Flask + SQLite. Self-hosted. Privado.

¿Qué es May?


May es un gestor de vehículos autohospedable minimalista que proporciona un dashboard limpio para rastrear combustible, gastos, mantenimiento y recordatorios de todos tus vehículos. Diseñado para quien quiere control total de datos de su flotilla sin confiar en aplicaciones SaaS. Tiene toda la funcionalidad que necesita un dueño de flota: tracking de combustible, cálculo automático de consumo, seguimiento de gastos (mantenimiento, seguros, reparaciones, impuestos), recordatorios, documentos adjuntos, acceso multi-usuario, y análisis gráficos.

Nombramiento curioso: Llamado "May" en honor a James May (Top Gear), completando el trío con Clarkson (otro proyecto) y Hammond (imaginario). Solo por diversión.

Características principales: Soporte multi-vehículos con tipos custom (cars, vans, motos, scooters). Log de combustible con cálculo automático consumo (L/100km, MPG). Modo entrada rápida para logging ágil. Tracking de gastos por categoría (mantenimiento, seguros, reparaciones, impuestos, etc). Gastos recurrentes (seguros, impuestos, suscripciones). Calendarios de mantenimiento programado. Recordatorios (MOT, service, seguros, impuestos). Documentos adjuntos. Analytics gráficos. Notificaciones (email, Pushover, ntfy, webhooks). Dark mode. PWA (app en el móvil). Integración calendario. Búsqueda UK DVLA. API REST. Generación de reportes PDF. Multi-usuario. Open source. Flask + SQLite + HTMX + Tailwind CSS.

Para dueños de vehículos: Un solo lugar para toda la gestión: combustible, gastos, mantenimiento, recordatorios. Control total de datos. Sin subscripciones. Sin tracking.

Características principales

Multi-vehículo

Track autos, motos, vans, scooters. Tipos custom. Cada uno con historial independiente.

Log de combustible

Registra cada gasolina. Cálculo automático MPG, L/100km, consumo promedio.

Modo entrada rápida

Interface streamlined para logging veloz. Sin fricciones.

Tracking de gastos

Mantenimiento, seguros, reparaciones, impuestos, etc. Categorizado. Histórico.

Gastos recurrentes

Seguros anuales, impuestos, suscripciones. Auto-recurrentes. Reminders.

Mantenimiento programado

Calendarios por mileage o fecha. Track qué está pendiente.

Recordatorios

MOT, service, seguros, impuestos. Email, Pushover, ntfy, webhooks.

Documentos

Adjunta recibos, seguros, registros. Todo centralizado.

Analytics

Gráficos interactivos. Consumo a lo largo del tiempo. Gastos totales.

Multi-usuario

Acceso para familia, equipo. Permisos granulares.

Dark mode

Interface clara o oscura. Seleccionable.

API REST

Para integraciones custom. Automatización.

Requisitos del sistema

  • Docker & Docker Compose
  • 256 MB - 1 GB RAM (muy ligero)
  • 1-2 GB espacio disco (depende datos históricos)
  • Puerto 5050 (configurable)
  • SQLite (incluido, no requiere PostgreSQL)
  • Navegador moderno
Ultra-ligero: Perfect para Raspberry Pi, NAS, VPS barato. Bajo overhead.

Instalación con Docker Compose

Paso 1: Crear docker-compose.yml

cat > docker-compose.yml << 'EOF' version: '3.8' services: may: image: ghcr.io/dannymcc/may:latest container_name: may-vehicle-tracker restart: unless-stopped ports: - "5050:5050" volumes: - may_data:/app/data environment: # Secret key para sesiones (genera uno fuerte) - SECRET_KEY=tu-secret-key-super-seguro-aqui # Contraseña admin (si no la pones, genera una random) - ADMIN_PASSWORD=CambiaAlAdmin123! # Base de datos (SQLite por defecto) - DATABASE_URL=sqlite:////app/data/may.db # Carpeta uploads - UPLOAD_FOLDER=/app/data/uploads volumes: may_data: EOF

Paso 2: Generar SECRET_KEY fuerte

python3 -c "import secrets; print(secrets.token_hex(32))" # Copia el resultado y reemplaza en docker-compose.yml

Paso 3: Iniciar con Docker

docker compose up -d # Espera 10-15 segundos docker compose logs may-vehicle-tracker # Si ADMIN_PASSWORD no está set, verás password random en logs

Acceder

http://localhost:5050 - May dashboard

Primer login

  • Username: admin
  • Password: La que estableciste en ADMIN_PASSWORD env, o la random generada (ver logs)
  • IMPORTANTE: Cambiar password inmediatamente después de login

Primeros pasos

1. Login y cambiar contraseña

  1. Accede a http://localhost:5050
  2. Username: admin, Password: (la que configuraste)
  3. Inmediatamente: Settings → Change Password (muy importante!)

2. Personalizar May

  1. Settings → Branding
  2. Personaliza nombre, logo, colores (opcional)
  3. Save

3. Agregar tu primer vehículo

  1. Dashboard → "+ Add Vehicle"
  2. Tipo: Car / Van / Motorcycle / Scooter / Custom
  3. Nombre: "Mi auto 1", "Moto Honda", etc
  4. Matrícula (número vehículo)
  5. Información: marca, modelo, cilindrada, etc
  6. Save

4. Registrar tu primer tanque de gasolina

  1. Dashboard → Vehículo → "Log Fuel"
  2. Fecha
  3. Mileage (km actuales)
  4. Litros/Galones consumidos
  5. Precio pagado (opcional)
  6. Save
  7. May calcula automáticamente: MPG, L/100km, consumo promedio

5. Registrar un gasto

  1. Dashboard → Vehículo → "Add Expense"
  2. Categoría: Maintenance, Insurance, Repair, Tax, Registration, Consumables, Other
  3. Monto
  4. Descripción: "Service cambio aceite", "Seguro anual", etc
  5. Fecha
  6. Mileage (opcional)
  7. Recurrencia (si es anual, mensual, etc)
  8. Save

6. Configurar recordatorios

  1. Dashboard → Vehículo → "Maintenance"
  2. Add Service Reminder: MOT, Service, Insurance, Tax, etc
  3. Fecha próxima
  4. Frecuencia (anual, cada 6 meses, cada 10,000km, etc)
  5. Save
  6. May enviará reminders por email/Pushover/ntfy cuando se acerque

7. Ver analytics

  1. Dashboard → Vehículo → "Analytics"
  2. Gráficos de consumo, gastos totales, mileage trend
  3. Descarga reportes PDF

8. Agregar más usuarios

  1. Settings → Users → "Add User"
  2. Email, password, rol (admin/user)
  3. Save
  4. Ellos pueden loguearse y ver todos los vehículos o solo los asignados

Casos de uso

  • Dueños de autos personales: Track combustible, gastos, mantenimiento. Un solo lugar.
  • Flotas pequeñas (taxis, delivery): Gestiona múltiples vehículos, conductores, costos.
  • Empresas: Track flotilla, costos operacionales, mantenimiento preventivo.
  • Compliance/Auditoría: Documentación completa de gastos, mantenimiento, historial.
  • Motociclistas: Track consumo, gastos, servicios de tus motos.

HTTPS con Caddy (producción)

Caddyfile

vehicles.tudominio.com { reverse_proxy localhost:5050 }

Acceso remoto seguro

https://vehicles.tudominio.com con HTTPS automático de Caddy

Gestión y mantenimiento

Ver logs

docker compose logs -f may-vehicle-tracker

Backup de datos

docker cp may-vehicle-tracker:/app/data ./may-backup-$(date +%Y%m%d) # O backup del volumen docker run --rm -v may_data:/data -v $(pwd):/backup alpine tar czf /backup/may-$(date +%Y%m%d).tar.gz -C /data .

Restore de backup

docker run --rm -v may_data:/data -v $(pwd):/backup alpine tar xzf /backup/may-20260522.tar.gz -C /data

Reiniciar

docker compose restart may-vehicle-tracker

Actualizar a versión más reciente

docker compose pull docker compose up -d

Monitorear consumo

docker stats may-vehicle-tracker

Comparativa con alternativas

vs Fuelly (SaaS)

May gana: Self-hosted, privado, sin suscripción, offline. Fuelly gana: Comunidad, comparativas, más maturo.

vs Spritmonitor (SaaS)

May gana: Control total, no cloud, sin tracking. Spritmonitor gana: Comunidad competitiva, ranking.

vs Hoja de cálculo Excel

May gana: Interface bonita, cálculos automáticos, reminders, analytics. Excel gana: Flexibility total.

Mejor para: Quien quiere tracker minimalista de vehículos sin confiar en SaaS. Control total. Bajo overhead. Privado.

Comentarios

Entradas populares de este blog

NAS SYNOLOGY DSM 7.1 en VMware ESXI - Guía instalación y configuración Synology DSM 7.1 en VMWARE

Solución al error: «user is not in the sudoers file» en Debian

Comando "NET USE", uso, parámetros y algunos ejemplos de uso