Nexus VDI
Introduction
Nexus VDI is a VDI (Virtual Desktop Infrastructure) written from scratch in Go and based on Linux/KVM + QEMU.
Components
Nexus VDI is divided into three components:
- Documentation about the inner workings of nexus-server is described here
- The server program (backend) that runs on a server
- Exposes a REST API to manage users, VMs and templates
- Documentation about how to use nexus clients is described here
- The client or end-user program to manage users, VMs and templates
- The client uses REST messages to communicate with
nexus-server
- The client can be run from anywhere (locally or remotely) as long as it can communicate with
nexus-server
- Two clients have been developed so far:
-
nexush
: an interactive command line client, similar to a shell. It is the most user-friendly way to interact withnexus-server
, but it is not suited for scripting -
nexus-cli
: a collection of commands particularly suited to scripting and automated operations
-
- Both clients offer the same commands, functionalities and syntax
- Most commands accept regular expressions so that many VMs can be created/started/stopped/destroyed/etc. at once
- The "vmattach" command allows users to interact with their VM's desktop
- requires
remote-viewer
which is part of the virt-viewer project
- requires
nexus-exam
- A minimalistic graphical application used during live exams
- Doesn't feature any option and only allows a student to connect to her/his running VM
- Its source code resides within the nexus-client codebase despite technically not being a nexus-client
Installation
Instructions on how to build and install nexus-server for development and production use, as well as building clients, are described here.