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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions