Thank you so much. You are the first person to make an in-depth tutorial showing the current state of Linux thin clients. You are opening up a new set of possibilities for a lot of us. In the next few years someone is going to make a Linux server that just h265s the screen and chucks it across the network like Parsec does on Windows. When that happens I hope you'll teach us all how to netboot it on the latest raspberry pi :)
h265 is a massive pain due to licensing, but h264 is commonly supported in hardware. It's more of a server side encoding issue with CPU load. Both off them are also lossless which don't render text perfectly, hence Parsec is more game focused than business apps. But for now, SPICE and RDP are pretty useful
@@apalrdsadventures You're right about everything but SPICE is still painful as a daily driver when it comes to video, web browsing, and games (maybe I'm doing it wrong). Where as I no longer need a windows PC at my desk because NVIDIA's Game Stream + Moonlight is genuinely great to use. However we make that same experience happen in Linux I will be onboard for.
You could try switching to video mode (in Proxmox, go Options -> SPICE Enhancements in the VM settings) which changes the compression algorithm to a lossy one. SPICE sends 'dirty' regions (where the screen image changed) using lossless compression (similar to PNG) with a focus on keeping text sharp and avoiding introducing artifacts. This is great for normal computer work but bad for video, since it's most concerned with the images being perfect over framerate. It can also push the cursor to the client so it doesn't have to redraw everything when the cursor moves on top of it. RDP (starting in Win10 AFAIK) can do remote h264 decoding (RemoteFX) so at least video playback can be pushed to the client. But that doesn't help games either, and the vast majority of the time it's using a fairly similar approach to SPICE but in its own way.
I stumbled across your channel a week ago, and you have been consistently been putting up extremely insightful content. Keep it up and thank you so much! Looking forward to plenty more!
I spoke to my team lead about your video and how centralizing workspaces within proxmox-vms essentially eliminates edge security. This is even suitable for mobile devices such as laptops when people connect their mobile phones to our company via USB tethering with VPN. Great video! Lots of love and appreciation for your work!
Its the logical step in IT. Servers become virtualized so you can keep the compute and data separate and flexible, now end user devices can get the same treatment
For the record, someone can use ctrl-alt-f2 through F6 to switch to a console to login to that host. You might want to disable all but 1 of those TTY screen leaving on just in case you wish to debug something.
Now we need a local mirror which is used in the base image that we don't pull all over wan everytime we start the machine. However it is amazing as we can guarantee to have everything up to date
@@apalrdsadventures I use squid for caching :) but I commented before I saw you mentioned it and forgot to delete. Probably the quick and dirty would be squid with 7 days retention or similar. Squid is transparent and isn't just limited to that so I guess I would recommend that here and just set an http proxy and probably even run it on your pxe boot vm
Dear apalrdsadventures, Thanks for Sharing Knowledge. Same way i try to do the Firefox kiosk mode opening website link after client system boot. Can you give me the steps, what cmd need to use..
This is Steps done in virtual Box without Storage installation only on Disk on RAM ==================== Root User Execution ===================== # vi /etc/apk/repositories # setup-xorg-base # apk add openbox xterm terminus-font font-noto # adduser client # addgroup client input # addgroup client video # vi /etc/motd Demo System # apk add apk add firefox openbox xorg-server xf86-video-vesa xinit # chmod 666 /dev/tty1 # su - client ==================== client User Execution ===================== $ echo "exec openbox-session" > ~/.xinitrc $ mkdir -p ~/.config/openbox $ vi ~/.config/openbox/autostart firefox --kiosk 100.64.2.1:8080 & $ exit ==================== Root User Execution ===================== # vi /etc/inittab tty1::respawn:/sbin/getty 38400 tty1 => this change to below line tty1::respawn:/sbin/getty -a root 38400 tty1 # vi /etc/profile # end of the line startx # Xorg -configure # mv /root/xorg.conf.new /etc/X11/xorg.conf After this i used a cmd # su - client -> its opened browser, Alt+F4 -> Logout done # ls -a /home/client # rm -rf /home/client/.ash_history # apk del xterm git # lbu include /home # lbu package client.apkovl.tar.gz then i download this file client.apkovl.tar.gz and copied to PXE Server /srv/www changed ownership, netboot.ipxe file i changed thinkclient.apkovl.tar.gz to client.apkovl.tar.gz Again I rebuild using build.sh Finally i went for another Virtual Box getting downloaded. but its not started firefox - Why any reasons - need your help here where i am making mistake..
I am enjoying and learning from your thin client series. Thanks! I have a very basic question that might best be put in the proxmox forum. I run Windows and Linux clients on Proxmox. With Spice guest utilities available for Windows, I am able to open up a Spice console that matches the dimensions of my Windows client resolution without doing anything special. I cannot figure out how to do this with my various Linux clients running Gnome. Are their special utilities for pulling down for different Linux distros that provide something similar to what the Windows Spice guest utilities do with regarding to copy/paste and screen fit on my Windows machine attaching to the Linux VMs?
You can try installing the spice-vdagent package (on Debian derivatives) or see if your package manager has a package with a similar name. AFAIK Ubuntu already installs it, but others may not. There's also the xorg QXL driver, which is definitely included by default in Ubuntu. xf86-video-qxl should be the driver name.
@@apalrdsadventures I installed PopOS and the spice-vdagent package which was not installed by default. Works! Thanks so much! (Ubuntu worked out of the box as you pointed out it would.)
Unfortunately I get a "No space left on device" during execution of the command setup-xorg-base. I suspect because the VM was created without a disk. I'm running alpine-extended-3.19.1
Hello I have been using this for quite a while now, gotten some thinclients and did everything as described everything works exactly as described only problem I have is that I have no audio on the thinclients when connecting a Headset, but when I connect through the VDI Client on a Windows PC it instantly works, do you know how I could solve that Problem? Edit: So installed alsa drivers as listed in alpine linux docu, when i run alsabat from terminal after booting I get the beeping sound so the speakers and drivers work, but no sound coming from virt-viewer to the speakers anybody know how to fix this issue?
Eh maybe. Proxmox doesn't like when nodes come and go, so having a node effectively be destroyed on shutdown is not great. Mounting a root fs for the node off a network would work, but then it's not redundant like the rest of the functions. If you have some storage on the node, you can netboot a Debian installer and then bring up a Proxmox system and add it to the cluster via an automation tool like Ansible.
Hi, thanks for a nice video. If somebody would need remmina to run on this solution then do not forget add 'apk add freerdp' as well. I have wasted some time already.
Great tutorial works like a charm, but I have one question do anybody know if it’s possible to get audio working? Alpine can play the speaker test fine with the Alsa package added to the netboot image. And sound works if I connect to the same VDI from the same PC with the setup from the Debian tutorial
It seems to be a perpetual issue with the Openbox-based tutorials vs the LXDE based ones. I wonder if it's defaulting to something like a headphone jack and not HDMI with no other configuration to control that.
I would like to ask, that even though everything worked ok (booted the image, lanched the client, logged in proxmox,)but when i try to connect to vm says.. unable to connect tographic server. I tried the client from debian and worked fine but from netboot says that.
Usually that's DNS related, or lack of DNS related. The Proxmox server should return a spice file pointing to it's IP or FQDN, but that error means the client can't resolve the IP/FQDN it got from the spice file. The error can also mean the VM is running but not configured for SPICE graphics, or it's an LXC container.
As far as I know, editing the hosts file and then generating the apkovl from a system with the modified hosts file should cause it to be applied. It *should* start with the base system (initrd), then apkovl, then add packages, but the packages shouldn't overwrite the modified apkovl files.
Thank you again... Your instructional videos are very good and helpful... I added a record in my pfsense for my proxmox so now works!!! One last thing i noticed tha it doesnt redirect the usb devices even though they show in vdiclient and sais redirecting usb... But unable to see device in guest. I have configured spice usb port 2.0 in proxmox vm!!!
The USB issue seems to be related to remote-viewer. If you redirect them via the menu on the client I found it works, but 'automatically' does not work
Echoing the other comments here, you're opening up a massive world for me with your in-depth guides. Thank you so much! Please never stop :)
Glad you enjoyed it!
I join the chorus. Well done.
Thank you so much. You are the first person to make an in-depth tutorial showing the current state of Linux thin clients. You are opening up a new set of possibilities for a lot of us.
In the next few years someone is going to make a Linux server that just h265s the screen and chucks it across the network like Parsec does on Windows. When that happens I hope you'll teach us all how to netboot it on the latest raspberry pi :)
h265 is a massive pain due to licensing, but h264 is commonly supported in hardware. It's more of a server side encoding issue with CPU load. Both off them are also lossless which don't render text perfectly, hence Parsec is more game focused than business apps.
But for now, SPICE and RDP are pretty useful
@@apalrdsadventures You're right about everything but SPICE is still painful as a daily driver when it comes to video, web browsing, and games (maybe I'm doing it wrong). Where as I no longer need a windows PC at my desk because NVIDIA's Game Stream + Moonlight is genuinely great to use. However we make that same experience happen in Linux I will be onboard for.
You could try switching to video mode (in Proxmox, go Options -> SPICE Enhancements in the VM settings) which changes the compression algorithm to a lossy one.
SPICE sends 'dirty' regions (where the screen image changed) using lossless compression (similar to PNG) with a focus on keeping text sharp and avoiding introducing artifacts. This is great for normal computer work but bad for video, since it's most concerned with the images being perfect over framerate. It can also push the cursor to the client so it doesn't have to redraw everything when the cursor moves on top of it.
RDP (starting in Win10 AFAIK) can do remote h264 decoding (RemoteFX) so at least video playback can be pushed to the client. But that doesn't help games either, and the vast majority of the time it's using a fairly similar approach to SPICE but in its own way.
@@apalrdsadventures You're awesome man. Thank you.
I stumbled across your channel a week ago, and you have been consistently been putting up extremely insightful content. Keep it up and thank you so much!
Looking forward to plenty more!
Glad you enjoyed it!
I spoke to my team lead about your video and how centralizing workspaces within proxmox-vms essentially eliminates edge security. This is even suitable for mobile devices such as laptops when people connect their mobile phones to our company via USB tethering with VPN. Great video! Lots of love and appreciation for your work!
I can't even imagine how much time this actually took... Thank you... Great video.
This one wasn't terrible actually, but it's based on the work of several previous videos of trial and error. Alpine itself is very easy to use.
Incredible! Congrats for the content!
YAAAASSSS! Netboot all the things my dude! 😎 PXE is cool again
Its the logical step in IT. Servers become virtualized so you can keep the compute and data separate and flexible, now end user devices can get the same treatment
maybe you could place your watermark on a different location. it goes over the common prompt. Keep up the good work. love it
I always do that last minute, so the entire time I'm editing I kinda forget about it. Oops.
For the record, someone can use ctrl-alt-f2 through F6 to switch to a console to login to that host. You might want to disable all but 1 of those TTY screen leaving on just in case you wish to debug something.
Very nice setup!
Thank you, loving the content. 👍
Thank you for this great project. It works great... but no sound is piping thru.
Awesome stuff man, will give this a try at home!
Glad you enjoyed it!
Damn that's awesome! Love it, thank you very much! :)
Glad you enjoyed it!
Now we need a local mirror which is used in the base image that we don't pull all over wan everytime we start the machine. However it is amazing as we can guarantee to have everything up to date
Alpine's wiki has a guide on this, and they provide public rsync servers to make it easier on you. Or you could use nginx as a caching proxy.
@@apalrdsadventures I use squid for caching :) but I commented before I saw you mentioned it and forgot to delete. Probably the quick and dirty would be squid with 7 days retention or similar. Squid is transparent and isn't just limited to that so I guess I would recommend that here and just set an http proxy and probably even run it on your pxe boot vm
Another great video. Thanks
Glad you enjoyed it
so nice, good job
Very Nice job, thank you so much
Have you an issue for UsB sharing ?
Dear apalrdsadventures,
Thanks for Sharing Knowledge.
Same way i try to do the Firefox kiosk mode opening website link after client system boot.
Can you give me the steps, what cmd need to use..
This is Steps done in virtual Box without Storage installation only on Disk on RAM
==================== Root User Execution =====================
# vi /etc/apk/repositories
# setup-xorg-base
# apk add openbox xterm terminus-font font-noto
# adduser client
# addgroup client input
# addgroup client video
# vi /etc/motd
Demo System
# apk add apk add firefox openbox xorg-server xf86-video-vesa xinit
# chmod 666 /dev/tty1
# su - client
==================== client User Execution =====================
$ echo "exec openbox-session" > ~/.xinitrc
$ mkdir -p ~/.config/openbox
$ vi ~/.config/openbox/autostart
firefox --kiosk 100.64.2.1:8080 &
$ exit
==================== Root User Execution =====================
# vi /etc/inittab
tty1::respawn:/sbin/getty 38400 tty1 => this change to below line
tty1::respawn:/sbin/getty -a root 38400 tty1
# vi /etc/profile
# end of the line
startx
# Xorg -configure
# mv /root/xorg.conf.new /etc/X11/xorg.conf
After this i used a cmd # su - client -> its opened browser, Alt+F4 -> Logout done
# ls -a /home/client
# rm -rf /home/client/.ash_history
# apk del xterm git
# lbu include /home
# lbu package client.apkovl.tar.gz
then i download this file client.apkovl.tar.gz and copied to PXE Server /srv/www
changed ownership, netboot.ipxe file i changed thinkclient.apkovl.tar.gz to client.apkovl.tar.gz
Again I rebuild using build.sh
Finally i went for another Virtual Box getting downloaded.
but its not started firefox - Why any reasons - need your help here where i am making mistake..
For client.apkovl.tar,gz file created with forefox startip, my netboot client system after download to /tmp system crashed..
I am enjoying and learning from your thin client series. Thanks! I have a very basic question that might best be put in the proxmox forum. I run Windows and Linux clients on Proxmox. With Spice guest utilities available for Windows, I am able to open up a Spice console that matches the dimensions of my Windows client resolution without doing anything special. I cannot figure out how to do this with my various Linux clients running Gnome. Are their special utilities for pulling down for different Linux distros that provide something similar to what the Windows Spice guest utilities do with regarding to copy/paste and screen fit on my Windows machine attaching to the Linux VMs?
You can try installing the spice-vdagent package (on Debian derivatives) or see if your package manager has a package with a similar name. AFAIK Ubuntu already installs it, but others may not.
There's also the xorg QXL driver, which is definitely included by default in Ubuntu. xf86-video-qxl should be the driver name.
@@apalrdsadventures I installed PopOS and the spice-vdagent package which was not installed by default. Works! Thanks so much! (Ubuntu worked out of the box as you pointed out it would.)
Great to hear! I didn't realize some desktop distros wouldn't have it by default since I only tested with Ubuntu.
20:51 -I will have to look at the other videos before I ask any questions
very good! 👏🏻👍🏻
Thank you! 😃
Unfortunately I get a "No space left on device" during execution of the command setup-xorg-base. I suspect because the VM was created without a disk. I'm running alpine-extended-3.19.1
The thin client image needs to fit entirely in RAM, so all of the packages are installed in a RAM disk.
Hello I have been using this for quite a while now, gotten some thinclients and did everything as described everything works exactly as described only problem I have is that I have no audio on the thinclients when connecting a Headset, but when I connect through the VDI Client on a Windows PC it instantly works, do you know how I could solve that Problem?
Edit: So installed alsa drivers as listed in alpine linux docu, when i run alsabat from terminal after booting I get the beeping sound so the speakers and drivers work, but no sound coming from virt-viewer to the speakers anybody know how to fix this issue?
Do you think you can netboot a proxmox node and autoconfigure it then add it to the cluster? With no human intervention. Is it technically possible?
Eh maybe. Proxmox doesn't like when nodes come and go, so having a node effectively be destroyed on shutdown is not great. Mounting a root fs for the node off a network would work, but then it's not redundant like the rest of the functions.
If you have some storage on the node, you can netboot a Debian installer and then bring up a Proxmox system and add it to the cluster via an automation tool like Ansible.
Hi, thanks for a nice video. If somebody would need remmina to run on this solution then do not forget add 'apk add freerdp' as well. I have wasted some time already.
Great tutorial works like a charm, but I have one question do anybody know if it’s possible to get audio working?
Alpine can play the speaker test fine with the Alsa package added to the netboot image.
And sound works if I connect to the same VDI from the same PC with the setup from the Debian tutorial
It seems to be a perpetual issue with the Openbox-based tutorials vs the LXDE based ones. I wonder if it's defaulting to something like a headphone jack and not HDMI with no other configuration to control that.
how did you add the alsa drivers to the netboot image?
Why didnt we use scp to copy apkovl.tar.gz file to netboot server?
We didn't install any ssh server, as far as I can remember.
I would like to ask, that even though everything worked ok (booted the image, lanched the client, logged in proxmox,)but when i try to connect to vm says.. unable to connect tographic server. I tried the client from debian and worked fine but from netboot says that.
Usually that's DNS related, or lack of DNS related. The Proxmox server should return a spice file pointing to it's IP or FQDN, but that error means the client can't resolve the IP/FQDN it got from the spice file.
The error can also mean the VM is running but not configured for SPICE graphics, or it's an LXC container.
@@apalrdsadventures Yes you are right!!!! is there a way to make /etc/hosts file persistent to apkovl package????
As far as I know, editing the hosts file and then generating the apkovl from a system with the modified hosts file should cause it to be applied. It *should* start with the base system (initrd), then apkovl, then add packages, but the packages shouldn't overwrite the modified apkovl files.
Thank you again... Your instructional videos are very good and helpful... I added a record in my pfsense for my proxmox so now works!!! One last thing i noticed tha it doesnt redirect the usb devices even though they show in vdiclient and sais redirecting usb... But unable to see device in guest. I have configured spice usb port 2.0 in proxmox vm!!!
The USB issue seems to be related to remote-viewer. If you redirect them via the menu on the client I found it works, but 'automatically' does not work
I would like to know, is it necessary to install each vdi under the virtual system under pve?
With this setup, it assumes each system is a VM under PVE with SPICE graphics setup, so graphics is coming out of the hypervisor's virtual display.
@@apalrdsadventures Thank you very much. Can you post your own tutorial on window? I had a problem installing it on windows