Jak przestałem płacić za subskrypcje aplikacji fitness i wdrożyłem wger na własnym serwerze
Mam stary nawyk: gdy tylko zaczynam chodzić na siłownię, mój telefon zapełnia się tuzinem aplikacji fitness. Na początku wszystko idzie gładko, ale tydzień później wita cię paywall. Chcesz stworzyć złożony program z progresją obciążenia? Płać miesięcznie. Chcesz śledzić kalorie bez nachalnych reklam wątpliwych suplementów? Płać ponownie. Dodaj do tego zamknięte formaty własnościowe, które uniemożliwiają prawidłowy eksport danych, a chęć prowadzenia dziennika szybko znika.
Pewnego czasu natknąłem się na projekt open-source o nazwie wger (wymawiany mniej więcej jako „wi-dżer”). To w pełni funkcjonalny menedżer treningów i odżywiania hostowany na własnym serwerze, napisany w Pythonie i Django. Projekt istnieje na GitHubie od 2013 roku, zgromadził ponad 6,6 tysiąca gwiazdek i przekształcił się w dojrzałą platformę z aplikacjami mobilnymi i otwartym REST API.
Co potrafi system
Jeśli chodzi o funkcjonalność, wger pokrywa praktycznie wszystkie potrzeby osoby regularnie ćwiczącej i śledzącej swoją sprawność fizyczną.
Konstruktor treningów i progresja obciążenia
Tutaj możesz tworzyć programy o dowolnej złożoności: od prostych podziałów treningowych po periodyzację z precyzyjnymi zasadami progresji obciążenia. Baza ćwiczeń jest dostępna od razu, z obrazkami, opisami techniki i podziałem na grupy mięśniowe. Jeśli brakuje konkretnej maszyny, możesz łatwo dodać ją samodzielnie lub przesłać do społeczności.
Śledzenie odżywiania i integracja z Open Food Facts
Zamiast ręcznie wprowadzać informacje o wartościach odżywczych każdego jabłka czy piersi z kurczaka, wger pobiera bazę produktów z Open Food Facts. To ogromna otwarta baza danych produktów spożywczych z całego świata. Możesz budować własne plany posiłków, śledzić makroskładniki (białka, tłuszcze, węglowodany) i dzienne spożycie kalorii.
Pomiary i galeria postępów
Oprócz podstawowej masy ciała, system przechowuje historię obwodów talii, bicepsa, procentowej zawartości tłuszczu w organizmie oraz dowolnych niestandardowych metryk. Możesz również przesyłać zdjęcia postępów według daty. Ponieważ serwer znajduje się pod twoją kontrolą, prywatne zdjęcia nie wyciekną do zewnętrznych chmur.
Klienci mobilni i desktopowi
Zwykle projekty open-source takie jak ten mają tylko interfejs webowy, co jest niewygodne podczas otwierania na smartfonie przy siedzeniu na ławce do przysiadów. wger posiada oficjalną aplikację Flutter. Jest zbudowana dla Androida (w tym Google Play i F-Droid), iOS oraz Flathub dla desktopowego Linuksa. Klient łączy się bezpośrednio z twoją instancją przez API.
Pod maską
Architektura projektu wygląda klasycznie dla niezawodnych usług internetowych:
- Backend napisany w Django (Python).
- Baza danych: PostgreSQL lub SQLite (do szybkich testów).
- Frontend wykorzystuje standardowe szablony Django plus REST API zbudowane na Django REST Framework.
- Aplikacje mobilne napisane w Flutterze, kod źródłowy znajduje się w oddzielnych repozytoriach w ramach organizacji.
- Licencja: AGPL-3.0.
Posiadanie pełnego REST API oznacza, że możesz automatyzować logowanie treningów przez webhooki, podłączać inteligentne wagi lub pisać własne skrypty Python kompilujące roczne statystyki i wysyłające ładny raport do twojego komunikatora.
Szybki start
Wdrożenie własnej instancji jest najłatwiejsze przez Docker Compose. Zespół projektu prowadzi oddzielne repozytorium ze wszystkimi gotowymi konfiguracjami.
Krok pierwszy. Sklonuj repozytorium z plikami Docker:
git clone https://github.com/wger-project/docker.git wger-docker
cd wger-docker
Krok drugi. Uruchom stos kontenerów:
docker compose up -d
Po uruchomieniu interfejs webowy będzie dostępny na lokalnym porcie (domyślnie http://localhost:80). Przy pierwszym logowaniu system poprosi o utworzenie konta administratora i załadowanie podstawowych zestawów ćwiczeń i składników.
Jeśli konfigurowanie własnego serwera wydaje się zbyt kłopotliwe, autorzy mają publiczny darmowy serwer pod adresem wger.de. Możesz się tam zarejestrować, przetestować interfejs i dopiero wtedy zdecydować, czy potrzebujesz własnego hostingu.
Dla kogo to jest
Projekt jest idealny dla każdego, kto:
- Chce przechowywać dane o zdrowiu i treningach na własnym sprzęcie.
- Jest zmęczony niekończącymi się subskrypcjami w komercyjnych aplikacjach takich jak MyFitnessPal czy Hevy.
- Szuka gotowego backendu dla projektu fitness lub siłowni (wger ma podstawowy tryb wielu użytkowników z kontrolą dostępu opartą na rolach dla trenerów i klientów).
Wadą jest to, że interfejs webowy wygląda w niektórych miejscach trochę przestarzale, a aplikacja mobilna czasami ustępuje płynności płatnym alternatywom. Ale niezależność od zewnętrznych chmur i otwarte API rekompensują to z nawiązką. Jeśli szukasz czegoś na domowy serwer lub Raspberry Pi, wger zdecydowanie zasługuje na miejsce w twoim docker-compose.yml.
Powiązane projekty
