TREK: Planifica tus viajes con colaboración en tiempo real. Cómo instalar Trek en Docker

TREK | Travel Planner | PWA

TREK: Planifica tus viajes con colaboración en tiempo real

Aplicación autohospedada para planificar viajes con mapas interactivos, presupuestos, listas de equipaje, reservas y más. Tus viajes, tu plan, tu servidor.

Demo en vivo

Prueba TREK sin instalar nada en: demo-nomad.pakulat.org

La demo se reinicia cada hora, así que tus cambios no se guardarán permanentemente.

¿Qué es TREK?

TREK (anteriormente NOMAD) es un planificador de viajes autohospedado con colaboración en tiempo real, mapas interactivos, soporte PWA, listas de equipaje, presupuestos y mucho más. A diferencia de servicios cloud como Wanderlog o TripIt, TREK se ejecuta en tu propio servidor, dándote control total sobre tus datos de viaje.

La aplicación usa WebSockets para sincronización en tiempo real entre todos los usuarios conectados. Múltiples personas pueden planificar el mismo viaje simultáneamente, viendo los cambios de los demás al instante. Además, funciona como una Progressive Web App (PWA), instalable en cualquier dispositivo sin necesidad de App Store.

      

Filosofía de privacidad: Tus itinerarios, reservas, presupuestos y documentos de viaje permanecen en tu servidor. Sin telemetría, sin límites artificiales, sin vendor lock-in.

Características principales

Planificación de viajes

Planificador drag & drop

Organiza lugares en planes diarios con reordenamiento y movimiento entre días.

Mapa interactivo

Mapa Leaflet con marcadores de fotos, clustering, visualización de rutas y fuentes de tiles personalizables.

Búsqueda de lugares

Busca vía Google Places (con fotos, calificaciones, horarios) u OpenStreetMap (gratis, sin API key).

Notas por día

Añade notas con timestamp y etiquetas de iconos a días individuales con reordenamiento drag & drop.

Optimización de rutas

Auto-optimiza el orden de lugares y exporta a Google Maps.

Previsión meteorológica

Previsiones de 16 días vía Open-Meteo (sin API key) con promedios climáticos históricos como respaldo.

Gestión de viajes

Reservas y bookings

Rastrea vuelos, hoteles, restaurantes con estado, números de confirmación y archivos adjuntos.

Seguimiento de presupuesto

Gastos por categorías con gráfico circular, división por persona/día y soporte multi-moneda.

Listas de equipaje

Checklists categorizadas con seguimiento de progreso, código de colores y sugerencias inteligentes.

Gestor de documentos

Adjunta documentos, tickets y PDFs a viajes, lugares o reservas (hasta 50 MB por archivo).

Exportación PDF

Exporta planes completos como PDF con portada, imágenes, notas y branding TREK.

Mobile y PWA

Progressive Web App

Instala en iOS y Android directamente desde el navegador, sin App Store.

Soporte offline

Service Worker cachea tiles del mapa, datos de API, subidas y assets estáticos vía Workbox.

Sensación de app nativa

Modo standalone fullscreen, icono de app personalizado, barra de estado temática y splash screen.

Optimizado para táctil

Diseño responsive con layouts específicos para móvil, controles touch-friendly y manejo de safe area.

Colaboración

Sincronización en tiempo real

Planifica junto a otros vía WebSocket — los cambios aparecen instantáneamente en todos los usuarios conectados.

Multi-usuario

Invita miembros a colaborar en viajes compartidos con acceso basado en roles.

Single Sign-On (OIDC)

Login con Google, Apple, Authentik, Keycloak o cualquier proveedor OIDC.

Addons modulares (opcionales)

TREK incluye addons que el administrador puede habilitar/deshabilitar según necesidad:

Vacay

Planificador personal de días de vacaciones con vista de calendario, festivos públicos (100+ países), fusión de usuarios con sync en vivo y seguimiento de arrastre.

Atlas

Mapa mundial interactivo con países visitados, estadísticas de viajes, desglose por continentes, seguimiento de rachas y efectos UI de vidrio líquido.

Collab

Chatea con tu grupo, comparte notas, crea encuestas y rastrea quién se ha apuntado a las actividades de cada día.

Widgets de Dashboard

Conversor de divisas y reloj de zonas horarias, activables por usuario.

