Skip to content
No description, website, or topics provided.
C++ CMake
Branch: master
Clone or download

Latest commit


Type Name Latest commit message Commit time
Failed to load latest commit information.
Database Fix bug causing new VM settings to not be saved to the database Feb 2, 2020
cmake Fix DLL Hell issue with Windows builds Jan 1, 2020
submodules Add admin button for cancelling votes Feb 18, 2020
tests Fix race condition in Guacamole client Jan 8, 2020
.gitignore Initial commit Feb 1, 2018
.gitmodules Update libvncserver submodule Jan 21, 2020
.travis.yml Include web app in GitHub releases Dec 17, 2019
AdminVirtualMachine.hpp Only kick guests when restricting a VM to registered users only Feb 18, 2020
CMakeLists.txt Fix DLL Hell issue with Windows builds Jan 1, 2020
CapnpMessageFrameBuilder.hpp Initial commit Feb 1, 2018
CaptchaVerifier.hpp Remove SSL logging for captchas Dec 22, 2019
CaseInsensitiveUtils.hpp Add submodules for Boost libraries Jun 30, 2019
CollabVmChannel.hpp Update Jan 11, 2019
CollabVmChatRoom.hpp Add user type to chat messages Jan 8, 2020
CollabVmGuacamoleClient.hpp Recordings Jan 26, 2020
CollabVmServer.hpp Prevent users from joining VMs that are not running Feb 18, 2020
FileUploadReader.hpp Initial commit Feb 1, 2018
GuacamoleClient.hpp Recordings Jan 26, 2020
GuacamoleScreenshot.hpp Recordings Jan 26, 2020
IPData.hpp Limit one vote per IP Feb 18, 2020
LICENSE Initial commit Feb 1, 2018
Main.cpp Change default http root to './web-app/' Dec 17, 2019 Fix AppVeyor badge in Dec 30, 2019
RecordingController.hpp Fix recording options Feb 2, 2020
ReusableSocketMessage.hpp Initial commit Feb 1, 2018
SharedStrandGuard.hpp Initial commit Feb 1, 2018
SocketMessage.hpp Recordings Jan 26, 2020
StrandGuard.hpp Make vote and turn controllers thread-safe Jan 1, 2020
Totp.hpp Fix GCC compilation errors May 29, 2019
TurnController.hpp Recordings Jan 26, 2020
UserChannel.hpp Add per-VM IP data Feb 18, 2020
Utils.hpp Initial commit Feb 1, 2018
VoteController.hpp Add admin button for cancelling votes Feb 18, 2020
WebSocketServer.hpp Get real IP addresses from proxies and load balancers Jan 26, 2020
appveyor.yml Fix Windows builds Jan 21, 2020
capnp-list.hpp Update Jan 11, 2019
file_body.hpp Initial commit Feb 1, 2018


AppVeyor build status Travis build status

This repository contains the necessary files to compile the collab-vm-server. collab-vm-server powers CollabVM and it is what you will use to host it. Compilation instructions are below.

Please note that this is currently an incomplete project. This may not build properly, and it does not have full functionality yet. Please use this repository to build/use the current stable version of collab-vm-server.

Building on Windows

Visual Studio


  • Visual Studio 2019 (any edition)
    • Make sure to install the "Desktop development with C++" workload
  • vcpkg
  1. This repository relies on submodules. To clone both the repo and all of its submodules do:
    git clone --recursive
    Or if you've already cloned it, you can download only the submodules by doing:
    git submodule update --init --recursive
  2. After downloading vcpkg and running bootstrap-vcpkg.bat, use the following command to install all the required dependencies:
    ./vcpkg.exe install --triplet x86-windows cairo libjpeg-turbo sqlite3 libpng openssl pthreads
  3. Open the collab-vm-server folder in Visual Studio 2019, right-click on the CMakeLists.txt file in the Solution Explorer and click "Change CMake Settings" to create a CMakeSettings.json file. Then add a variables property to the configuration so it looks similar to the following:
      "name": "x86-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": "",
      "variables": [
    	  "name": "CMAKE_TOOLCHAIN_FILE",
    	  // Fix this path
    	  "value": "C:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake"
    	  "name": "VCPKG_TARGET_TRIPLET",
    	  "value": "x86-windows"
    	  "name": "OPENSSL_ROOT_DIR",
    	  // Fix this path
    	  "value": "C:\\vcpkg\\installed\\x86-windows"
  4. Verify the correct configuration is selected in the dropdown (e.g. x86-Debug) and build the solution.

Building on Linux and macOS

GCC (minimum version: 8) or Clang (minimum version: 8) are required. Clang must be used on macOS.

Build vcpkg and required packages:

git clone
cd vcpkg
./vcpkg install cairo libjpeg-turbo sqlite3 libpng openssl

Build collab-vm-server:

mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_CXX_COMPILER=/path/to/bin/clang++ -DCMAKE_C_COMPILER=/path/to/bin/clang ..
cmake --build .

Building on anything else

It is currently unknown if this project compiles on any other operating systems. The main focus is Windows and Linux. However, if you can successfully get the collab-vm-server to build on another OS (e.g. MacOS, FreeBSD) then please make a pull request with instructions.

You can’t perform that action at this time.