====== 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!