Endurain

Manage your fitness journey with a self-hosted tracking service. Sync with Strava and Garmin, monitor gear wear, and log health metrics securely.

Take full ownership of your athletic data with a comprehensive, self-hosted fitness tracking platform. Designed for athletes who value privacy and control, this solution allows you to monitor your workouts, health metrics, and equipment usage without relying on third-party cloud services.

Key Features:

  • Seamless Integrations: Automatically sync activities, gear, and body composition data from Strava and Garmin Connect.
  • Advanced Gear Tracking: Monitor the lifespan of your equipment, from running shoes and wetsuits to specific bicycle components like chains and brake pads.
  • Comprehensive Health Logging: Keep a detailed record of your weight, daily steps, and sleep patterns alongside your workout statistics.
  • Flexible Data Import: Manually upload or bulk import activities using standard .gpx, .tcx, and .fit file formats.
  • Secure and Customizable: Features multi-user support, MFA TOTP, SSO capabilities, and a fully customizable interface.

Directory Structure

endurain
data
.env
docker-compose.yml

docker-compose.yml

services:
  endurain:
    container_name: endurain-app
    image: ghcr.io/endurain-project/endurain:latest
    env_file:
      - .env
    volumes:
    #  - <local_path>/endurain/backend/app:/app/backend # Configure volume if you want to edit the code locally by cloning the repo
      - <local_path>/endurain/backend/data:/app/backend/data # necessary for activity files, user images and server images persistence on container image updates
      - <local_path>/endurain/backend/logs:/app/backend/logs # log files for the backend
    ports:
      - "8080:8080"
    depends_on:
      postgres:
        condition: service_healthy
    restart: unless-stopped

   # postgres logic
  postgres:
    image: docker.io/postgres:17.5
    container_name: endurain-postgres
    env_file:
      - .env
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U endurain"]
      interval: 5s
      timeout: 5s
      retries: 5
    volumes:
      - <local_path>/endurain/postgres:/var/lib/postgresql/data
    restart: unless-stopped

.env

# This is an environment variable file for Endurain's docker-compose.yml.example
# These are just the variable you have to set to be up and running.
# There is many more variable you could set. Check them out here: https://docs.endurain.com/getting-started/advanced-started/#supported-environment-variables

# Set a strong password here. Check if there are no trailing whitespaces in the beginning and end. Must be the same as POSTGRES_PASSWORD
DB_PASSWORD=changeme
# Must be the same as DB_PASSWORD
POSTGRES_PASSWORD=changeme
SECRET_KEY=changeme
FERNET_KEY=changeme
TZ=Europe/Lisbon
ENDURAIN_HOST=https://endurain.example.com
BEHIND_PROXY=true

# Optional: Allow custom URI schemes in SSO redirect URLs (Mobile / system-browser OAuth flow)
# Comma-separated list of custom URI schemes that mobile apps may pass as the
# `redirect` query parameter when initiating SSO via the system browser.
# Example: ALLOWED_REDIRECT_SCHEMES=gadgetbridge,myapp
# Default: empty (only relative paths such as /dashboard are accepted).
# Security: External http/https URLs are always rejected regardless of this setting.
#ALLOWED_REDIRECT_SCHEMES=

# If you change this, you also have to change DB_DATABASE
POSTGRES_DB=endurain
# Uncomment and set it to the same as POSTGRES_DB if you change it
# DB_DATABASE=endurain
# If you change this, you also have to change DB_USER
POSTGRES_USER=endurain
# Uncomment and set it to the same as POSTGRES_USER if you change it
# DB_USER=endurain
PGDATA=/var/lib/postgresql/data/pgdata

# Optional: Enable session timeouts (default: false)
# Enable idle session timeout
#SESSION_IDLE_TIMEOUT_ENABLED=true
# If enabled, configure timeout durations
# Idle timeout (no activity)
#SESSION_IDLE_TIMEOUT_HOURS=1
# Absolute max session lifetime
#SESSION_ABSOLUTE_TIMEOUT_HOURS=24

# Email configuration (for password reset functionality)
#SMTP_HOST=smtp.protonmail.ch
#SMTP_PORT=587
#SMTP_USERNAME=your-email@example.com
#SMTP_PASSWORD=your-app-password
#SMTP_SECURE=true
#SMTP_SECURE_TYPE=starttls
Categories:

Share:

Ad
Favicon

 

  
 

Similar to Endurain

Favicon

 

  
  
Favicon

 

  
  
Favicon