Stack tecnológico

  • Backend: Node.js 22 + Express + SQLite (better-sqlite3)
  • Frontend: React 18 + Vite + Tailwind CSS
  • PWA: vite-plugin-pwa + Workbox
  • Tiempo real: WebSocket (ws)
  • Estado: Zustand
  • Autenticación: JWT + OIDC
  • Mapas: Leaflet + react-leaflet-cluster + Google Places API (opcional)
  • Meteorología: Open-Meteo API (gratis, sin API key)
  • Iconos: lucide-react

Instalación

Método rápido: Docker Run

docker run -d -p 3000:3000 \ -v ./data:/app/data \ -v ./uploads:/app/uploads \ mauriceboe/nomad

La aplicación se ejecuta en el puerto 3000. El primer usuario en registrarse se convierte en administrador.

Método recomendado: Docker Compose

Paso 1: Crear el directorio del proyecto

mkdir ~/trek cd ~/trek

Paso 2: Crear docker-compose.yml

services: app: image: mauriceboe/nomad:latest container_name: trek ports: - "3000:3000" environment: - NODE_ENV=production - PORT=3000 volumes: - ./data:/app/data - ./uploads:/app/uploads restart: unless-stopped

Paso 3: Iniciar el contenedor

docker compose up -d

Paso 4: Acceder a TREK

Abre tu navegador y ve a: http://localhost:3000

Instalar como aplicación (PWA)

TREK funciona como una Progressive Web App — no necesitas App Store:

  1. Abre tu instancia de TREK en el navegador (HTTPS requerido)
  2. iOS: Botón Compartir → "Añadir a pantalla de inicio"
  3. Android: Menú → "Instalar app" o "Añadir a pantalla de inicio"
  4. TREK se abrirá en pantalla completa con su propio icono, como una app nativa
Importante: La instalación PWA requiere HTTPS. Usa un reverse proxy con certificado SSL válido.

Configurar reverse proxy (recomendado)

Para producción, pon TREK detrás de un reverse proxy con HTTPS (Nginx, Caddy, Traefik).

Importante: TREK usa WebSockets para sincronización en tiempo real. Tu reverse proxy debe soportar upgrades de WebSocket en la ruta /ws.

Nginx

server { listen 80; server_name trek.tudominio.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name trek.tudominio.com; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; # WebSocket upgrade para /ws location /ws { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 86400; } location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

Caddy

Caddy maneja upgrades de WebSocket automáticamente:

trek.tudominio.com { reverse_proxy localhost:3000 }

API keys opcionales

Las API keys se configuran en el Panel de Administración después del login. Las keys configuradas por el admin se comparten automáticamente con todos los usuarios.

Google Maps (búsqueda de lugares y fotos)

  1. Ve a Google Cloud Console
  2. Crea un proyecto y habilita la Places API (New)
  3. Crea una API key en Credentials
  4. En TREK: Panel de Admin → Settings → Google Maps
Alternativa gratuita: Si no configuras Google Places, TREK usará OpenStreetMap automáticamente (sin fotos ni calificaciones, pero completamente funcional y gratuito).

Gestión del contenedor

Ver logs

docker compose logs -f app

Reiniciar

docker compose restart app

Detener

docker compose down

Actualizar a la última versión

# Con Docker Compose (recomendado) docker compose pull && docker compose up -d # Con Docker Run (usa tus paths originales) docker pull mauriceboe/nomad docker rm -f trek docker run -d --name trek -p 3000:3000 \ -v ./data:/app/data \ -v ./uploads:/app/uploads \ --restart unless-stopped \ mauriceboe/nomad

Tus datos están en los volúmenes montados data y uploads — las actualizaciones nunca tocan tus datos existentes.

Datos y backups

  • Base de datos: SQLite, almacenada en ./data/travel.db
  • Uploads: Almacenados en ./uploads/
  • Backups: Crea y restaura vía Panel de Admin
  • Auto-Backups: Programación y retención configurables en Panel de Admin

Casos de uso

  • Viajes en grupo: Planifica con amigos/familia en tiempo real, todos editando el mismo itinerario
  • Viajes de trabajo: Organiza conferencias, reuniones y desplazamientos con presupuestos detallados
  • Viajes largos: Planifica meses de viaje con múltiples destinos, reservas y documentos
  • Road trips: Optimiza rutas, visualiza en mapa y exporta a Google Maps
  • Escapadas de fin de semana: Planificación rápida con listas de equipaje y gastos
  • Viajes recurrentes: Reutiliza itinerarios y listas para destinos frecuentes

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