---
title: "Deploy NOMAD"
description: "Self-hosted collaborative travel planning with durable SQLite storage."
category: "Other"
url: https://railway.com/deploy/nomad
---

# Deploy NOMAD

Self-hosted collaborative travel planning with durable SQLite storage.

**[Deploy NOMAD on Railway](https://railway.com/template/nomad)**

- **Creator:** Tom
- **Category:** Other
- **Total deploys:** 3

## Template content

### TREK https://raw.githubusercontent.com/monotykamary/NOMAD/main/client/public/icons/icon.svg

- **Image:** ghcr.io/monotykamary/nomad:3.4.1
- **Health check:** /api/health
- **Public domain:** Yes

## Documentation

# Deploy and Host TREK on Railway

TREK is a self-hosted collaborative travel planner with interactive maps, itineraries, budgets, packing lists, reservations, documents, journals, offline PWA support, OIDC, passkeys, plugins, and optional AI-assisted booking import. This Railway template runs TREK as a single service with durable SQLite and upload storage.

## About Hosting TREK

TREK serves its web client, API, and WebSocket endpoint from port `3000`. Its SQLite database, encryption state, logs, plugins, backups, and uploaded files must survive redeployments. Railway supports one volume per service, so this template's container links `/app/uploads` into `/app/data/uploads` and mounts one persistent volume at `/app/data`.

The template generates an encryption key and initial administrator password, configures Railway's HTTPS origin, trusts one proxy hop, and checks `/api/health` before accepting a deployment.

## Common Use Cases

- Plan trips collaboratively with live updates
- Track budgets, reservations, packing lists, and documents
- Maintain a travel journal and visited-country atlas
- Run a private PWA with passkeys or OIDC single sign-on
- Extend trip planning with TREK plugins and MCP tools

## Dependencies for TREK Hosting

- TREK 3.4.1
- Node.js 24 runtime
- SQLite through `better-sqlite3`
- Persistent Railway volume at `/app/data`
- HTTPS and WebSocket routing on port `3000`

### Deployment Dependencies

- [TREK upstream repository](https://github.com/liketrek/TREK)
- [Railway-compatible source fork](https://github.com/monotykamary/NOMAD)
- [TREK documentation](https://github.com/liketrek/TREK/tree/main/wiki)
- [TREK live demo](https://demo.liketrek.com)
- [AGPL-3.0 license](https://github.com/liketrek/TREK/blob/main/LICENSE)

### Implementation Details

The service uses `APP_URL` and `ALLOWED_ORIGINS` from its Railway public domain, `FORCE_HTTPS=true`, and `TRUST_PROXY=1`. `ENCRYPTION_KEY`, `ADMIN_PASSWORD`, and the persistent volume are generated during template deployment. The administrator credentials are used only to initialize an empty installation.

Uploaded files are stored under `/app/data/uploads`; the application still sees its upstream path at `/app/uploads` through a container symlink. This is required because Railway currently permits one mounted volume per service.

The template pins `ghcr.io/monotykamary/nomad:3.4.1`. Future template revisions can advance that tag after validation; database and upload contents remain on the volume during redeployments.

### Why Deploy TREK on Railway?

Railway provides HTTPS, WebSocket routing, persistent volumes, health checks, deployment logs, backups, and restart management without requiring a separate database service. TREK remains self-hosted while Railway handles the underlying application runtime.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/nomad
