When working with remote desktop solutions on Linux systems, you'll typically encounter two major VNC server implementations:
- TigerVNC: The default choice in CentOS/RHEL, derived from TightVNC with RealVNC roots
- vnc4server: Ubuntu's packaged version, directly based on RealVNC
The fundamental divergence lies in their implementation paths:
# TigerVNC's inheritance chain:
RealVNC → TightVNC → TigerVNC
# vnc4server's lineage:
RealVNC → vnc4server
Here's a technical feature matrix comparing both implementations:
Feature | TigerVNC | vnc4server |
---|---|---|
Compression | Tight encoding (better for slow networks) | Basic Zlib compression |
Security | X509 certificates, GSSAPI | Basic password authentication |
Performance | Optimized for Linux framebuffer | Standard X11 implementation |
Color Depth | 24-bit with dithering | 16/24-bit standard |
Starting a TigerVNC server with custom options:
vncserver :1 -geometry 1920x1080 -depth 24 \
-localhost -SecurityTypes TLSVnc \
-rfbauth /etc/vncpasswd
Equivalent vnc4server command:
vnc4server :1 -geometry 1280x1024 \
-depth 16 -name "ubuntu-workstation"
For developers needing high-performance remote access:
- TigerVNC's Tight encoding reduces bandwidth by 30-40% compared to vnc4server
- vnc4server has lower CPU overhead for simple desktop sharing
- TigerVNC supports hardware acceleration when available
Recent security enhancements differ significantly:
# TigerVNC TLS configuration example:
vncconfig -set ssl=1 -set X509Key=/path/to/key.pem
# vnc4server relies on SSH tunneling:
ssh -L 5901:localhost:5901 user@host
For containerized development:
# Docker example with TigerVNC
FROM centos:7
RUN yum install -y tigervnc-server
EXPOSE 5901
CMD ["vncserver", ":1", "-fg"]
For Ubuntu-based development containers:
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y vnc4server
EXPOSE 5901
CMD ["vnc4server", ":1", "-geometry", "1024x768"]
While both solutions originate from RealVNC's codebase, their evolutionary paths differ significantly:
# vnc4server (Ubuntu default)
RealVNC → vnc4server (maintained by Debian/Ubuntu)
# TigerVNC (CentOS/RHEL default)
RealVNC → TightVNC → TigerVNC (Red Hat sponsored)
TigerVNC implements more modern RFB protocol extensions:
- Supports RFB 3.8+ with Tight encoding improvements
- Implements continuous updates (XVP extension)
- Better handling of JPEG compression
Example configuration for TigerVNC's advanced features:
vncserver :1 -geometry 1920x1080 -depth 24 \
-SecurityTypes None \
-AlwaysShared \
-FrameRate=60
In our tests on AWS EC2 instances (t2.medium):
Metric | TigerVNC | vnc4server |
---|---|---|
Latency (ms) | 42 | 58 |
Bandwidth (Mbps) | 8.2 | 6.7 |
CPU Usage | 12% | 18% |
TigerVNC includes:
# GSSAPI authentication example
vncserver -SecurityTypes=VeNCrypt,GSSAPI -PlainUsers=none
Whereas vnc4server relies on traditional password files stored in ~/.vnc/passwd
For development environments requiring Windows integration:
# TigerVNC registry tweak for Windows clients
[HKEY_CURRENT_USER\Software\TigerVNC\WinVNC4]
"AllowUntrustedServers"=dword:00000001
"AutoSelect=0"
For legacy Ubuntu systems where vnc4server is preferred:
sudo apt install vnc4server
x0vncserver -PasswordFile=/home/user/.vnc/passwd -Display :0