Skip to main content

Thin Client to Proxmox

Einrichtung

Use eines Thin Clients für Proxmox VMs

Ziel

Diese Anleitung beschreibt, wie Sie einen Thin Client so konfigurieren, dass er beim Start automatisch eine Proxmox VM startet und eine Verbindung zu dieser herstellt. Bei Beendigung der VM wird der Thin Client heruntergefahren.

Voraussetzungen

    Ein installiertes Debian 12-System mit GNOME Installierte Pakete curl und virt-viewer Administratorrechte auf dem Thin Client Anmeldedaten für Proxmox (Benutzername & Passwort)

    Schritte

      SPICE-Client installieren:

      sudo apt-get install virt-viewer
      
      

      Skript zur VM-Steuerung erstellen:this:

      Erstellen Sie ein Skript namens control_vm.sh:

      vim control_vm.sh
      
      
      

      Fügen Sie folgenden Inhalt hinzu (ersetzen Sie die Platzhalter durch Ihre tatsächlichen Daten):

      #!/bin/bash
      set -e
      
      # Set auth options
      PASSWORD='remote1234'
      USERNAME='remote@pve'
      
      # Set VM ID
      VMID="601"
      
      # Set Node
      # This must either be a DNS address or name of the node in the cluster
      NODE="liz"
      
      # Proxy equals node if node is a DNS address
      # Otherwise, you need to set the IP address of the node here
      PROXY="10.11.12.10"
      
      #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 -k --kiosk-quit on-disconnect spiceproxy
      
      if [ $? -eq 0 ]; then
          echo "Die VM wurde beendet. Fahre den Thin Client herunter..."
          sudo shutdown -h now
      else
          echo "Ein Fehler ist aufgetreten."
      fi
      
      

      Skript ausführbar machen:www.apalrd.net/posts/2022/raspi_spice/

      chmod +x control_vm.sh
      
      

      Sudo-Berechtigungen für das Herunterfahren setzen:

      sudo visudo
      
      

      Fügen Sie am Ende der sudoers-Datei folgende Zeile hinzu (ersetzen Sie Ihr_Benutzername durch den entsprechenden Benutzernamen):

      Ihr_Benutzername ALL=NOPASSWD: /sbin/shutdown
      
      

      Automatischer Start des Skripts beim Booten:

      a. add new xsession:

        sudo vim /usr/share/xsessions/remotevm.desktop
        [Desktop Entry]
        Name=Remote VM Session
        Comment=Startet den remote-viewer für die Proxmox VM
        Exec=/home/joscha_mijailovic/control_vm.sh
        TryExec=startx -- /usr/bin/X :0 -nolisten tcp vt7
        Type=Application
        
        
        edit /var/lib/AccountsService/users/joscha_mijailovic
        [User]
        
        Session=remotevm
        Icon=/home/joscha_mijailovic/.face
        SystemAccount=false
        

        Abschluss

        Nach einem Neustart des Thin Clients wird das control_vm.sh-Skript ausgeführt: Es startet die Proxmox VM, stellt eine Verbindung her und fährt den Thin Client herunter, sobald die VM beendet wird.


        VM automatisch beim Systemstart des Thin Clients starten

        Um sicherzustellen, dass Ihre VM automatisch gestartet wird, wenn der Thin Client hochfährt, integrieren Sie die folgenden Schritte in Ihr vorhandenes Skript und den Setup-Prozess:

          Skript zum Starten der VM aktualisieren:

          In Ihrem bestehenden control_vm.sh-Skript haben Sie bereits einen Abschnitt, der die VM steuert. Diesen Abschnitt erweitern Sie wie folgt, um die VM beim Start zu starten:

          # VM starten
          DATA="$(curl -f -s -S -k --data-urlencode "username=$USERNAME" --data-urlencode "password=$PASSWORD" "https://$PROXY:8006/api2/json/access/ticket")"
          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" -X POST "https://$PROXY:8006/api2/json/nodes/$NODE/qemu/$VMID/status/start"
          

          Dieser Codeabschnitt authentifiziert sich bei der Proxmox-API, holt ein Ticket und ein CSRF-Token und sendet dann einen Befehl zum Starten der VM.

          Automatisches Starten des Skripts beim Booten sicherstellen:

          Falls noch nicht geschehen, stellen Sie sicher, dass Ihr control_vm.sh-Skript beim Booten des Thin Clients automatisch gestartet wird. Dies können Sie mit systemd erreichen, wie bereits im vorherigen Abschnitt beschrieben.

          Testen:

          Starten Sie den Thin Client neu, um sicherzustellen, dass alles wie erwartet funktioniert. Die VM sollte automatisch starten, sobald der Thin Client hochfährt.