In this project, I explore thin client software, and set up a Raspberry Pi to act as a thin client. This is a multi-part project, follow along below for each sub-project.

Raspberry Pi SPICE Thin Client

The first project in this series creates a Raspberry Pi Thin Client which is permanently bound to a specific VM in Proxmox, and boots directly into the thin client session. You would use this when you have a 1:1 relationship between clients and VMs, such as a computer lab. When the user sits down at the client, we’re trying hard to keep them from doing anything at all on the local system, and channeling their work over the network to be performed by the virtual machine.

Using a Raspberry Pi as a Thin Client for Proxmox VMs

Adding USB Redirection to the Thin Client

The next project in this series explores USB redirection, and passing USB devices such as flash drives from the client to the guest virtual machine. This wasn’t completely successful, as auto redirection didn’t work properly, but hopefully this gives you a bit of a guide on making this work as you expect.

USB Pass Through for the Raspberry Pi Thin Client

Login Screen for multiple Thin Client sessions

In this project, I add a login screen, allowing users to log in to the local system, with certain users automatically launching thin client sessions instead of a desktop environment. This project is more useful when you want to give users access to one of many virtual environments, possibly with password protection for some. We still don’t dynamically allocate VMs or anything like that, but we’re working closer to the ideal scenario of a ‘virtual computer lab’ where you can choose the type of machine you need when you log in.

Choose a Thin Client Session Graphically

PVE-VDIClient - A Python Graphical VDI Client for Proxmox

For the previous episode (see above), I setup a multi-user thin client where each user account was connected to a specific virtual machine. This is great, but if you have a lot of thin clients you might not want to create a ton of VMs and might instead want each user in the system to have one or more VMs. Well, Josh Patten has written a Python-based GUI to select thin clients which you have access to, and in this episode I turn his project into a Raspberry Pi (or Debian) appliance. This is even closer to my goal of a virtual computer lab, even if the administrator has to individually allocate VMs for users.

PVE-VDIClient - A Python Graphical VDI Client for Proxmox

Setting up a Netboot (PXE) Server for Alpine Linux

While not strictly a thin client, this video is important since I’m going to use this netboot server going forward for my netbooted thin client projects. So, stay tuned for the second part of this video where I netboot PVE-VDIClient!

Setting up a Netboot (PXE) Server for Alpine Linux