First, let's install a desktop environment.
I chose xfce, something faster.
$ sudo apt-get install xfce4 xfce4-goodies
Second, let's install one vncserver.
$ sudo apt-get install tightvncserver
Let's configure vncserver.
Start the vncserver, and follow the directions to create a password
$ vncserver
You will require a password to access your desktops.
Password:
Verify:
xauth: file /home/errong_leng/.Xauthority does not exist
New 'X' desktop is vvs:1
Creating default startup script /home/errong_leng/.vnc/xstartup
Starting applications specified in /home/errong_leng/.vnc/xstartup
Log file is /home/errong_leng/.vnc/vvs:1.log
$ cat .vnc/vvs\:1.log
30/06/17 05:51:52 Xvnc version TightVNC-1.3.10
30/06/17 05:51:52 Copyright (C) 2000-2009 TightVNC Group
30/06/17 05:51:52 Copyright (C) 1999 AT&T Laboratories Cambridge
30/06/17 05:51:52 All Rights Reserved.
30/06/17 05:51:52 See http://www.tightvnc.com/ for information on TightVNC
30/06/17 05:51:52 Desktop name 'X' (vvs:1)
30/06/17 05:51:52 Protocol versions supported: 3.3, 3.7, 3.8, 3.7t, 3.8t
30/06/17 05:51:52 Listening for VNC connections on TCP port 5901
Font directory '/usr/share/fonts/X11/75dpi/' not found - ignoring
Font directory '/usr/share/fonts/X11/100dpi/' not found - ignoring
xrdb: No such file or directory
xrdb: can't open file '/home/errong_leng/.Xresources'
As you can see, the TCP port is 5901.
Since I use google cloud compute engine, I have to setup a new firewall rule for this.
Let's verify external IP listen on 5901.
$ nc 146.148.82.191 5901
RFB 003.008
Great! Everything seems ready for our VNC client to connect.
Open your VNC viewer and connect to the IP of your Compute Engine instance on port 5901.
If still not work, try :
$ sudo iptables -F