Run Multiple UserVMs

Preparing the VM directories

To start, ensure your directory structure is set up as follows:

/srv/collabvm/vms
/srv/collabvm/vms/vm1
/srv/collabvm/vms/vm1/config.toml
/srv/collabvm/vms/vm2
/srv/collabvm/vms/vm2/config.toml

Creating and starting the service

Firstly, delete your current CollabVM service. Next, create a template service. You can put the following configuration into /etc/systemd/system/[email protected]

[Unit]
Description=CollabVM VM %i

[Service]
User=collabvm
Group=collabvm
Restart=always
RestartSec=5
Type=simple
WorkingDirectory=/srv/collabvm/vms/%i

Environment=NODE_ENV=production
ExecStart=/bin/node /srv/collabvm/collabvm-1.2.ts/build/index.js #Ensure your server is located at this path

[Install]
WantedBy=multi-user.target

After saving, reload systemd:

sudo systemctl daemon-reload

If everything has been done correctly, you should be able to start your VMs using:

sudo systemctl enable collabvm@vm1
sudo systemctl enable collabvm@vm2
sudo systemctl start collabvm@vm1
sudo systemctl start collabvm@vm2

Final configuration

Ensure that the port and vncPort for each VM differ from each other. Additionally, make sure each node has a unique name.

Finally, add the following location blocks to your nginx configuration file:

location /collab-vm/vm1 {
    include wsproxy_params;
    proxy_pass http://127.0.0.1:6004/; 
}

location /collab-vm/vm2 {
    include wsproxy_params;
    proxy_pass http://127.0.0.1:6005/; 
}

Please be sure to restart nginx after this step:

sudo systemctl restart nginx