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:
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# 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=starttlsAuto-fetched about 22 hours ago
Auto-fetched about 22 hours ago