NAS還能拿來健身?部署openGym,搭一套自己的私人力量訓練App

可能大家年齡都到了一定階段,我明顯感覺周圍去健身房系統性健身訓練的人越來越多。剛好最近又在 GitHub 上發現了一個挺有意思的開源項目——openGym,一套自建的力量訓練記錄工具,完成度挺高,支持中文且開源,就想分享下。(圖片截取自項目)

截屏2026-08-12 10.30.40.png

筆者沒有啥健身記錄,也就偶爾整兩下,所以提供不了項目內數據展示,還請見諒哈!

ChatGPT Image 2026年8月12日 11_05_51 拷貝.jpg

關於openGym

完整項目名:DuarteSantos8/openGym。

openGym 是一個開源、自託管的健身記錄項目。它和普通運動打卡工具不太一樣,更偏向真正去健身房或者長期做力量訓練的人使用。可以提前創建每週訓練計劃,例如週一練胸、週三練背、週五練腿。真正開始訓練以後,再按照當天的訓練內容逐組記錄重量、次數和完成情況。

官方目前提供了超過一千個動作的數據,並帶有動作圖片或者 GIF。除了普通力量訓練,還支持超級組、計時動作、有氧、徒手訓練、RPE/RIR、漸進負重等功能。訓練一段時間以後,可以查看體重趨勢、訓練熱力圖、估算 1RM 和不同肌羣的訓練情況。

截屏2026-08-12 10.29.17 拷貝.png

但它目前並不能自動同步手環、手錶或智能健身器械的數據,所以如果你想要的是一套「運動健康數據自動彙總平臺」,它就不太合適了。

主要功能

  • 可以創建自己的訓練動作和訓練計劃,根據星期安排固定 Routine。

  • 訓練的時候會自動讀取上一次使用的重量,並提供休息計時、PR 判斷以及漸進負重建議。

  • 對於臥推、深蹲、硬拉這類動作,還可以根據訓練記錄估算 1RM,並查看變化趨勢。

  • 它同時支持體重記錄,可以給自己設置目標體重,再通過曲線查看變化。

  • 另外還有一個比較直觀的 GitHub 風格訓練熱力圖,一年裏面哪些天訓練過,基本一眼就能看出來。

  • 如果已經在用其他健身工具,也支持從 Strong、Hevy、FitNotes 等應用導入部分歷史數據。

  • 手機端則可以作爲 PWA 使用,添加到手機桌面以後,體驗會更接近一個普通 App。

注意:openGym 的完整體驗依賴 HTTPS。如果只是通過 NAS_IP:端口 訪問,可以正常打開頁面,但無法使用 Passkey 登錄、通知等功能。因此,想長期使用,建議提前準備好域名和 HTTPS 反代。

部署流程

我們以威聯通NAS爲例,通過Docker Compose的方式進行部署。

部署代碼如下,有些必須要修改的內容我都做了註釋請注意,若有排版問題,請藉助AI工具恢復:

services: media: image: alpine/git container_name: opengym-media volumes: - /share/Container/openGym/media/img:/out/img - /share/Container/openGym/media/gif:/out/gif entrypoint: ["/bin/sh", "-c"] command: - | if [ -z "$$(ls -A /out/img 2>/dev/null)" ]; then echo "Downloading exercise media..." git clone --depth 1 https://github.com/hasaneyldrm/exercises-dataset /tmp/ds cp /tmp/ds/images/*.jpg /out/img/ cp /tmp/ds/videos/*.gif /out/gif/ echo "Exercise media ready." else echo "Exercise media already present." fi restart: "no" api: image: ghcr.io/duartesantos8/opengym-api:1.2.5 container_name: opengym-api restart: unless-stopped environment: PORT: "3000" DATA_DIR: /data # 改成你自己的域名,有端口也別漏了 RP_ID: 你的域名 ORIGIN: https://你的域名 RP_NAME: openGym volumes: - /share/Container/openGym/data:/data web: image: ghcr.io/duartesantos8/opengym-web:1.2.5 container_name: opengym-web restart: unless-stopped depends_on: media: condition: service_completed_successfully api: condition: service_started ports: - "9527:80" # 左側端口建議修改 volumes: - /share/Container/openGym/media/img:/usr/share/nginx/html/img:ro - /share/Container/openGym/media/gif:/usr/share/nginx/html/gif:ro

打開威聯通的Container Statin創建新的應用程序。

截屏2026-08-11 17.13.53.png

注意一個正常現象:opengym-media 第一次啓動會下載大約 140MB 的動作圖片和 GIF,完成後容器會自動退出,這是正常的。最終保持運行的主要是 opengym-api 和 opengym-web。

使用一覽

部署完畢後,瀏覽器輸入反代好的域名,即可訪問服務。初始頁面如下。建議選擇第一項,通過passkey(通行密鑰)登錄。

截屏2026-08-11 17.29.36 拷貝.png

指定一個文件名匹配passkey,並創建。

截屏2026-08-12 10.01.34 拷貝.png

至於說存在哪裏,就看大家的個人情況了。我是選擇存放Google密碼管理工具中,這樣iOS、Android都能隨便用。

截屏2026-08-12 10.01.42 拷貝.png

進入首頁後,可以發現整個UI都是以移動端爲基準進行設計的。點擊右上角的小齒輪圖標進入設置。

截屏2026-08-12 10.02.16 拷貝.png

如下圖,語言更改爲中文,無需確認即時生效。底部可看到,能直接添加到主屏幕,作爲全屏應用。

截屏2026-08-12 10.02.45 拷貝.jpg

切換至手機端,發送到桌面後,體驗的確和App相差無幾。我們可以使用入門計劃,也可自己添加。

opengym_上一批_橫向原圖拼接 拷貝.jpg

可以將各種訓練動作加入計劃中,每天執行。也可以自己創建。

opengym_本批_橫向原圖拼接 拷貝.png

同個賬戶內的進度,也都是自動同步。

截屏2026-08-12 10.15.26 拷貝.png

最後我再借用他人的長期訓練數據截圖給大家看看吧!

a9d48d5db797611eaf41ebea75718158.png

1dd58e01cbe5c3436bd73d79d40c5d6b.png

最後

正在系統性健身訓練的朋友,可以部署一個看看!

感謝觀看,本文完~

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com