Open source · Self-hosted · Non-commercial

Your Suunto workouts,
in your own cloud.

suunto2nextcloud syncs activities from your Suunto watch into your personal Nextcloud as open GPX and FIT files — maps, heart-rate and elevation charts included, on storage you control.

View on GitHub Read the docs

Why

Training data is personal data. It should outlive any app, subscription or platform.

Own your data

Every activity is stored as an untouched FIT file plus a standard GPX track in your Nextcloud folder — readable by any sports tool, forever, no export lock-in.

Hands-off sync

A small service polls the official Suunto Cloud API and picks up new workouts shortly after your watch syncs. Run it once, forget it.

Maps & charts in Nextcloud

Tracks render in the GpxPod app: route on a map, elevation profile, heart rate, pace and speed — plus a monthly Activities.md summary with totals per sport.

Private by design

You authorise access to your own Suunto account via OAuth2. Data flows from Suunto straight to your server — no third party, no analytics, no resale.

Rich track detail

GPX files carry heart rate, cadence, temperature, speed and power as standard TrackPoint extensions. Indoor workouts keep their FIT and summary too.

Works on managed hosting

Nothing is installed server-side on Nextcloud: files arrive over WebDAV and viewing uses App Store apps, so it works even on managed instances like Hetzner Storage Share.

How it works

  1. Authorise once

    Log in with your Suunto account through the standard OAuth2 flow; tokens are stored locally and refreshed automatically.

  2. Sync continuously

    The service lists new workouts, downloads each FIT file once, converts it to GPX and uploads gpx + fit + json per activity, organised by year.

  3. Browse in Nextcloud

    Open the folder in GpxPod for maps and charts, or the generated Activities.md for a month-by-month log with distance, time, pace, ascent and heart rate.

Quick start

Python 3.9+ or Docker. Full details in the README.

git clone https://github.com/eloi-ribeiro/suunto2nextcloud
cd suunto2nextcloud
cp config.example.yaml config.yaml   # Suunto API keys + Nextcloud app password
pip install -r requirements.txt

python __main__.py test-nextcloud    # verify credentials, create the folder
python __main__.py auth              # one-off Suunto OAuth login
python __main__.py sync              # pull workouts; run via cron/Docker for auto-sync

No Suunto API access yet? import-fit ingests FIT files exported from the Suunto app through the same pipeline. Access to the Suunto Cloud API is granted by Suunto through their partner programme at apizone.suunto.com.