Skip to main content

QNAP NAS setup

Install the coaching platform on your QNAP NAS and access it from any browser on your network: phone, tablet, or computer.

Prerequisites

  • A QNAP NAS with an Intel or AMD processor (x86_64) and at least 2 GB RAM
  • QTS 5.1 or later
  • Container Station installed from the App Center
  • Your licence key from the purchase confirmation email
ARM NAS models not supported

The coaching platform image is built for x86_64 (amd64) only. ARM-based QNAP models (e.g. TS-x28A, TS-x33 series) are not supported.

1. Prepare a data folder

Before creating the container, create a folder for the coaching platform's data. Using a shared folder lets you browse and back up the data from any computer on your network.

  1. Open File Station on your NAS
  2. Navigate to any shared folder you can access from your computer (e.g. your home folder, Downloads, or a dedicated share)
  3. Create a new folder called coach-data

Remember which shared folder you chose. You'll select it in step 2.

2. Create the container

Select the image

  1. Open Container Station > Containers > Create
  2. Leave Registry set to Docker Hub
  3. In the Image field, type muppit/muppitify-coach-server:latest
  4. Tick Try pulling the image from the registry before creating the container
  5. Click Next

Configure the container

  1. Change Name from the auto-generated name to coach
  2. Restart policy should already be set to Unless Stopped
  3. Under Publish network ports, enter 3000 in the Host field (the Container field is already 3000)
  4. Click Advanced Settings

Add the data folder

  1. In Advanced Settings, click Storage in the left sidebar
  2. Click the dropdown arrow next to Add Volume and select Bind Mount Host Path
  3. Click the yellow folder icon next to Host to open the folder picker
  4. Navigate to the coach-data folder you created in step 1 and select it
  5. In the Container field, type /data
  6. Leave the mode set to RW (read-write)
  7. Delete the empty Volume/Container row above by clicking its trash icon
Can't find your folder?

The folder picker only shows existing folders. You cannot create new ones from here. If your folder isn't visible, go back to File Station and create it first, then click the refresh icon in the picker.

Don't use container-station-data

The container-station-data folder inside the Container shared folder is Container Station's internal data. Don't store your app data there.

Reduce browser warnings (optional)

By default, the app generates a self-signed certificate with generic SANs. You can add your NAS's hostname and IP so the certificate matches how you access it, which reduces browser warnings.

  1. Click Environment in the left sidebar
  2. Add a new variable:
    • Name: EXTRA_SANS
    • Value: DNS:your-nas-hostname,IP:your-nas-ip (e.g. DNS:nas.local,IP:192.168.1.50)

If you skip this step, the app still works, but you'll see an extra certificate warning on first visit.

Enable automatic updates

  1. Click Labels in the left sidebar
  2. Click Add and enter:
    • Name: com.centurylinklabs.watchtower.enable
    • Value: true

This label tells the Watchtower container (set up next) that it's allowed to update this container.

Save advanced settings

  1. Click Apply to save all advanced settings and return to the container creation screen

Finish

  1. Click Next to review the summary
  2. Click Finish

The container will start automatically. The first launch takes a minute or two while the app initialises.

Set up Watchtower (automatic updates)

Watchtower is a lightweight container that checks for new coaching platform images once per day and updates the coach container automatically. Your data is preserved across updates.

  1. Go to Container Station > Applications > Create

  2. Paste the following YAML:

    services:
    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
  3. Click Create

Watchtower only updates containers with the com.centurylinklabs.watchtower.enable label, so it won't touch other containers on your NAS.

Alternative: docker-compose

If you're comfortable with SSH or the Container Station Applications tab, you can deploy both containers with a single YAML file instead of the manual steps above.

  1. Find the system path to the coach-data folder you created in step 1. SSH into your NAS and run:

    find /share -type d -name coach-data 2>/dev/null

    This returns something like /share/CACHEDEV1_DATA/homes/admin/coach-data.

  2. Open Container Station > Applications > Create, or create a docker-compose.yml file via SSH.

  3. Paste the following YAML, replacing the volume path with the result from step 1:

    services:
    coach:
    image: muppit/muppitify-coach-server:latest
    container_name: coach
    restart: unless-stopped
    ports:
    - "3000:3000"
    volumes:
    - /share/CACHEDEV1_DATA/homes/admin/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
  4. Click Create (Container Station) or run docker compose up -d (SSH).

To add the optional EXTRA_SANS environment variable for reduced certificate warnings, add an environment section to the coach service:

    environment:
- EXTRA_SANS=DNS:your-nas-hostname,IP:your-nas-ip

Then continue with step 3: Access the app.

3. Access the app

Open a browser on any device connected to your network and go to:

https://NAS-IP:3000

Replace NAS-IP with your NAS's IP address or hostname (e.g. https://192.168.1.50:3000).

