---
title: "Deploy Endurain"
description: "Self-hosted fitness tracking with PostgreSQL and persistent activity data."
category: "Other"
url: https://railway.com/deploy/endurain
---

# Deploy Endurain

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

**[Deploy Endurain on Railway](https://railway.com/template/endurain)**

- **Creator:** Heron Technology
- **Category:** Other

## Template content

### Postgres

- **Image:** postgres:17.4@sha256:4aed4b0525233308fc5de1b8d47f92326460d598dc5f004d14b41f183360b4e9

### Endurain

- **Image:** ghcr.io/endurain-project/endurain:v0.17.7@sha256:af3d2b50667c081211e9af6b3590f6cbfbaacb73f63910902574f9d65c24b346
- **Health check:** /api/v1/about
- **Public domain:** Yes

## Documentation

# 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](https://github.com/joaovitoriasilva/endurain/tree/v0.17.7)
* [Endurain deployment documentation](https://docs.endurain.com/getting-started/getting-started/)
* [Endurain environment-variable reference](https://docs.endurain.com/getting-started/advanced-started/)
* [Umbrel Endurain package](https://github.com/getumbrel/umbrel-apps/tree/master/endurain)

### 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.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — [Jul'26] 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/endurain
