Skip to content

Instantly share code, notes, and snippets.

@indyfromoz
Last active May 27, 2024 09:05
Show Gist options
  • Save indyfromoz/739cd53d47b91ba1d3b540ab53b1f46c to your computer and use it in GitHub Desktop.
Save indyfromoz/739cd53d47b91ba1d3b540ab53b1f46c to your computer and use it in GitHub Desktop.
VNC Server setup on Ubuntu 22.04 LTS

Setup

Install TigerVNC -

$ sudo apt install tigervnc-standalone-server

Configure VNC Server by running

$ vncserver

This will setup a password to access the server through a remote session.

Create new /etc/vnc directory -

$ sudo mkdir /etc/vnc

Create a new file /etc/vnc/startup with these lines -

#!/bin/sh

test x"$SHELL" = x"" && SHELL=/bin/bash
test x"$1"     = x"" && set -- default

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

vncconfig -iconic &
"$SHELL" -l << EOF
export XDG_SESSION_TYPE=x11
export GNOME_SHELL_SESSION_MODE=ubuntu
dbus-launch --exit-with-session gnome-session --session=ubuntu
EOF
vncserver -kill $DISPLAY

Make the /etc/vnc/xstartup file executable -

$ sudo chmod +x /etc/vnc/xstartup

Create/add this file ~/.vnc/xstartup with the following contents -

#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

Make the file executable -

$ chmod +x ~/.vnc/xstartup

Create a new service file to configure VNC Server to startup as a service on boot -

$ sudo vi /etc/systemd/system/vncserver@service

Add the following to the contents of the newly created file -

[Unit]
Description=Start TigerVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=someuser
Group=someuser
PAMName=login
WorkingDirectory=/home/someuser

PIDFile=/home/someuser/.vnc/%H:590%i.pid
ExecStartPre=-/bin/sh -c "/usr/bin/vncserver -kill :%i > /dev/null 2>&1"
ExecStart=/usr/bin/vncserver -fg -depth 24 -geometry 1280x800 -localhost no :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Update the permissions of the newly created file with

$ sudo chmod +x /etc/systemd/system/vncserver@service

Reload the daemons so that it can load the new VNC service -

$ sudo systemctl deamon-reload

Enable the VNC service so that it loads on boot -

sudo systemctl enable vncserver@1.service

Kill any existing VNC servers and start the service -

$ vncserver -kill :*
$ sudo systemctl start vncserver@1

Check the status of the service with -

$ sudo systemctl status vncserver@1

Alternative to using a service

Add a new crontab by running

$ crontab -e

and adding

@reboot /usr/bin/vncserver -fg -depth 24 -geometry 1920x1080 -localhost no :1 &

References -

  1. https://www.nodinrogers.com/post/2021-11-15-connecting-to-ubuntu-via-vnc-default-wm/
  2. https://askubuntu.com/questions/1159513/unable-to-connect-through-vnc
  3. https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-22-04
  4. https://acloudguru.com/hands-on-labs/configuring-a-host-firewall-on-ubuntu-using-ufw
@alfredojaramillo
Copy link

alfredojaramillo commented May 12, 2024 via email

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