
Deploy Endurain
Self-hosted fitness tracking with PostgreSQL and persistent activity data.
Postgres
Just deployed
/var/lib/postgresql/data
Just deployed
/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
- Endurain v0.17.7 source
- Endurain deployment documentation
- Endurain environment-variable reference
- Umbrel Endurain package
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
Postgres
postgres:17.4