Kasm on LXC with GPU Passthrough
Kasm Workspaces provides browser-based access to on-demand containerized desktops and applications.
This guide details the steps to set up Kasm Workspaces within an LXC container on Proxmox VE, with GPU passthrough enabled for enhanced performance.
Minimum Hardware Requirements​
To ensure smooth operation of Kasm Workspaces, ensure your system meets these minimum requirements:
- CPU: 2 cores
- Memory: 4GB
- Storage: 50GB (SSD recommended)
- GPU (NVIDIA or AMD)
Step 1: Creating a Privileged LXC Container​
You can create the required LXC container in two ways:
- Using the Proxmox web interface to create a container from a template.
- Using a community-provided helper script for a Debian-based container with Docker pre-installed.
For this guide, we'll use a community-provided helper script.
You can learn more about the script here.
To create the container, run this command in the Proxmox shell and make sure you choose advanced when prompted:
bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/docker.sh)"
Always make sure to check the script is from a trusted source before running it.
-
Run the above command in the Proxmox shell.
-
Follow the on-screen instructions, and choose "Privileged" as the container type when prompted.
Once the container is created:
-
Stop the container.
-
Enable FUSE in the container’s features:
Navigate to LXC -> Options -> Features and check the FUSE option.
Step 2: Configuring GPU Passthrough for LXC​
You can follow this great guide by gma1n on github you check that out here
I hope you have followed the guide above and have a container with FUSE enabled.
Modify the LXC Configuration File​
So before you start your container we need to two more things to the LXC config file.
- A TUN device
- A way to render on the GPU
-
Open the LXC container’s configuration file:
nano /etc/pve/lxc/<id>.conf
Replace
<id>
with your container’s ID. -
Add the following to the end of the file:
# TUN device
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
# GPU rendering
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file -
Save the file and exit the editor.
Start the Container​
Start the container. It should now have a TUN device and GPU rendering capabilities.
Step 3: Installing Kasm Workspaces​
Now lets install Kasm Workspaces.For more information check the Kasm Docs
Download and Install Kasm Workspaces​
-
Run the following commands inside the container:
cd /tmp
curl -O https://kasm-static-content.s3.amazonaws.com/kasm_release_1.16.1.98d6fa.tar.gz
tar -xf kasm_release_1.16.1.98d6fa.tar.gz
sudo bash kasm_release/install.sh -
The installation process will take a few minutes. Upon completion, you’ll see the login credentials printed in the terminal.
-
Access Kasm Workspaces at
https://<your-container-ip>:443
If you forget the credentials, you can recover them using the Admin Recovery Guide
Congratulations!​
You have successfully set up Kasm Workspaces with GPU passthrough on Proxmox VE. You can now enjoy high-performance containerized desktops and applications via your browser.
For further customization or troubleshooting, refer to the Kasm Documentation.