Railway

Deploy NOMAD

A self-hosted travel/trip planner with real-time collaboration.

Deploy NOMAD

Just deployed

/app/data

Deploy and Host NOMAD on Railway

NOMAD
Navigation Organizer for Maps, Activities & Destinations

NOMAD (Navigation Organizer for Maps, Activities & Destinations) is a self-hosted, real-time collaborative travel planner featuring interactive maps, drag-and-drop itinerary planning, budget tracking, packing lists, and document management. Built as a Progressive Web App with offline support, it enables groups to plan trips together with live WebSocket synchronization and optional OIDC authentication.

About Hosting NOMAD

NOMAD deploys as a containerized Node.js 22 application with an integrated SQLite database (better-sqlite3). Hosting requires persistent volume storage for the database (./data/travel.db) and user uploads (./uploads/). The application exposes port 3000 and utilizes WebSocket connections (/ws path) for real-time collaboration features. Configuration is environment-driven, with optional Google Places API integration for enhanced location search with photos and ratings. The first user to register automatically becomes the administrator, controlling global settings, API keys, backup schedules, and user access management. Being self-hosted, NOMAD ensures complete data privacy while supporting enterprise SSO via OIDC providers (Google, Apple, Keycloak, Authentik).

Common Use Cases

  • Group Travel Coordination — Plan multi-day trips with friends or family using real-time collaborative editing, shared itineraries, and integrated chat with polls
  • Digital Nomad Management — Track long-term travel budgets across multiple currencies, manage reservations with document attachments, and maintain packing templates for different climates
  • Event & Conference Planning — Organize corporate retreats or events with day-by-day scheduling, route optimization between venues, and attendee signup tracking

Dependencies for NOMAD Hosting

  • Node.js 22 — Runtime environment for the Express backend server
  • SQLite (better-sqlite3) — File-based embedded database storing trip data, user accounts, and collaboration state
  • Persistent Volumes — Required for database persistence (/app/data) and file uploads (/app/uploads) to prevent data loss on container restarts
  • (Optional) Google Places API Key — Enables enhanced place search with photos, ratings, and opening hours (admin-configurable, shared across all users)

Deployment Dependencies

Implementation Details

Required Environment Variables:

NODE_ENV=production
PORT=3000

Volume Mounts:

  • /app/data — SQLite database storage (travel.db)
  • /app/uploads — User document attachments (PDFs, tickets, images up to 50MB)

WebSocket Configuration: Ensure your Railway domain supports WebSocket upgrades on the /ws path for real-time synchronization features.

First Setup: The initial user registration automatically creates the admin account. Access the Admin Panel after login to configure global API keys (Google Places), backup schedules, and optional OIDC SSO providers.

Updating: Pull the latest image (mauriceboe/nomad:latest) via Railway's deployment controls. Data persists in mounted volumes and remains intact during updates.

Why Deploy NOMAD on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying NOMAD on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


Template Content

More templates in this category

View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
View Template
NEW
calm-fair
GitHub PR lifecycle tracker for Slack: reviews, reactions, cleanup

Yogen P
View Template
(v1) Simple Medusa Backend
Deploy an ecommerce backend and admin using Medusa

Shahed Nasser