Skip to content

Windows

Canvus Server 26.4.0 is Linux-only on the server side --- there is no native Windows server binary. On Windows hosts the three Canvus images (combined, postgres, media) run inside a Linux VM managed by Podman Desktop (WSL2 backend) or Docker Desktop.

Note

For production, deploy on a Linux host. Podman Desktop on Windows is supported for development, evaluation, and test deployments, but WSL2 networking (especially UDP for WebRTC) and resource limits are less predictable than a native Linux server. The Linux container install is the reference deployment.

Supported Windows versions: Windows 10/11 and Windows Server 2019/2022 (64-bit) with WSL2 enabled.

System requirements

  • RAM: 8 GB minimum (16 GB recommended) on the host. Allocate at least 4 GB to the WSL2 VM --- the combined container needs 4 GB minimum itself (see Linux page).
  • 2 CPU cores minimum (4 recommended)
  • 20 GB disk space minimum
  • WSL2 enabled (Podman Desktop handles this automatically on Windows 10/11)
  • Administrator access for installation

Install Podman Desktop

  1. Download the Windows installer from podman-desktop.io/downloads.
  2. Run the installer and follow the prompts.
  3. Podman Desktop enables WSL2 and installs a Podman-optimized distribution automatically.
  4. Launch Podman Desktop from the Start Menu and click Initialize and Start if prompted.

Verify in PowerShell:

podman --version
# Should show: podman version 4.x.x or higher

Install podman-compose

Podman Desktop does not include podman-compose. Choose one:

Option A: Built-in compose (Podman 4.0+, recommended)

podman compose version

If this works, use podman compose (with a space) in place of podman-compose for all commands on this page.

Option B: Install via Python

winget install Python.Python.3.11
# Close and reopen PowerShell to refresh PATH
pip install podman-compose

Docker Desktop alternative

The same images and compose file work with Docker Desktop. Note that Docker Desktop requires a paid subscription for organizations with more than 250 employees or more than \$10M annual revenue. Podman Desktop is recommended to avoid that licensing exposure, but if Docker Desktop is already approved in your environment, nothing prevents you from using it.

Allocate resources to WSL2

Create C:\Users\YourUsername\.wslconfig before you start the containers:

[wsl2]
memory=8GB
processors=4
swap=2GB
localhostForwarding=true

Apply with wsl --shutdown (WSL2 restarts on next use). Allocating less than 4 GB to WSL2 will cause canvus-combined to be OOM-killed.

Login to the container registry

podman login docker.multitaction.com -u canvus-deploy -p gldt-synTX_NnF8LcmnktR1xK

Download the compose file

mkdir C:\canvus-server
cd C:\canvus-server

Invoke-WebRequest -Uri "https://canvus-downloads.multitaction.com/server/podman-compose.yml" -OutFile "podman-compose.yml"

Note

The 26.4.0 compose file deploys three services: canvus (container canvus-combined), postgres (container canvus-postgres), and canvus-media. The media service exposes UDP 40000-40100 for WebRTC; make sure Windows Firewall allows those ports if clients outside the host need video streaming. See the Linux page for the full architecture.

Configure the deployment

Edit podman-compose.yml in Notepad or your preferred text editor. At minimum, change these in the canvus service:

environment:
  CANVUS_EXTERNAL_URL: https://canvus.example.com
  CANVUS_ADMIN_EMAIL: admin@yourcompany.com
  CANVUS_ADMIN_PASSWORD: YourSecurePassword123!
  POSTGRES_PASSWORD: a-strong-database-password

And match the same POSTGRES_PASSWORD in the postgres service.

Note

The compose file uses Linux-style paths (/canvus-data/...). Podman Desktop creates these inside the WSL2 VM automatically. Do not change these to Windows paths.

Start services

cd C:\canvus-server
podman compose -f podman-compose.yml up -d

Verify

podman compose -f podman-compose.yml ps

All three containers (canvus-combined, canvus-postgres, canvus-media) should be running. Open https://localhost in your browser --- the request is served by the web-proxy gateway inside canvus-combined, which serves the unified React web-client directly. Accept the self-signed certificate warning and login with the admin credentials you set above.

Windows-specific notes

Data persistence

Container data lives inside the WSL2 VM at /canvus-data/. To access from Windows Explorer:

\\wsl$\podman-machine-default\canvus-data\

Firewall configuration

Windows Firewall may block incoming connections from other machines:

# Run as Administrator
New-NetFirewallRule -DisplayName "Canvus HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
New-NetFirewallRule -DisplayName "Canvus HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "Canvus WebRTC" -Direction Inbound -Protocol UDP -LocalPort 40000-40100 -Action Allow

Port conflicts

If ports 80/443 are already in use (IIS, Apache):

netstat -ano | findstr :443

Stop the conflicting service, or use unprivileged ports in podman-compose.yml (see the Linux page).

Management

cd C:\canvus-server

# Start / stop / restart
podman compose -f podman-compose.yml up -d
podman compose -f podman-compose.yml stop
podman compose -f podman-compose.yml restart

# View logs
podman compose -f podman-compose.yml logs -f canvus-combined
podman compose -f podman-compose.yml logs -f canvus-media
podman compose -f podman-compose.yml logs -f canvus-postgres

# Update to latest version
podman compose -f podman-compose.yml pull
podman compose -f podman-compose.yml down
podman compose -f podman-compose.yml up -d

Windows Server

For Windows Server Core (no GUI), enable WSL2 and follow the Linux guide from within a WSL2 Ubuntu session:

# Enable WSL2 (requires reboot)
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Restart-Computer

# After reboot
wsl --set-default-version 2
wsl --install -d Ubuntu

Then follow the Linux container install from within the WSL2 Ubuntu session --- that is the canonical deployment guide; the Windows path above is a convenience wrapper only.

Troubleshooting

"Cannot connect to Podman":

podman machine stop
podman machine start

"WSL2 not found":

wsl --status
wsl --set-default-version 2

Container won't start:

podman logs canvus-combined
podman logs canvus-media
podman logs canvus-postgres

WebRTC video not working from external clients:

WSL2 port forwarding for UDP ranges can be unreliable. If clients cannot receive media, the first fallback is to move the deployment to a native Linux host. See Linux troubleshooting for the full WebRTC diagnostic flow.