====== Linux Terminal Server ======
There are several ways to create a Linux terminal server. This is only one, but it is fairly simple. It utilizes [[https://www.devuan.org/|Devuan]], [[https://xfce.org/|xfce4]] and the [[https://tigervnc.org/|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 [[https://ltsp.org/|Linux Terminal Service Project]] which will give your users their own copy of a virtual server every time they log in.
Have fun!