Your browser will show a certificate warning on first visit. This is expected. The app generates a self-signed certificate for secure local access, the same way your QTS admin page works. Accept the warning once per device.

Finding your NAS IP

Open Qfinder Pro on your computer or check Control Panel > Network & Virtual Switch > Interfaces on the NAS.

Choosing a different port

If port 3000 is already in use, change the host port in the port mapping. For example, host 3001 → container 3000 makes the app available at https://NAS-IP:3001.

4. Setup wizard

On first launch, the setup wizard guides you through:

  1. Admin password. Choose a password to protect your server. You'll use this to sign in from any device on your network.
  2. Licence activation. Enter your licence key from the purchase email.
  3. Your profile. Enter your name and email address. This links you as the coach for your sessions.
  4. Cloudflare Tunnel (optional). Paste your tunnel token if you want a public domain for Zoom webhooks or remote access. WAF rules must be configured in Cloudflare first (see step 5). Skip this if you only access the app on your local network.
  5. Domain configuration (optional). Enter your public domain (e.g. coach.yourdomain.com).
  6. Zoom credentials (optional). Enter your Zoom OAuth app credentials for automatic recording staging when meetings end.
  7. Complete. You're ready to use the coaching platform.

All settings can be changed later from the Settings page.

5. Set up a public domain (optional)

If you want Zoom webhooks or access from outside your network, you need a Cloudflare Tunnel. The tunnel connector runs inside the coaching platform container, so you do not need to install anything else on your NAS.

  1. Go to Cloudflare Zero Trust and sign in or create a free account
  2. Navigate to Networks > Connectors > Create a tunnel
  3. Choose Cloudflared as the connector and name it (e.g. muppitify-coach)
  4. On the install screen, ignore the installation commands. Copy only the tunnel token (the long string starting with eyJ)
  5. Add a public hostname:
    • Subdomain: your preferred subdomain (e.g. coach)
    • Domain: select your Cloudflare domain
    • Service type: HTTP
    • URL: localhost:3000
  6. Click Complete setup
  7. In the coaching platform, go to Settings > Domain & Tunnel, paste the token and click Save
  8. Enter your domain in the Public domain field, click Test, then Save

The tunnel connector runs inside the same container, so localhost:3000 is correct regardless of your NAS port mapping.

WAF rules required before connecting

The coaching platform automatically stops the tunnel if WAF rules are not detected on your public domain. You must create the WAF rule in Cloudflare before pasting your tunnel token. See Secure the tunnel in the Cloudflare Tunnel guide for the rule configuration and Bot Fight Mode instructions.

Updating

If you set up Watchtower during installation, updates happen automatically. Watchtower checks for new versions once per day, pulls the new image, recreates the coach container, and removes the old image. Your data is preserved.

To check update activity, open Container Station > Containers > click watchtower > Logs.

Manual update

If you didn't set up Watchtower, you can update manually:

  1. Open Container Station > Containers
  2. Stop the coach container
  3. Go to Images, find muppit/muppitify-coach-server, and click Pull to download the latest version
  4. Go back to Containers, remove the old coach container
  5. Recreate it with the same settings (name, port, volume, restart policy)

Your data is stored in the folder you chose during setup and persists across updates.

Backup and restore

Backup

Your data is stored in the shared folder you selected when creating the container (e.g. coach-data). You can back it up like any other folder on your NAS:

  • File Station: Browse to your coach-data folder and download or copy it
  • From your computer: Access it over the network via SMB (e.g. smb://NAS-IP/YourShare/coach-data on Mac)
  • Hybrid Backup Sync: Add the coach-data folder to a backup job (local, cloud, or remote NAS)

Stop the container before backing up for a consistent snapshot.

Restore

  1. Stop the coach container in Container Station
  2. In File Station, replace the contents of your coach-data folder with the backup
  3. Start the container

Troubleshooting

Container won't start

Open Container Station > click the coach container > Logs tab to see error messages. Common causes:

  • The data folder doesn't exist or was moved. Check the bind mount path in the container settings
  • Insufficient memory. Ensure at least 2 GB RAM is available

Port already in use

QNAP reserves ports 8080 and 443 for QTS, but 3000 is usually free. If another service is using it, change the host port mapping to a different number (e.g. 3001) and access the app at https://NAS-IP:3001.

Certificate warning in browser

This is expected. The app generates a self-signed certificate for encrypted local access. Accept the warning once per browser. It's the same type of warning you see when accessing the QTS admin page over HTTPS.

To reduce warnings, add an EXTRA_SANS environment variable to the container with your NAS's hostname and IP (see step 16 above). The certificate auto-regenerates on the next restart when SANs change.

Image pull fails

  • Check your NAS has internet access
  • Ensure you're using an x86_64 NAS model (ARM is not supported)