Railway

Deploy Endurain

Self-hosted fitness tracking with PostgreSQL and persistent activity data.

Deploy Endurain

Just deployed

/var/lib/postgresql/data

/app/backend/data

Deploy and Host Endurain on Railway

What is Endurain?

Endurain is an open-source, self-hosted fitness tracking service for keeping activity, health, and gear data under your control. It supports manual activities and imports from GPX, TCX, FIT, and compressed files, together with optional Strava and Garmin Connect integrations.

About Hosting Endurain

This template runs Endurain v0.17.7 with PostgreSQL 17.4. Railway provides the public HTTPS endpoint for Endurain while PostgreSQL remains on private networking. Endurain applies Alembic and application migrations during startup. A persistent application volume stores activity files, imported media, and custom user and server images; PostgreSQL uses its own persistent volume. All portable required settings use safe defaults, generated secrets, or Railway service references, so the base deployment needs no external credentials. Optional SMTP, Strava, Garmin Connect, and geocoding credentials are omitted.

Common Use Cases

  • Keep a private activity and health history.
  • Import GPX, TCX, FIT, and compressed activity files.
  • Track fitness equipment, goals, and workout statistics.

Dependencies for Endurain Hosting

  • Endurain v0.17.7, pinned to the official GHCR image digest.
  • PostgreSQL 17.4 on Railway private networking.
  • Persistent volumes for Endurain activity data and PostgreSQL.

Deployment Dependencies

Implementation Details

Endurain listens on port 8080; Railway routes HTTPS to that port and checks /api/v1/about. ENDURAIN_HOST derives from the Railway public domain so the frontend, redirects, and optional integrations agree on one origin. FRONTEND_PROTOCOL=https marks authentication cookies secure, while BEHIND_PROXY=true enables proxy-header processing at Railway's edge.

The Endurain service reaches PostgreSQL through ${{Postgres.RAILWAY_PRIVATE_DOMAIN}}. The database password is generated once on PostgreSQL and referenced by Endurain. Endurain's signing key and Fernet key are generated independently at template deployment time; they are never copied from the validation project.

Railway supports one persistent volume per service. Endurain's required application state is therefore mounted at /app/backend/data. Backend log files are not placed on a second application volume; runtime logs are captured by Railway. PostgreSQL stores database state at /var/lib/postgresql/data.

Endurain runs Alembic schema upgrades and its application migrations before it finishes startup. Before updating, back up PostgreSQL and the complete /app/backend/data volume, review upstream release notes, and test the new immutable image in isolation. Roll back to the prior image digest together with matching database and application-volume backups if a migration is incompatible.

The initial Endurain credentials are admin / admin. Change the password immediately after first sign-in. This community template is maintained independently and does not imply affiliation with or endorsement by the Endurain project.

Why Deploy Endurain 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 Endurain 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
Rocky Linux
[Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

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

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51