
FitNotes で記録したトレーニングデータはどこに保存されているか、考えたことはありますか。
Strong や Hevy も同じで、データはサービス提供者のクラウドに置かれています。
普段使いでは気にならないこの設計が、「社員のトレーニングデータを会社として把握したい、でも外部には渡したくない」という文脈になると、急に問題になってきます。
セルフホスト型のジム&体重トラッカー openGym を Docker Compose で自社サーバーや NAS に立ち上げるまでを、compose.yml の中身・初回起動の注意点・Synology や VPS への展開まで含めて追います。
「なぜセルフホストか」という話から始めるので、チームへの導入を検討している場合の文脈整理にも使えます。
ヘルスケアデータを「外に出さない」という選択肢が生まれた背景
FitNotes・Strong・Hevy はどれも完成度が高いアプリです。
使い勝手は申し分なく、機能面で不満を持つ理由はほとんどありません。
セルフホストを検討する理由は「あのアプリより機能が多い」ではなく、ただひとつ データの置き場所を自分たちでコントロールできる という一点です。
これが実際に問題になるのは、企業が社員のトレーニングデータを管理しようとするときです。
業務データとは異なる種類の情報ですが、健康状態に紐づく個人情報として扱うと、外部のクラウドに預けることをためらう企業は出てきます。
健康経営の観点でトレーニング習慣を把握したい、でもデータを社外に送りたくない、という要件は、中小企業でも普通に生まれます。
openGym はそのような要件への答えとして、AGPL v3 ライセンスで公開されている OSS です。
プロジェクトの説明文には「No account on someone else's server, no subscription, no ads. Just docker compose up.」とあり、このツールのスタンスをよく表しています。
Hevy のアカウントに紐づいてクラウドに保存されるデータが、自分たちの管理下に置かれる。
それだけのことですが、この違いが特定の文脈では決定的に重要になります。
openGym で何ができるか——動作ベースで主要機能を把握する
openGym は PWA(Progressive Web App)として動作します。
ブラウザでそのまま使えますし、スマホのホーム画面に追加すればネイティブアプリに近い感覚で使えます。
デバイスをまたいだ同期はパスキーログインで実現しているので、外部アカウントを作る必要がありません。
機能の構成を整理するとこうなります。
- エクササイズライブラリ: 1,324 種のエクササイズにアニメーションデモが付いています。スーパーセット・ウォームアップ・カーディオをまとめてログできます
- 筋肉疲労/回復ビジュアライズ: どの筋肉グループが今疲れているか、デトレーニング状態にあるかをホーム画面でひと目で確認できます
- 体重トラッキング: インタラクティブチャートと目標ラインを表示します。ヒートマップと PR(自己ベスト)記録も同画面に揃っています
- プッシュ通知: レスト終了アラート(アプリがバックグラウンドでも発火する)と、当日トレーニング予定があるのにログしていない場合のリマインダー。プロファイルごとにオプトインできます
特に面白いのが筋肉疲労のビジュアライズです。
ただトレーニングをログするだけのアプリにはない機能で、今週どの部位に刺激が入っていて、どこが回復待ちかが一目でわかります。
次のトレーニング計画を立てるときに、感覚ではなく記録に基づいた判断ができます。
VAPID キー(プッシュ通知用の暗号鍵)はサーバー初回起動時に自動生成されます。
パスキーログインも含めて、外部の認証サービスや通知サービスに依存しない設計になっているのが、セルフホストとの相性がいい理由です。
Docker Compose で立ち上げる——compose.yml の読み方と初回起動まで
構成はシンプルで、api と web の 2 サービスです。
公式リポジトリの compose.yml をベースにすると、こんな形になります。
services:
api:
image: ghcr.io/duartesantos8/opengym-api:latest
restart: unless-stopped
volumes:
- opengym_data:/app/data
web:
image: ghcr.io/duartesantos8/opengym-web:latest
restart: unless-stopped
ports:
- "3000:80"
depends_on:
- api
volumes:
opengym_data:
api サービスがデータの永続化を担い、web がフロントエンドを配信します。
トレーニングログや体重データは opengym_data ボリュームに保存されるので、バックアップはここだけ取っておけば十分です。
起動は以下のコマンドで完了します。
# プリビルドイメージを取得して起動(amd64/arm64 両対応)
docker compose pull
docker compose up -d
# ソースからビルドしたい場合(ホストに Node.js 環境は不要)
docker compose up -d --build
プリビルドイメージは ghcr.io に公開されていて、amd64 と arm64 の両アーキテクチャに対応しています。
Raspberry Pi や Apple Silicon の Mac でもそのまま動きます。
初回起動時だけひとつ注意があります。
エクササイズのアニメーションデモ用に約 140MB のメディアファイルをダウンロードするので、最初の数分は画面が空のまま動かないように見えます。
焦らず待っていれば準備が整います。
ブラウザで http://localhost:3000 を開き、「Create profile」からプロファイルを作成すれば使い始められます。
NAS・社内サーバーへの展開で押さえておくこと
Synology DSM の Container Manager(旧 Docker パッケージ)でも同じ compose.yml がそのまま使えます。
DSM の UI でスタックとして登録するだけなので、コマンドラインに慣れていなくても問題ありません。
DSM で展開する際に気をつけるのは 2 点です。
ひとつはボリュームのパスで、名前付きボリュームより Synology のファイル共有(/volume1/docker/opengym など)へのバインドマウントに切り替えておくと、File Station から直接バックアップを取りやすくなります。
もうひとつはポートで、3000 番が他のサービスと競合している場合はホスト側のポート番号だけ変えれば OK です。
HTTPS 化は社外からアクセスする場合は必須です。
Synology なら「コントロールパネル → アプリケーションポータル → リバースプロキシ」から、内蔵のリバースプロキシ機能で HTTPS を終端できます。
VPS に置く場合は Caddy を前段に立てるのが一番手軽です。
gym.example.com {
reverse_proxy localhost:3000
}
Caddyfile はこれだけです。
TLS 証明書の取得と自動更新を Caddy が全部やってくれるので、certbot の設定を書く必要はありません。
QNAP の Container Station や素の Ubuntu VPS でも同じ compose.yml がそのまま動きます。
環境ごとに特別な設定を追加する必要はほぼありません。
複数ユーザーで使う場合の現状も整理しておきます。
プロファイルは各自が初回起動時に作成する形式で、管理者がまとめてアカウントを発行したり、全員の記録を一覧したりする機能は現時点では実装されていません。
社員数名が各自のトレーニングを記録・可視化するには十分ですが、「全社員のデータを管理者がダッシュボードで把握する」という使い方には今のところ対応していません。
「自社で持つ」ことのトレードオフを正直に言っておく
外部 SaaS と比べると、セルフホストは間違いなく手間が増えます。
アップデートは自分で実行します。
バックアップが取れているかを定期的に確認します。
何か壊れたときに直すのも自分たちです。
これらのコストはゼロではなく、事前に認識しておく必要があります。
機能面でも正直に言うと、現時点では組織的な健康管理ツールとして使うにはギャップがあります。
管理者ダッシュボードや全社員の状況を俯瞰する機能は実装されていないので、「健康経営の指標として集計・報告する」ような用途では別の仕組みと組み合わせる必要があります。
それでも「データが自分たちのサーバーにある」という事実は、外部 SaaS との根本的な違いです。
この違いに価値があるかどうかを判断するのは、導入する側です。
要件によっては外部 SaaS の方がずっと合っているケースも当然あります。
まず手元の Docker 環境で立ち上げて触ってみることが、一番正確な判断材料になります。
15 分もあれば動かせますし、実際に触れば自分たちの用途に合うかどうかは見えてきます。
株式会社ホコサキは山口県宇部を拠点に、Web 制作・業務システム開発・AI 活用支援を手がけています。
「社内データを外に出さずに管理したい」「自社サーバーへの OSS 導入を相談したい」といった案件も、お問い合わせ からお気軽にご連絡ください。

