Overview
Instead of a separate Windows machine, NOVOSKY can run the MT5 terminal inside a KVM-accelerated Windows VM managed by Docker. The VM is controlled with a single command and its desktop is accessible from any browser via noVNC, password-protected by Caddy.Prerequisites
- Linux host with KVM enabled (
/dev/kvmmust exist) - Docker and Docker Compose installed
- Ports 80, 443, and
NOVNC_PORT(default 8006) open on the host firewall
Configuration
Add these to your.env before the first make up:
Starting the VM
setup-vm.sh, which:
- Sources
.envto readVNC_PASSand other variables - Generates
docker-compose.override.ymlwith the correct API port mappings - Bcrypt-hashes
VNC_PASSusing the Caddy image and writes a Caddyfile withbasicauth - Starts the
mt5(Windows VM) andcaddycontainers - Waits for the VM health check to pass
setup-vm.sh only updates .env when a managed key (API_TOKEN, NOVNC_PORT) has actually changed. It will not overwrite VNC_PASS or other keys you have set manually.Accessing the desktop
Oncemake up completes, open a browser and go to:
After login you see the full Windows desktop running inside the VM.
Port and network architecture
Themt5 container does not expose port 8006 directly on the host. All external traffic goes through Caddy:
config/terminals.json via docker-compose.override.yml — they bypass Caddy and bind directly on the host.
Stopping and restarting
Changing the noVNC password
- Update
VNC_PASSin.env - Run
make up—setup-vm.shdetects the change, regenerates the Caddyfile with the new hash, and restarts Caddy