openGym: self-hosted трекер тренировок без подписок и чужих серверов

«Ваши тренировки. Ваш вес. Ваши данные.» — девиз проекта, который звучит просто, но за ним стоит полноценное приложение уровня коммерческих конкурентов.

Что такое openGym и для кого он создан

Большинство фитнес-приложений хранят ваши данные на своих серверах и подталкивают к подписке — openGym запускается на вашем собственном сервере, держит данные в папке, которую вы контролируете, и открыт для форков.

При этом он ведёт себя как современное приложение: устанавливается на главный экран, поддерживает вход по passkey, работает офлайн и синхронизируется между телефоном и ноутбуком. Никаких сторонних аккаунтов, никаких подписок, рекламы и телеметрии.

Проект создан разработчиком Duarte Santos и распространяется под лицензией AGPL-3.0. Первый публичный релиз состоялся 20 июля 2026 года. На GitHub проект уже набрал более 3 100 звёзд и 556 форков, что говорит о быстро растущем сообществе.

Кому подойдёт:

  • Разработчикам и техническим пользователям, которые умеют запустить Docker
  • Людям, озабоченным приватностью и суверенитетом над личными данными
  • Тем, кто уже использует FitNotes, Strong или Hevy и хочет перейти на self-hosted решение
  • Небольшим командам или семьям, которые хотят общий тренировочный сервер
ℹ Живое демо
Попробовать openGym можно на opengym.duarte-santos.ch — без регистрации, прямо в браузере, на примерных данных. Passkey-вход, синхронизация и панель администратора доступны только в self-hosted инстансе.

Ключевые возможности

🗓️ Планирование и библиотека упражнений

Система позволяет назначить отдельную рутину на каждый день недели из библиотеки 1 324 упражнений с анимированными демонстрациями — с фильтрацией по мышцам на карте тела и по имеющемуся оборудованию. Сразу доступны четыре готовых плана: Push/Pull/Legs, Upper/Lower, Full Body и 5×5 — как обычные редактируемые рутины.

🏋️ Логирование тренировок

Поддерживаются суперсеты, разминочные сеты, дроп-сеты, упражнения на время (планки, вис, переноски), кардио по времени и скорости, а также настраиваемый отдых. Можно добавлять свои упражнения с фото, GIF или коротким видео.

Разминочные сеты помечаются отдельно и не учитываются в расчёте 1ПМ, прогрессии и карте усталости — они присутствуют в сессии, но не влияют на цифры.

🧠 Карта мышц: три режима

Это одна из самых уникальных функций openGym.

Карта мышц работает в трёх режимах:

  • Balance — куда ушёл объём за неделю, месяц или всё время, включая нетренированные мышцы
  • Fatigue — что ещё восстанавливается, взвешенное по близости каждого сета к максимуму, с плавным затуханием
  • Strength — как давно тренировалась каждая мышца, с оценкой 1ПМ для упражнений

Усталость чувствительна к объёму и затухает плавно: тяжёлый день с 12 сетами на грудь начинается у потолка и занимает около шести дней до состояния «готов»; один-единственный сет почти не регистрируется и исчезает за два дня. Затухание происходит непрерывно с периодом полураспада 36 часов, а не сбрасывается по краю временного окна.

📈 Прогрессия и статистика

Правила прогрессии настраиваются на уровне рутины или отдельного упражнения: линейная, Greyskull LP, двойная прогрессия через видимый диапазон повторений или добавление времени. Расчёт целевого веса объясняет причину; пропущенные повторения не добавляют нагрузку, а стагнация запускает откат. Доступны расчёт 1ПМ с индивидуальной кривой, коэффициенты структурного баланса (Poliquin, Thibaudeau, ATG) и годовой тепловой граф активности.

📥 Импорт данных

Импорт поддерживается из FitNotes (Android и iOS), Strong и Hevy (CSV или напрямую через Hevy Pro API key), а также из экспорта веса Apple Health. Названия упражнений сопоставляются с библиотекой, нераспознанные становятся пользовательскими — ничего из файла не теряется. Доступен и экспорт всего в один JSON-файл в любой момент.

🔑 Авторизация и безопасность

Вход — по passkey (Face ID / Touch ID / отпечаток), данные каждого профиля синхронизируются между устройствами. Можно добавить несколько passkey или подключить новое устройство через одноразовый код или QR. При желании администратор может включить вход по паролю (выключен по умолчанию).

🤖 Опциональный AI-коуч

AI-коуч — опциональная функция, по умолчанию отключённая. Он разрабатывает тренировочный план на основе нескольких ответов пользователя и анализирует реально залогированные данные. Поддерживаются провайдеры: Anthropic, OpenAI, Gemini, любой OpenAI-совместимый эндпоинт (включая Ollama на локальной сети), а также Claude Agent SDK / Codex CLI в отдельной сборке.

🌍 Мультиязычность

Интерфейс переведён на 12 языков (EN, DE, ES, FR, IT, PT, PL, TR, RU, ZH, KO, HI), инструкции к упражнениям локализованы в 10 из них и загружаются по требованию, чтобы приложение оставалось быстрым.


Быстрый старт

Требования: Docker с плагином Compose. Установка занимает около 5 минут:

git clone https://github.com/DuarteSantos8/openGym
cd openGym
cp .env.example .env
docker compose pull   # готовые образы amd64 + arm64
docker compose up -d

Первый запуск скачивает изображения и GIF упражнений (~140 МБ). После этого откройте http://localhost:8080 и создайте профиль с passkey.

💡 Для доступа с телефона
Чтобы использовать passkey с телефона, нужен HTTPS на домене — это двухстрочное изменение в .env. В документации есть инструкции для Cloudflare Tunnel, Caddy, Traefik, nginx, а также отдельные руководства для HTTPS в LAN и Kubernetes.

