====== Gui on a Headless VPS ======
If you wish to run a gui application on a virtual private server (vps) you have two choices.
The first one doesn't count - it's painful. That's running X with a virtual frame buffer for the display. Something like Xvfb. It's just too slow. It is also fairly resource heavy.
The better bet is to use a vnc server such as tigervnc-server on the VPS and a vnc client on your local system.
You will want to install a very light weight desktop such as fluxbox, a terminal, and whatever gui app that you really want to run, in my case it was firefox. You can install a full desktop environment if you like but I really only wanted to be able to run firefox.
On the vps as root...
pkg install tigervnc-server fluxbox xfce4-terminal firefox
As your user on the vps...
cd ~
mkdir .vnc
cd .vnc
vncpasswd passwd
echo "geometry=1900x1000" > config
echo "localhost" >> config
echo "AlwaysShared" >> config
echo "#!/bin/sh" > xstartup
echo "exec fluxbox" >> xstartup
chmod u+x xstartup
Now you should be ready to go if you have a local vnc client all setup. I would recommend tigervnc just to keep things consistent.
From you local client
# we will tunnel the vnc connection through ssh
ssh -L 5901:localhost:5901 user@vps
# after you connect run vncserver
# -autokill will shutdown vnc after xstartup finishes (usually)
vncserver -autokill
You will get a message about it running the xstartup script we created and where the log file is located.
Now with your local vnc client you should be able to connect to localhost:5901. You will be prompted for the password you configured above.
If you don't like the default fluxbox menu you can change it in ~/.fluxbox/menu and reload the config.
And off you go.