Epoptes (https://epoptes.org/) is a tools that is useful in a computer lab (a classroom with about 20-30 computers connected in a LAN). It allows the teacher to watch the desktop of the students, to show them his desktop (for demonstrations for example), to help them remotely, etc. However in these times of social distancing the students cannot get into a computer lab. Is it possible to run a computer lab in the cloud, with all the benefits of a LAN based computer lab (teacher can watch what they are doing and help them if needed)?
What it does
It installs a Linux desktop environment (Linux Mint Mate) on a VPS on the cloud. Then each student can connect to it from a browser and login with username and password to his account. The teacher can also login to his account. Then the teacher can start Epoptes, which allows him to see what the students are doing. The teacher can also access remotely the desktop of a student in order to help him, can broadcast his desktop to all the students, etc.
How I built it
I had already built before the scripts for running a Linux desktop on virtual server on the cloud, and accessing it from a browser through Guacamole (http://dashohoxha.fs.al/linux-desktop-in-a-container/). I realized that Epoptes could be installed there as well, and maybe it could work. I tried it and it worked.
Challenges I ran into
With the old version of the Guacamole and the MATE desktop there was a problem with autostart scripts (which are executed automatically when a user logs into account). They didn't run and so the epoptes-client did not start automatically. However when I upgraded to the latest version of Guacamole and the latest version of Linux Mint autostart scripts worked (I don't know which one had the problem, but as long as it was fixed that doesn't matter).
Upgrading however was a bit of a challenge and took me a lot of time to fix the problems along the way.
Accomplishments that I'm proud of
This virtual desktop server is installed with docker and bash scripts that automate almost everything. Taking a few settings from a configuration file, they build up and install everything that is needed. There are also scripts to backup and restore the user account (the backup files are stored outside the docker container, so that it can be rebuilt anytime). This kind of automation hopefully makes it easy for people to install and use this solution.
What I learned
I learned that Epoptes works fine with user accounts in a single computer, it doesn't have to be a LAN. It also works if the client computers connect to the server through the Internet (not just through a LAN network). This makes it a nice tool for a virtual computer lab.
What's next for Virtual Computer Lab
I think that it is possible to arrange the virtual desktop server so that each student works at his laptop at home, and the teacher still can see and access their desktops. One way to make this work could be by creating a ssh-tunnel from the laptop of the student to the server. Making this easy to setup and manage would be the next challenge for this project.