Table of Contents

Linux Terminal Server

There are several ways to create a Linux terminal server. This is only one, but it is fairly simple. It utilizes Devuan, xfce4 and the TigerVNC Server.

Pro's: Simple to set up for a few users. Each user has their own VNC port. With TigerVNC, VNC session automatically resizes.

Con's: Difficult to maintain for more than 5-10 users, as you must assign each user a separate VNC port.

Do a base install, with GUI

Do a standard Devuan install. When you are on the Software Selection screen, choose Devuan desktop environment, Xfce, SSH server and standard system utilities.

Set up

Install Packages

Install lightdm, xinetd and tigervnc server (may already be installed)

apt install lightdm xinetd tigervnc-standalone-server  tigervnc-viewer

During install, it will ask which to use, slim or lightdm. Choose lightdm.

Also, tigervnc-viewer is not required, but I use it a lot on my terminal servers.

Configure lightdm and xinetd

Edit the file /etc/lightdm/lightdm.conf, setting the following values to enable the XDMCP Server. This entails just removing the leading pound signs from the existing conf and changing false to true

[XDMCPServer]
enabled=true
port=177

Create a file /etc/xinetd.d/vnc with the following contents.

service baseline
{
   disabled    = no
   socket_type = stream
   protocol    = tcp
   wait        = yes
   user        = nobody
   server      = /usr/bin/Xvnc
   server_args = -inetd -once -query localhost -geometry 1024x768 -depth 16 securitytypes=none -MaxIdleTime=14400
   type        = UNLISTED
   port        = 5950
}

service user1
{
   disabled    = no
   socket_type = stream
   protocol    = tcp
   wait        = yes
   user        = nobody
   server      = /usr/bin/Xvnc
   server_args = -inetd -once -query localhost -geometry 1920x1080 -depth 16 securitytypes=none -MaxIdleTime=14400
   type        = UNLISTED
   port        = 5951
}

You can create as many of these stanzas as you like. The main thing is making sure each service name is unique, and the port associated is also. Feel free to change server_args to match your default, but if you are using the tightvnc viewer to make the connection, you can modify the connection at will.

Also, I start my ports at some weird number. VNC defaults to 5900, but I'm making the base 5950 in this example. That all but guarantees I will not conflict if I'm using port forwarding on the workstation to get someplace else.

Restart

I'm sure there is some set of steps I can go through to reset slim to lightdm, and I know you can tell xinetd to reset with

service xinetd reload

, but I'm lazy and just reboot the whole machine. Less time and you won't miss anything.

Test

Make a connection with the command

vncviewer 192.168.1.1:5950

, where 192.168.1.1 is changed to the IP of your server (or the DNS name). Assuming tigervnc is your viewer, you can copy/paste between your workstation and the terminal server, etc…

Going from here

Add users to the terminal server the normal way (adduser as root), then modify /etc/xinetd.d/vnc, adding a new stanza with a new port and service name, then telling the user to use that.

Also, note that the parameters I documented here are not anywhere near the full range of parameters the server accepts. See https://tigervnc.org/doc/Xvnc.html for a detailed list of available options, plus a section on how to integrate with inet.d (which I modified to use with xinet.d). The documentation is excellent, albeit a little technical.

Remember, this is just one way of doing it. You can vary what I've done here by not using the stanza's the way I did, or you can go whole hog and use the real Linux Terminal Service Project which will give your users their own copy of a virtual server every time they log in.

Have fun!