UserVM Handbook
Welcome to the official guide on setting up a UserVM.
Prerequisites
You'll need:
- A machine with decent specs (8GB of RAM and a modern CPU, probably)
- A Linux distribution; You can pick any mainstream distro, for the purposes of this guide I recommend either Debian/Devuan or Arch/Artix. I recommend the OpenRC versions (Devuan/Artix) but that's just preference, pick what you're comfortable with. Yes, Ubuntu will work, it's terrible though
- Basic knowledge of how computers and Linux systems work. We aren't going to hold your hand, you need to be comfortable with a command line
- A few hours
Compiling the server
Install Git
First up make sure you have git installed:
sudo pacman -S --needed git # Arch
sudo apt install git # Debian
Prepare the server
Now let's clone the source. This is assuming you're in your home directory but you can clone it wherever
git clone https://github.com/computernewb/collabvm-1.2.ts.git
cd collabvm-1.2.ts
Next, we need to install Node.js, as well as the server dependencies. First, node:
sudo apt install npm nodejs # Debian
sudo pacman --needed -S npm nodejs # Arch
Then install dependencies
npm i
Finally, build the server
npm run build
Set up your VM
Now is a good time to get your VM set up. Currently, the only supported hypervisor is QEMU. We have many guides on this wiki for setting up different OSes in QEMU, check them out here. Here are some ideas to make your VM interesting:
- A funny wallpaper
- Development software (Visual Studio, etc.)
- Some games
- Some harmless malware (for the love of god no GDI rapists)
Configuration
Now we need to fill out the config file for your VM. Copy config.example.toml to config.toml, and open it in an editor.
Config value | Explanation |
---|---|
host | Host IP for the server to bind to. 99% of the time this will be 127.0.0.1 on proxied instances and 0.0.0.0 on non-proxied (see below) |
port | Port for your server to bind to. This must be different for each VM you host, and cannot be the same as any other server running on your system (see output of ss -tuln to see what ports are used) |