So this project I started when I wanted to run Virtual machines and docker containers on my Linux Home Lab Server. I was searching for good hypervisors but was not able to find one which takes the minimum amount of ram (I had only 4 GB RAM) and provides me functionalities to access and manage my Virtual Machines and containers without the need for running a full hypervisor os install.

This system allows the user to create and manage virtual machines, connect to their display for accessing the GUI or command line and manage their disks.

The system also allows to use a web based terminal to access the system terminal of the server.

The docker module allows the system to manage and create docker containers, view logs and execute commands inside them by using a web based terminal.

This System runs itself in a docker encvironment so you dont need to install any additional software in your system except for libvirt and docker to run it
The project will be opensource when its remaining bugs will be fixed (Hope so by the end of this year)

This system runs completely inside docker so can be easily installed and removed without makeing any more changes to the system. All the components run in seperate docker container and can be replaced by your own custom ones

I host all my projects on my own VPS servers and maintain them and use Docker for deployment. The HTML and CSS for this project was also written by me from scratch. I build responsive sites so they perform properly on all screen sizes

``

Video Demo:

Technologies:

  • KVM for virtual machines.
  • docker-web-console made by me to interact with terminal of docker containers.
  • docker socket.
  • LibVirt for interacting with the VMs.
  • Virsh for executing some VM commands.
  • Django for the backend (Its my first application after I learnt Django)
  • Asyncio
  • Websockets
  • ReactJS Front End web app
  • Docker for Deployment
  • Nginx as a reverse proxy
  • NoVNC
  • WebSockify as a socket to WebSocket relay
  • SQLite for the database
  • TTYD for accessing host terminal (I plan on replacing it with my custom built terminal in python itself).

Features:

  • Modularity in components: The application is built with multiple docker containers interacting with each other and you can replace any of the with your own components (Just need to implement the required API).
  • Allows to create virtual machines which can be any Linux or windows based virtual machine.
  • Allows to manage docker containers.
  • Web based terminals for executing commands on the Host machine or inside docker containers.
  • Create virtual disks for the virtual machines.
  • Access the virtual machine display from the web application itself.
  • Monitor statistics of running virtual machines.
  • Connect to terminal of docker containers to execute commands
  • Virtual Machine Networking ( Limited Support Right now)
  • Upload and manage ISOs from the web application.

Features in the Works:

  • Support for advanced docker features
  • Ability to edit containers
  • Full networking support for virtual machines.
  • Plugin Support
  • Mobile apps