Skip to content

App Suggestion: Peloton to Garmin (P2G) #1277

Description

@marblegravy

Please tell us what app you'd like to see on CapRover as a one-click app.
This is a free and simple app to sync your Peloton workouts to Garmin. By setting this up as a CapRover one-click-app it'll be even easier for anyone to set up this app to sync their data.

Do you know if there is any official Docker image for the app?
Yes - P2G publishes Docker images to both DockerHub and GitHub Package.

Draft one-click-app yml:

captainVersion: 4
services:
    $$cap_appname-api:
        image: philosowaffle/peloton-to-garmin:api-stable
        restart: unless-stopped
        environment:
            TZ: $$cap_tz
            Api__HostUrl: "http://*:8080"
        volumes:
            - $$cap_appname-api-data:/app/data
            - $$cap_appname-api-output:/app/output
        caproverExtra:
            containerHttpPort: '8080'
            notExposeAsWebApp: 'true'
    $$cap_appname:
        depends_on:
            - $$cap_appname-api
        image: philosowaffle/peloton-to-garmin:webui-stable
        restart: unless-stopped
        environment:
            TZ: $$cap_tz
            Api__HostUrl: "http://srv-captain--$$cap_appname-api:8080"
            WebUI__HostUrl: "http://*:8080"
        caproverExtra:
            containerHttpPort: '8080'

caproverOneClickApp:
    variables:
        - id: $$cap_tz
          label: Timezone
          defaultValue: 'Australia/Sydney'
          description: Your timezone (e.g., America/New_York, Europe/London, Asia/Tokyo)
          validRegex: /.{1,}/
    instructions:
        start: |-
            Peloton to Garmin (P2G) syncs your Peloton workouts to Garmin Connect.
            
            This deployment uses environment variables for configuration - no manual config files needed!
            
            Features:
            - Automatically sync Peloton workouts (Bike, Tread, Rower, Strength, Meditation, etc.)
            - Upload to Garmin Connect
            - Earn Garmin badges and challenge credits
            - Convert workouts to JSON/TCX/FIT formats
            - Counts towards VO2 Max and Training Stress Scores
            
            Note: After deployment, you'll need to run one command to fix volume permissions (one-time setup).
        end: |-
            ✅ P2G has been deployed!
            
            🔧 ONE-TIME SETUP REQUIRED (Fix Volume Permissions):
            
            SSH into your CapRover server and run these commands:
            
            ```bash
            docker service scale srv-captain--$$cap_appname-api=0
            docker run --rm \
              -v captain--$$cap_appname-api-data:/data \
              -v captain--$$cap_appname-api-output:/output \
              busybox sh -c "chown -R 1015:1015 /data /output && chmod -R 755 /data /output"
            docker service scale srv-captain--$$cap_appname-api=1
            ```
            
            This fixes permissions so the API can write to its data directory (P2G runs as user 1015:1015 per official docs).
            
            ⏱️ Wait 30 seconds after running the commands, then access your P2G Web UI at:
            
            🎯 http://$$cap_appname.$$cap_root_domain
            
            📝 Next Steps:
            1. Open the web interface
            2. Navigate to **Settings**
            3. Configure your **Peloton credentials** (email and password)
            4. Configure your **Garmin Connect credentials**
            5. Set up sync options (workout types, polling interval, etc.)
            6. Start syncing your workouts!
            
            🔍 Troubleshooting:
            - If WebUI shows "Failed to fetch from API": Check that both services are running
            - If API logs show permission errors: Re-run the permission fix commands above
            - Check logs in CapRover: Apps → $$cap_appname → Logs
            
            📚 Documentation: https://philosowaffle.github.io/peloton-to-garmin/
            💬 Peloton Tag: #PelotonToGarmin
            
            🔐 Note: This Web UI version stores credentials encrypted at rest.
            
            ⚙️ Technical Details:
            - Uses ASP.NET Core environment variable configuration (Api__HostUrl, WebUI__HostUrl)
            - Docker User: p2g:p2g (1015:1015) per official P2G documentation
            - API accessible internally at: http://srv-captain--$$cap_appname-api:8080
    displayName: Peloton to Garmin (P2G)
    isOfficial: false
    description: Sync your Peloton workouts to Garmin Connect. Supports Bike, Tread, Rower, Meditation, Strength, and more. Uses environment variables for easy configuration.
    documentation: https://philosowaffle.github.io/peloton-to-garmin/

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions