Create VNC Server under OEL8

Overview

This is a simple procedure to install a VNC server on OEL 8 servers.

References

Procedure

This is a version of the procedure described in "Oracle Linux: Install the VNC Remote Access Server" for my own use. Thia procedure has adjusted for the video tutorial in "Install and Configure VNC Server on Oracle Linux 8".

Install Packages on Server for Graphical Mode

Run the following command to ensure that the right packages have been installed for the GUI environment:

sudo dnf groupinstall "Server with GUI" -y

If the correct packages for a GUI environment have been installed already, the output should be similar to the following:

[sudo] password for douglas: Oracle Linux 8 BaseOS Latest (x86_64) 9.5 kB/s | 2.7 kB 00:00 Oracle Linux 8 Application Stream (x86_64) 20 kB/s | 2.9 kB 00:00 Latest Unbreakable Enterprise Kernel Release 6 17 kB/s | 2.5 kB 00:00 no group 'dns-server' from environment 'graphical-server-environment' No match for group package "hpijs" Dependencies resolved. ================================================================================ Package Architecture Version Repository Size ================================================================================ Installing Environment Groups: Server with GUI Installing Groups: base-x Container Management Core Fonts GNOME Guest Desktop Agents Hardware Monitoring Utilities Hardware Support Headless Management Internet Browser Multimedia Common NetworkManager submodules Printing Client Server product core Standard Transaction Summary ================================================================================ Complete!

Ensure Server is in Graphical Mode

Run the following command to ensure that the server boots into graphical mode:

sudo systemctl set-default graphical

The expected output is:

[sudo] password for douglas: Removed /etc/systemd/system/default.target. Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.

Reboot the Server

Run the following command to boot the server do that it is now in graphical mode:

sudo reboot

Install the VNC Packages

Run the following command to install the VNC server packages:

sudo dnf install -y tigervnc-server tigervnc-server-module

The output should be similar to the following:

[sudo] password for douglas: Oracle Linux 8 BaseOS Latest (x86_64) 16 kB/s | 2.7 kB 00:00 Oracle Linux 8 Application Stream (x86_64) 22 kB/s | 2.9 kB 00:00 Latest Unbreakable Enterprise Kernel Release 6 18 kB/s | 2.5 kB 00:00 Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: tigervnc-server x86_64 1.9.0-12.el8_1 ol8_appstream 255 k tigervnc-server-module x86_64 1.9.0-12.el8_1 ol8_appstream 254 k Transaction Summary ================================================================================ Install 2 Packages Total download size: 509 k Installed size: 2.6 M Downloading Packages: (1/2): tigervnc-server-module-1.9.0-12.el8_1.x8 355 kB/s | 254 kB 00:00 (2/2): tigervnc-server-1.9.0-12.el8_1.x86_64.rp 343 kB/s | 255 kB 00:00 -------------------------------------------------------------------------------- Total 676 kB/s | 509 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : tigervnc-server-module-1.9.0-12.el8_1.x86_64 1/2 Installing : tigervnc-server-1.9.0-12.el8_1.x86_64 2/2 Running scriptlet: tigervnc-server-1.9.0-12.el8_1.x86_64 2/2 Verifying : tigervnc-server-1.9.0-12.el8_1.x86_64 1/2 Verifying : tigervnc-server-module-1.9.0-12.el8_1.x86_64 2/2 Installed: tigervnc-server-1.9.0-12.el8_1.x86_64 tigervnc-server-module-1.9.0-12.el8_1.x86_64 Complete!

Set the VNC Password for the Current User

Run the following command to set the VNC password for the user running the command:

vncpasswd

The output should be similar to the following:

Password: Verify: Would you like to enter a view-only password (y/n)? n A view-only password is not used

Create the VNC Server Configuration File

Run the following commands to create the VNC server configuration file, /etc/systemd/system/vncserver@.service:

sudo bash cat >/etc/systemd/system/vncserver@.service <<DONE [Unit] Description=Remote Desktop VNC Service After=syslog.target network.target [Service] Type=simple ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' ExecStart=/usr/bin/vncserver_wrapper douglas %i -geometry 1280x1024 ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i >/dev/null 2>&1 || :' [Install] WantedBy=multi-user.target DONE

Set up the VNC service

Reload Systemd as follows:

sudo systemctl daemon-reload

Enable and start the VNC server by using X Server display 1:

sudo systemctl enable --now vncserver@:1.service

If the command works, the following output should be seen:

Created symlink /etc/systemd/system/multi-user.target.wants/vncserver@:1.service → /etc/systemd/system/vncserver@.service.

However if the command fails, the following output may be seen:

Created symlink /etc/systemd/system/multi-user.target.wants/vncserver@:1.service → /etc/systemd/system/vncserver@.service. Job for vncserver@:1.service failed because the control process exited with error code. See "systemctl status vncserver@:1.service" and "journalctl -xe" for details.

In this case, systemctl status vncserver@:1.service showed:

vncserver@:1.service - Remote Desktop VNC Service Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Wed 2020-04-08 06:40:29 EDT; 1min 15s ago Process: 6874 ExecStart=/usr/bin/vncserver -autokill :1 (code=exited, status=1/FAILURE) Process: 6869 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Apr 08 06:40:29 airds.yaocm.id.au systemd[1]: Starting Remote Desktop VNC Service... Apr 08 06:40:29 airds.yaocm.id.au vncserver[6874]: You will require a password to access your desktops. Apr 08 06:40:29 airds.yaocm.id.au vncserver[6874]: getpassword error: Inappropriate ioctl for device Apr 08 06:40:29 airds.yaocm.id.au vncserver[6874]: Password: Apr 08 06:40:29 airds.yaocm.id.au systemd[1]: vncserver@:1.service: Control process exited, code=exited status=1 Apr 08 06:40:29 airds.yaocm.id.au systemd[1]: vncserver@:1.service: Failed with result 'exit-code'. Apr 08 06:40:29 airds.yaocm.id.au systemd[1]: Failed to start Remote Desktop VNC Service.

This error was caused by the vncpasswd command not being run on that server.

The remedy was:

vncpasswd sudo systemctl start vncserver@:1.service

Configure Firewall Rules

NOTE: The video tutorial, "Install and Configure VNC Server on Oracle Linux 8", recommends against opening the firewall to VNC traffic because it is unencrypted, and to use SSH tunneling instead.

Enable the firewall port for the VNC service and reload the default firewall service as follows:

sudo firewall-cmd --zone=public --add-service=vnc-server --permanent sudo firewall-cmd --reload

Both of these commands should return:

success