selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

ExerciseDiary logo

Self-host ExerciseDiary

0.1.9

Workout tracker with GitHub-style activity heatmap

BetaOpen SourceMIT
Updatedlast year
LanguageGo
Setup difficultyEasy
MobileResponsive
ThemeDark mode
Stars
472
Port
8851 (Web GUI)
Docker
aceberg/exercisediary
Install with Docker
Exercise Diary main dashboard showing workout heatmap and navigation

What is ExerciseDiary?

Exercise Diary is a self-hosted workout tracking application that visualizes your exercise history in a GitHub-style contribution heatmap. It supports logging workouts with categories, tracking body weight over time with charts, and viewing statistics. The web interface offers multiple Bootswatch themes and a configurable light/dark color mode. Authentication is optional via session cookies with bcrypt password hashing. It runs as a single Go binary, available as a Docker image (aceberg/exercisediary) or downloadable binaries (including a .deb package via PPA). Configuration uses environment variables or a config.yaml file. The project is pre-1.0 (version 0.1.9) with a roadmap showing core features complete and PostgreSQL support planned.

Should you self-host ExerciseDiary?

ExerciseDiary scores 46/100 on selfhost.directory (how scoring works) and ranks #10 of 11 in Fitness Tracker. It has 472 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is easy: most people get it running in one sitting. An official Docker image is available. It is MIT-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is openGym (81/100, 16 965 stars). It scores higher overall, so compare the two before you pick. See ExerciseDiary vs openGym side by side.

Features

  • Activity Heatmap
  • Authentication
  • Body-weight tracking
  • Local network mode
  • Statistics Page
  • Workout Logging

ExerciseDiary README

How to install ExerciseDiary

Install ExerciseDiary with Docker

Environment variables
TZ, HOST, PORT, THEME, COLOR, HEATCOLOR, PAGESTEP, AUTH, AUTH_EXPIRE, AUTH_USER, AUTH_PASSWORD

docker run --name exdiary
-e "TZ=Asia/Novosibirsk"
-v ~/.dockerdata/ExerciseDiary:/data/ExerciseDiary
-p 8851:8851
aceberg/exercisediary

Requires TZ environment variable for correct time

How to configure ExerciseDiary

  • AUTHfalseEnable Session-Cookie authentication

    Enable Session-Cookie authentication

    values: true, false

  • AUTH_EXPIRE7dSession expiration time. A number and suffix: m, h, d or M.

    Session expiration time. A number and suffix: m, h, d or M.

    values: e.g. 7d, 24h, 30m

  • AUTH_PASSWORDEncrypted password (bcrypt)

    Encrypted password (bcrypt)

    values: bcrypt hash

  • AUTH_USERUsername

    Username

    values: any string

  • COLORlightBackground color: light or dark

    Background color: light or dark

    values: light, dark

  • HEATCOLOR#03a70cHeatMap color

    HeatMap color

    values: hex color code

  • HOST0.0.0.0Listen address

    Listen address

    values: IP address

  • PAGESTEP10Items on one page

    Items on one page

    values: integer

  • PORT8851Port for web GUI

    Port for web GUI

    values: port number

  • THEMEgrassAny theme name from bootswatch.com in lowercase or additional themes (emerald, grass, grayscale, ocean, sand, wood)

    Any theme name from bootswatch.com in lowercase or additional themes (emerald, grass, grayscale, ocean, sand, wood)

    values: bootswatch theme names

  • TZSet your timezone for correct time

    Set your timezone for correct time

    values: IANA timezone (e.g. Asia/Novosibirsk)

ExerciseDiary releases & version history

More in Fitness Tracker

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…