Как устроено приложение


graph TD
    A[Пользователь открывает PWA] --> B[Passkey / WebAuthn аутентификация]
    B --> C[Профиль синхронизируется]
    C --> D{Что делаем?}
    D --> E[Планируем рутину]
    D --> F[Ведём тренировку]
    D --> G[Смотрим статистику]
    E --> H[Библиотека: 1324 упражнения]
    F --> I[Суперсеты / Кардио / Разминка]
    F --> J[Таймер отдыха]
    G --> K[Карта мышц: Balance / Fatigue / Strength]
    G --> L[Хитмап активности]
    G --> M[1ПМ и структурный баланс]
    C --> N[Импорт: FitNotes / Strong / Hevy / Apple Health]
    G --> O{AI-коуч включён?}
    O -->|Да| P[Анализ данных → Предложения плана]
    O -->|Нет| Q[Ручная прогрессия]

Стек технологий: React 19 + Vite (React Router, Zustand) на фронтенде, Node без фреймворка на бэкенде, nginx, Docker Compose, WebAuthn для авторизации.


Тарифы и цены

openGym полностью бесплатен: никаких подписок, аккаунтов на чужих серверах, рекламы и телеметрии. Единственная «стоимость» — это ваш сервер или VPS (от ~3–5 $ в месяц у большинства хостеров) и время на настройку.

Статья расходовСтоимость
Само приложениеБесплатно (AGPL-3.0)
Хостинг (VPS / NAS / Raspberry Pi)По стоимости вашей инфраструктуры
AI-коуч (опционально)По тарифам вашего AI-провайдера
Android APKБесплатно
⚠ Важно об AI-коуче
AI-коуч использует ваш API-ключ выбранного провайдера (OpenAI, Anthropic, Gemini или Ollama локально). Стоимость зависит от частоты использования и выбранной модели. При использовании Ollama расходы нулевые.

Плюсы и минусы

✅ Плюсы❌ Минусы
Полный контроль над данными, нет телеметрииТребует технических навыков для установки
Бесплатно и открытый исходный код (AGPL-3.0)HTTPS и домен нужны для passkey с телефона
1 324 упражнения с анимацией и фильтрациейНет нативных приложений (только PWA + APK)
Уникальная трёхрежимная карта мышцНет Apple Watch интеграции
Импорт из FitNotes, Strong, Hevy, Apple HealthAI-коуч требует собственный API-ключ
Passkey-авторизация, многопрофильностьНет периодизации / блочного тренинга (в roadmap)
12 языков, включая русскийСторонние медиафайлы имеют спорный правовой статус
Опциональный AI-коуч на вашем провайдереНет интеграции с носимыми устройствами
Работает офлайн как PWA
Активное сообщество, быстрые релизы

Сравнение с альтернативами

Среди популярных коммерческих конкурентов — Strong (бесплатно / 4,99 $/мес, iOS и Android) и Hevy (бесплатно / 2,99 $/мес, iOS и Android).

ПараметрopenGymHevyStrong
ЦенаБесплатно (self-hosted)Бесплатно / $2,99/месБесплатно / $4,99/мес
Хранение данныхВаш серверСерверы HevyСерверы Strong
ТелеметрияНетЕстьЕсть
Карта мышц (Fatigue/Strength)✅ Три режима❌❌
Импорт из других приложений✅ FitNotes/Strong/Hevy/AH✅ Ограниченный✅ CSV
AI-коуч✅ (на своём провайдере)❌❌
Русский язык✅❌❌
Библиотека упражнений1 324400+200+
Passkey-авторизация✅❌❌
Открытый исходный код✅ AGPL-3.0❌❌
Apple Watch❌✅✅
Нативное приложениеAndroid APK / PWAiOS + AndroidiOS + Android
Сложность установкиСредняя (Docker)НетНет

Hevy и Strong — отличные логгеры с почти одинаковым ядром: Hevy лидирует по социальным функциям и щедрости бесплатного тарифа, Strong немного полирует калькулятор блинов. Но ни один из них не даёт вам контроль над данными и не предлагает карту усталости мышц.

📝 Пример использования
Вы переходите с Hevy: экспортируете данные в CSV, импортируете в openGym — все упражнения сопоставляются с библиотекой автоматически. Уже через день видите на карте мышц, какие группы перегружены, а какие — детренированы.

Вердикт

openGym — редкий случай, когда open-source проект не только не уступает коммерческим аналогам, но и превосходит их в ключевых функциях: приватность данных, карта мышц с тремя режимами, прогрессия с объяснениями, поддержка 12 языков и AI-коуч на собственной инфраструктуре.

В первом публичном релизе уже есть: отслеживание веса тела с интерактивным графиком, недельный планировщик с 1 324 упражнениями, ведение тренировок с таймером и обнаружением рекордов, суперсеты и кардио, рескедьюлинг дней, тепловой граф активности в стиле GitHub, passkey-вход и синхронизация профиля, светлая/тёмная темы с 8 акцентными цветами.

Кому подойдёт:

  • ✅ Технически подготовленным пользователям, ценящим приватность
  • ✅ Тем, кто хочет мигрировать с Hevy/Strong/FitNotes и не потерять историю
  • ✅ Разработчикам и homelabber’ам
  • ❌ Тем, кто хочет «просто скачать приложение» без настройки сервера
  • ❌ Пользователям Apple Watch

Рейтинг: 8.5 / 10

Снято 1.5 балла за порог входа (нужен Docker и домен с HTTPS для полного функционала) и отсутствие нативных iOS/Apple Watch приложений. В остальном — один из лучших фитнес-трекеров на рынке, независимо от категории «open source».