Skip to content

Worker Node Configuration ​

A worker node is a server that runs a virtualization platform. OpenIDCS connects to worker nodes over the network to manage VMs. This document covers how to prepare each supported worker type.

Quick Overview ​

PlatformDefault PortAuth MethodAuto-install Script
Docker / Podman2376TLS certificatesHostConfig/setups-oci.sh
LXC / LXD8443TLS certificatesHostConfig/setups-lxd.sh
VMware Workstation8697Basic authHostConfig/setups-vmw.ps1
Proxmox VE8006Token / passwordUse Proxmox Web UI
VMware ESXi443Username / passwordEnable in ESXi Web UI
Windows Hyper-V5985 / 5986WinRM Basic / KerberosHostConfig/setups-hyv.ps1
Qingzhou443API KeyApply via the Qingzhou console

📖 For deeper, platform-specific documentation, see the dedicated pages under VM Platforms.

Docker / Podman Worker ​

Auto Install ​

bash
scp HostConfig/setups-oci.sh user@your-server:/tmp/
ssh user@your-server "cd /tmp && sudo bash setups-oci.sh"

The script:

  • Detects the distribution (Ubuntu / Debian / CentOS / RHEL / Rocky / Alma / Fedora / Arch).
  • Installs Docker or Podman.
  • Generates TLS certificates.
  • Creates docker-pub / docker-nat bridges.
  • Opens the firewall.
  • Installs ttyd for the web terminal.

Supported Distributions ​

DistroVersionsPackage Manager
Ubuntu18.04+apt
Debian10+apt
CentOS7 / 8yum / dnf
RHEL7 / 8 / 9yum / dnf
Rocky Linux8 / 9dnf
AlmaLinux8 / 9dnf
Fedora36+dnf
Arch LinuxLatestpacman

Manual Steps ​

  1. Install Docker via the official repository for your distribution.

  2. Generate TLS certs under /etc/docker/certs (CA + server + client).

  3. Configure /etc/docker/daemon.json:

    json
    {
      "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"],
      "tls": true,
      "tlsverify": true,
      "tlscacert": "/etc/docker/certs/ca.pem",
      "tlscert": "/etc/docker/certs/server-cert.pem",
      "tlskey": "/etc/docker/certs/server-key.pem"
    }
  4. Restart Docker and create bridges:

    bash
    sudo docker network create --driver bridge docker-pub
    sudo docker network create --driver bridge docker-nat
  5. Open port 2376 in the firewall.

  6. Copy ca.pem, client-cert.pem, client-key.pem to the master node.

LXC / LXD Worker ​

Auto Install ​

bash
scp HostConfig/setups-lxd.sh user@your-server:/tmp/
ssh user@your-server "cd /tmp && sudo bash setups-lxd.sh"

Manual Steps ​

bash
# 1. Install LXD (snap recommended for latest)
sudo snap install lxd

# 2. Initialize
sudo lxd init     # answer 'yes' to remote access, set trust password

# 3. Remote endpoint
sudo lxc config set core.https_address "[::]:8443"

# 4. Create bridges
sudo lxc network create br-pub  ipv4.address=none ipv4.nat=false
sudo lxc network create br-nat  ipv4.address=10.0.0.1/24 ipv4.nat=true

# 5. Firewall
sudo ufw allow 8443/tcp

Copy client.crt / client.key from /var/snap/lxd/common/config/ (snap) or /var/lib/lxd/ (apt) to the master node.

VMware Workstation Worker ​

Enable the REST API ​

Windows:

batch
"C:\Program Files (x86)\VMware\VMware Workstation\vmrest.exe"

:: As a service
sc create VMwareRESTAPI binPath= "C:\Program Files (x86)\VMware\VMware Workstation\vmrest.exe" start= auto
sc start VMwareRESTAPI

Linux:

bash
sudo systemctl enable vmrest
sudo systemctl start vmrest

On first launch vmrest will prompt you to set a username and password. Then open TCP 8697 in the firewall.

Test:

bash
curl -k -u "admin:password" https://localhost:8697/api/vms

Proxmox VE Worker ​

No extra installation is required — OpenIDCS talks directly to the built-in Proxmox API on port 8006.

  1. In the Proxmox Web UI go to Datacenter → Permissions → API Tokens.
  2. Create a token for user root@pam (or a dedicated user) with the required role.
  3. Provide the API token to OpenIDCS when adding the host.

For deeper setup (cluster, ZFS, firewall), see the Proxmox VE platform page.

VMware ESXi Worker ​

  1. Log in to the ESXi Web Client.
  2. Host → Manage → Services: start TSM-SSH (optional) and make sure hostd is running.
  3. Allow management traffic to TCP 443.
  4. Use root (or another admin account) when adding the host to OpenIDCS.

More details on the ESXi platform page.

Windows Hyper-V Worker ​

  1. Install the Hyper-V role:

    powershell
    Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
  2. Enable WinRM:

    powershell
    Enable-PSRemoting -Force
    winrm quickconfig
    Set-Item WSMan:\localhost\Service\Auth\Basic $true
    Set-Item WSMan:\localhost\Service\AllowUnencrypted $false
  3. Issue a certificate and start the HTTPS listener on port 5986.

  4. Open the firewall for TCP 5986.

More details on the Hyper-V platform page.

Qingzhou Cloud Worker ​

Qingzhou is managed via the vendor API. Apply for an API Key in the Qingzhou console, then add it to OpenIDCS. No local agent is required on the worker side.

Verifying Worker Connectivity ​

Docker ​

bash
docker --tlsverify \
  --tlscacert=./certs/ca.pem \
  --tlscert=./certs/client-cert.pem \
  --tlskey=./certs/client-key.pem \
  -H=tcp://your-server:2376 ps

LXD ​

bash
lxc remote add myserver https://your-server:8443
lxc list myserver:

VMware Workstation ​

bash
curl -k https://your-server:8697/api/vms

Troubleshooting ​

Docker connection refused ​

bash
sudo systemctl status docker
sudo netstat -tlnp | grep 2376
sudo journalctl -u docker -n 50

LXD certificate error ​

bash
sudo lxd init --auto
sudo lxc config trust add client.crt

VMware REST API not responding ​

batch
sc query VMwareRESTAPI
sc stop VMwareRESTAPI && sc start VMwareRESTAPI

Security Recommendations ​

  • Rotate TLS certificates periodically (default validity: 365 days).
  • Restrict firewall rules to the master-node IP only.
  • Never use root for routine operations — create dedicated service accounts.
  • Enable IP whitelists on the master-node .env when the attack surface is small.

Next Steps ​

Released under the AGPLv3 License.