Skip to content

Instantly share code, notes, and snippets.

@tomdaley92
Last active March 27, 2023 12:17
Embed
What would you like to do?
Proxmox - SPICE Client setup for MacOS

Proxmox - SPICE client setup for MacOS

  1. Install a working (and compiled) version of virt-viewer. You may view the homebrew package's upstream source on GitHub.

    brew tap jeffreywildman/homebrew-virt-manager
    brew install virt-viewer
  2. Once that's installed should be able make a call remote-viewer with a pve-spice.vv file downloaded from proxmox web interface

    remote-viewer pve-spice.vv

    Check out this useful script for debugging. There are also several other cli tools like this one on GitHub that can be used to test the same sort of thing.

Improving Quality of Life

We want remote-viewer to automatically start and open the session when we double click the VM entry in proxmox. To do that we need to first create a small helper application.

  1. Launch Automator and select Application from the dropdown list, when prompted.

    Screen Shot 2021-07-15 at 1 39 31 PM

  2. Search for shell and drag to the right. The contents:

    /usr/local/bin/remote-viewer "$@"

    Make sure to select as arguments for passing the input. Save as ~/Applications/pve-spice-launcher.app.

    Screen Shot 2021-07-15 at 2 13 01 PM

  3. Locate a pve-spice.vv file and right click, and go to Get Info -> Open With -> Change All, look for the .app file you just made.

    Screen Shot 2022-02-16 at 11 26 22 AM

  4. In Chrome, click on the small arrow on the list of downloads at the bottom, and select "Always open files of this type"

    Screen Shot 2021-07-15 at 2 02 46 PM

  5. If everything is set up correctly you should be able to double-click on the VM in the left pane of Proxmox and remote-viewer should start up and take care of the rest.

    Note: the pve-spice.vv files will be automatically deleted by remote-viewer

    Screen Shot 2021-07-15 at 2 05 57 PM

    Screen Shot 2021-07-15 at 4 42 21 PM

Enjoy!

#!/usr/bin/env bash
set -e
# needs pve-manager >= 3.1-44
usage() {
echo "Usage: $0 [-u <string>] [-p <string>] vmid [node [proxy]]"
echo
echo "-u username. Default root@pam"
echo "-p password. Default ''"
echo
echo "vmid: id for VM"
echo "node: Proxmox cluster node name"
echo "proxy: DNS or IP (use <node> as default)"
exit 1
}
PASSWORD=""
USERNAME=""
while getopts ":u:p:" o; do
case "${o}" in
u)
USERNAME="${OPTARG}"
;;
p)
PASSWORD="${OPTARG}"
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
if [[ -z "$PASSWORD" ]]; then
PASSWORD=""
fi
if [[ -z "$USERNAME" ]]; then
USERNAME='root@pam'
fi
DEFAULTHOST="$(hostname -f)"
# select VM
[[ -z "$1" ]] && usage
VMID="$1"
#[[ -z "$2" ]] && usage
NODE="${2:-$DEFAULTHOST}"
if [[ -z "$3" ]]; then
PROXY="$NODE"
else
PROXY="$3"
fi
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" > $NODE-$VMID.vv
exec remote-viewer $NODE-$VMID.vv
@leachimus
Copy link

Hello everyone!

I think the whole thing no longer works correctly under macOS Ventura. i get the following error:

==> Installing virt-viewer from jeffreywildman/virt-manager
Error: Your Command Line Tools (CLT) does not support macOS 13.
It is either outdated or was modified.
Please update your Command Line Tools (CLT) or delete it if no updates are available.
Update them from Software Update in System Preferences or run:
  softwareupdate --all --install --force

If that doesn't show you any updates, run:
  sudo rm -rf /Library/Developer/CommandLineTools
  sudo xcode-select --install

Alternatively, manually download them from:
  https://developer.apple.com/download/all/.
You should download the Command Line Tools for Xcode 14.1.

Have installed the latest Xcode. Can someone help me?

@leachimus
Copy link

OK, we are getting a little closer to the point now, but now I have this problem.

https://gist.github.com/tomdaley92/789688fc68e77477d468f7b9e59af51c?permalink_comment_id=4272624#gistcomment-4272624

@dedene
Copy link

dedene commented Nov 2, 2022

OK, we are getting a little closer to the point now, but now I have this problem.

https://gist.github.com/tomdaley92/789688fc68e77477d468f7b9e59af51c?permalink_comment_id=4272624#gistcomment-4272624

You can use https://github.com/Damenly/homebrew-virt-manager instead for virt-manager. Works fine under macOS Ventura using the latest Xcode 14.1

@bytemain
Copy link

bytemain commented Nov 9, 2022

use:

brew install damenly/virt-manager/virt-viewer

@TheDragon44
Copy link

I tried the instructions on this page first, and then brew install damenly/virt-manager/virt-viewer

Unfortunately both result in the same error -

Error: virt-viewer: Failed to download resource "virt-viewer"
Download failed: https://virt-manager.org/download/sources/virt-viewer/virt-viewer-11.0.tar.xz

Anyone know how to get around this?

@swhiteh4t
Copy link

I have the same error, the brew command is trying to fetch the package from this domain:
Download failed: https://virt-manager.org/download/sources/virt-viewer/virt-viewer-8.0.tar.gz
where the package is located at:
https://releases.pagure.org/virt-viewer/

I am gonna try an install it manually

@TheDragon44
Copy link

I have the same error, the brew command is trying to fetch the package from this domain: Download failed: https://virt-manager.org/download/sources/virt-viewer/virt-viewer-8.0.tar.gz where the package is located at: https://releases.pagure.org/virt-viewer/

I am gonna try an install it manually

Did you manage to get this working? If so any pointers would be much appreciated

@justinschuldt
Copy link

issue

Looks like the URIs of the virt-manager releases have changed, which has broken all the previously working brew scripts.

The virt-viewer package addresses in virt-viewer.rb now return 404s. They have changed to a new structure, from

https://virt-manager.org/download/sources/virt-viewer/...

to

https://releases.pagure.org/virt-viewer/...

fix

This updated virt-viewer.rb works for me on an M1 mac running macOS Ventura 13.1:

brew tap justinschuldt/homebrew-virt-manager
brew install virt-viewer

https://github.com/justinschuldt/homebrew-virt-manager

fyi @TheDragon44 @swhiteh4t

@fskale
Copy link

fskale commented Mar 4, 2023

Virt-{manager,viewer} and Remote are heavily dependend on various packages.
Remote viewer bottled and then rebuild from source always terminates when building TLS connection (spice and VNC).
I rebuild the whole toolchest from scratch using jhbuild but soon started over and compiled alle the packages using bleeding edge source code. (x86_64 build) There were a lot of bugs, and i patched the source heavily to get compiled under OSX 12.6.
The only thing that doesn't work is the autostart by using a .vv file.
The arguments won't be added to the ARGV so it won't start automatically, but will be added to the connection list: (open -a RemoteViewer.app --args console.vv works !)
I would appreciate to provide the DMG for testing !
It works with OSX 12.6 (X86_64).
The metal integration and multi screen integration works for me (tested using two monitors)
Here the screenshots !
Best Franz

Open with don't provide the ARGV
Bildschirmfoto 2023-03-04 um 14 58 46

Connection list
Bildschirmfoto 2023-03-04 um 14 59 18

Working connection
Bildschirmfoto 2023-03-04 um 15 00 28

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment