Raspberry Pi als Thinclient

Thinclients sind eine gute Möglichkeit um andere PCs, oder auch VMs auf einem Proxmox Server zu steuern. Mann muss den Thinclient nur hochfahren und er verbindet sich direkt. In diesem Fall geht es um einen Raspberry Pi, der automatisch auf eine Proxmox VM zugreift.

https://youtu.be/bJEcetfmQ9c

  • 00:00 Intro
  • 01:33 SD Karte für den Pi vorbereiten
  • 03:05 Konfiguration der VM
  • 04:15 Proxmox konfigurieren
  • 05:38 Raspberry Pi konfigurieren
  • 10:34 Thinclient Demo
  • 11:01 Outro

SD Karte für den Pi vorbereiten

Als Betriebsystem nehmen wir das Raspberry Pi OS Lite, es hat zwar keine grafische Oberfläche, genau das wollen wir aber, am Ende ändern wir das noch.

Dafür nutzen wir den Raspberry Pi Imager: https://www.raspberrypi.com/software/

VM konfigurieren

Vorraussetzung ist der QEMU-Guest-Agent: https://pve.proxmox.com/wiki/Qemu-guest-agent

Als erstes müssen wir als Anzeige einmal „SPICE“ nehmen:

und danach noch eine beliebe Anzahl an SPICE USB Ports (die Anzahl an verfügbaren Ports, die ihr durchreichen könnt):

Proxmox konfigurieren

Als erstes müssen wir im Bereich „Rechenzentrum“ einen Benutzer mit der „Proxmox VE Authentification“ Domäne erstellen:

Dann unter Rollen eine Rolle mit den Berechtigungen „VM.Console & VM.PowerMmgt“

Unter Rechte müssen wir dann ein neues Benuterrecht für die VM erstellen (VM für den Thinclient, Thinclient-Nutzer, Thinclient-Rolle):

Raspberry Pi konfigurieren:

Sobald das OS installiert ist, installieren wir Openbox, ein Windows Manager der genau für sowas gedacht ist:

sudo apt install xserver-xorg x11-xserver-utils xinit openbox

Danach installieren wir dann den virt-viewer:

sudo apt install virt-viewer

Dann eine „thinclient.sh“ Datei erstellen:

nano thinclient.sh

und das einfügen (Passende Daten einfügen(auth options, VM ID, 1. NODE, PROXY)):

#!/bin/bash
set -e

# Set auth options
PASSWORD='YOUR_PASSWORD_FOR_THE_THINCLIENT_USER'
USERNAME='YOUR_THINCLIENT_USER@pve'

# Set VM ID
VMID="YOUR_VM_ID"

# Set Node
# This must either be a DNS address or name of the node in the cluster
NODE="pve"

# Proxy equals node if node is a DNS address
# Otherwise, you need to set the IP address of the node here
PROXY="IP_OF_YOUR_PROXMOX_SERVER"

#The rest of the script from Proxmox
NODE="${NODE%%\.*}"

DATA="$(curl -f -s -S -k --data-urlencode "username=$USERNAME" --data-urlencode "password=$PASSWORD" "https://$PROXY:8006/api2/json/access/ticket")"

echo "AUTH OK"

TICKET="${DATA//\"/}"
TICKET="${TICKET##*ticket:}"
TICKET="${TICKET%%,*}"
TICKET="${TICKET%%\}*}"

CSRF="${DATA//\"/}"
CSRF="${CSRF##*CSRFPreventionToken:}"
CSRF="${CSRF%%,*}"
CSRF="${CSRF%%\}*}"

curl -f -s -S -k -b "PVEAuthCookie=$TICKET" -H "CSRFPreventionToken: $CSRF" "https://$PROXY:8006/api2/spiceconfig/nodes/$NODE/qemu/$VMID/spiceproxy" -d "proxy=$PROXY" > spiceproxy

#Launch remote-viewer with spiceproxy file, in kiosk mode, quit on disconnect
#The run loop will get a new ticket and launch us again if we disconnect
exec remote-viewer -f spiceproxy

Die Datei dann speichern dann diesen Befehl ausführen um das Skript ausführbar zu machen(es kommt kein Output):

chmod +x thinclient.sh

Dann müssen wir Openbox noch konfigurieren:

sudo nano /etc/xdg/openbox/autostart

und dann die Datei leeren und das einfügen:

#Allow exit of X server with ctrl+alt+backspace
#If you don't want to let the user terminate/restart, leave this out
#You can always `killall xinit` via SSH to return to a terminal
setxkbmap -option terminate:ctrl_alt_bksp

#Start the shell script we already wrote in our home directory
#Runloop restarts the thin client (new access token, new config file)
#if the session is terminated (i.e the VM is inaccessible or restarts)
#User will see a black screen with a cursor during this process
while true
do
    ~/thinclient.sh
done

Das dann auch wieder speichern und als letztes müssen wir noch eine Zeile im bash_profile hinzufügen:

sudo nano .bash_profile

und das einfügen:

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx —

Das dann auch wieder speichern und den Pi neu starten.

Newsletter, um nichts mehr zu verpassen…


Beitrag veröffentlicht

in

von

Schlagwörter:

Kommentare