User Tools

Site Tools


unix:linux:debian:terminalserver

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
unix:linux:debian:terminalserver [2024/07/22 22:48] – created rodolicounix:linux:debian:terminalserver [2024/07/23 00:59] (current) rodolico
Line 2: Line 2:
  
 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. 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)
 +<code bash>apt install lightdm xinetd tigervnc-standalone-server  tigervnc-viewer
 +</code>
 +
 +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//
 +<code>
 +[XDMCPServer]
 +enabled=true
 +port=177
 +</code>
 +
 +Create a file **/etc/xinetd.d/vnc** with the following contents.
 +<code>
 +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
 +}
 +</code>
 +
 +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 <code bash>service xinetd reload</code>, 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 <code bash>vncviewer 192.168.1.1:5950</code>, 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!
unix/linux/debian/terminalserver.1721706499.txt.gz · Last modified: 2024/07/22 22:48 by rodolico