Skip to main content

Server Edition setup

Run the coaching platform on Windows or Linux within a Docker container then use any browser to access from any device on your local network. The Server Edition has been optimised for mobile devices, plus it includes Zoom webhook support for automatic recording staging when meetings end.

Prerequisites

  • Docker installed. See Install Docker if you don't have it yet
  • Requires Windows 10 (build 19045 or later), Windows 11 or Linux
  • An Intel or AMD processor (64-bit). ARM-based machines are not supported
  • Your licence key from the purchase confirmation email

Docker ready for Server Edition to be installed: Docker no containers

macOS

The Server Edition may run on macOS via Docker Desktop. This is tested but not officially supported.

1. Start the server

Create a docker-compose.yml file:

services:
coach:
image: muppit/muppitify-coach-server:latest
container_name: coach
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- coach-data:/data
labels:
- "com.centurylinklabs.watchtower.enable=true"

watchtower:
image: nickfedor/watchtower
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --label-enable --interval 86400 --cleanup

volumes:
coach-data:

Then start the platform:

docker compose up -d

Example, Mac M-Series:

[+] up 25/27
[+] up 27/27. Pulled 12.0s
✔ Image m... Pulled 12.0s
✔ Network... Created 0.0s
✔ Contain... Started 0.3s
✔ Contain... Started 0.3sa ! coach
The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested 0.0s

Watchtower checks for new coaching platform images once per day and updates the container automatically. It only touches containers with the watchtower label, so it's safe alongside other Docker containers on the same machine.

Docker with Server Edition installed: Docker no containers

Alternative: quick start with docker run

If you prefer a single command without automatic updates:

docker run -d --restart unless-stopped -p 3000:3000 -v coach-data:/data --name coach muppit/muppitify-coach-server:latest

The first start takes a minute or two to pull the image. Once running, open https://localhost:3000 in your browser.

Your browser will show a certificate warning on first visit. This is expected because the server generates a self-signed certificate for encrypted local access. See Certificate trust below to permanently remove this warning.

Choosing a port

If port 3000 is already in use on your machine, change the host port. In docker-compose, change "3000:3000" to "3001:3000". With docker run, use -p 3001:3000. The app will be available at https://localhost:3001. The second number (3000) is the internal container port and must stay the same.

2. Setup wizard

On first launch, the setup wizard guides you through:

  1. Certificate trust. Download and import the server's TLS certificate into your OS trust store (see details below). You can skip this step, but the browser will show recurring "Not Secure" warnings
  2. Admin password. Choose a password to protect your server (you'll use this to sign in from any device)
  3. Licence activation. Enter your licence key from the purchase email
  4. Your profile. Enter your name and email (links you as the coach for your sessions)
  5. Cloudflare Tunnel (optional). Paste your tunnel token if you want a public domain. WAF rules must be configured in Cloudflare first (see step 3)
  6. Domain configuration (optional). Enter your public domain (e.g. coach.yourdomain.com)
  7. Zoom credentials (optional). Enter your Zoom OAuth app credentials for webhook-based recording staging
  8. Complete. You're ready to use the coaching platform

All settings can be changed later from the Settings page.

Certificate trust

The server generates a self-signed TLS certificate so all traffic between your browser and the server is encrypted, even on your local network. Browsers don't trust self-signed certificates by default, which causes a "Your connection is not private" warning. Chrome's temporary "Proceed anyway" exception expires periodically, which can interrupt your session with recurring security warnings.

The permanent fix is to import the certificate into your operating system's trust store. The setup wizard prompts you to do this on first launch. You can also download the certificate at any time from Settings > Domain & Tunnel > Download Certificate.

macOS

  1. Download the certificate from the setup wizard or Settings
  2. Open the downloaded .pem file (this opens Keychain Access)
  3. Find Muppitify Coaching Platform in the list and double-click it
  4. Expand Trust and set "When using this certificate" to Always Trust
  5. Close the window and enter your Mac password when prompted
  6. Refresh the browser page

Windows

  1. Download the certificate from the setup wizard or Settings
  2. Double-click the downloaded .pem file
  3. Select Install Certificate
  4. Choose Local Machine and click Next
  5. Select Place all certificates in the following store, click Browse, and choose Trusted Root Certification Authorities
  6. Click Next, then Finish
  7. Refresh the browser page
Cloudflare Tunnel

If you access the server through a Cloudflare Tunnel, Cloudflare provides a trusted certificate automatically. Certificate trust is only needed for direct LAN access.

Updating

If you used docker-compose with Watchtower (recommended), updates happen automatically once per day. To check update activity:

docker logs watchtower

Manual update

If you used docker-compose without Watchtower:

docker compose pull
docker compose up -d

If you used docker run:

docker pull muppit/muppitify-coach-server:latest
docker stop coach && docker rm coach
docker run -d --restart unless-stopped -p 3000:3000 -v coach-data:/data --name coach muppit/muppitify-coach-server:latest

Your data is stored in the Docker volume and persists across updates.

Backup and restore

Backup

Your data lives in the coach-data Docker volume. To create a backup:

docker run --rm -v coach-data:/data -v $(pwd):/backup alpine tar czf /backup/coach-backup.tar.gz -C /data .

Restore

docker run --rm -v coach-data:/data -v $(pwd):/backup alpine sh -c "cd /data && tar xzf /backup/coach-backup.tar.gz"

Exporting data from desktop to server

You can export data from Desktop Edition to the Server Edition:

  1. From Desktop Edition navigate to Settings > Data > Export. Save the zip file
  2. From Server Edition navigate to Settings > Data > Import. Select the zip file

Troubleshooting

Certificate warning keeps appearing

If Chrome shows "Your connection is not private" repeatedly, the temporary certificate exception has expired. Import the certificate into your OS trust store for a permanent fix — see Certificate trust above.

Licence activation fails

  • Ensure the server has internet access
  • Check that you haven't exceeded the 2-device limit
  • If migrating from desktop, deactivate the desktop licence first (Settings > Licensing > Deactivate)

Container won't start

  • Check logs: docker logs coach
  • Ensure the /data volume is writable
  • Verify the image can be pulled: docker pull muppit/muppitify-coach-server:latest

Port already in use

If you see Bind for 0.0.0.0:3000 failed: port is already allocated, another service is using port 3000. Use a different host port:

docker run -d --restart unless-stopped -p 3001:3000 -v coach-data:/data --name coach muppit/muppitify-coach-server:latest

Then access the app at https://localhost:3001 and set the local port to 3001 in Settings > Domain & Tunnel.