LTSP Fat Client

Linux Terminal Server Project (LTSP) is a collection of free and open source software that turns a normal GNU/Linux installation into a terminal server allowing many people to simultaneously use the same computer.

Introduction to Fat clients
In contrast to the classic LTSP environment, the connected LTSP clients work as Fat Clients where the desktop environment and all programs run locally on the LTSP client, as in a typical desktop machine. This has the advantages of a classic LTSP environment (updates, users and home directories are managed centrally), without the disadvantages of the same (performance problems with many accessing the LTSP server at the same time or graphic-heavy programs / multimedia).

Preparation
This guide installs and configures LTSP on Ubuntu 16.04 using the LTSP-PNP (Plug and Play) method where chroots are not used and a single-NIC setup with an external DHCP server (e.g. a router) is recommended (but not required) as it uses dnsmasq in proxyDHCP mode.

Update the server and install necessary software required for clients. Check the files /etc/hostname and /etc/hosts are as desired.

Installation and Configuration
Below steps can be followed to install and configure the LTSP server for Fat clients:

1. ltsp-server dnsmasq epoptes epoptes-client ltsp-client resolvconf rsync are the necessary packages and they can be installated with below command -

sudo apt install ltsp-server dnsmasq epoptes epoptes-client ltsp-client resolvconf rsync

2. Once epoptes is installed one must add the server's user (in the example "administrator") to the new epoptes group. This command will do it:

sudo usermod -G epoptes -a administrator

Note that this new membership will only be activated in the next login.

3. Check the file /etc/network/interfaces for possible lines similar to


 * 1) The primary network interface #allow-hotplug eth0 #iface eth0 inet dhcp

If they are not present or they are commented out as above then network-manager will be in control of the network interface which is assumed in this model so go on to step 4.

Otherwise these lines need to be commented out by adding the asterisk symbol as shown above and the config file is saved otherwise step 4 cannot be done. However, the server needs to be rebooted and will render the Internet temporarily unavailable until part (b) of step 4 is done.

So take care to copy down somewhere all of part (b) of step 4 and complete it so the Internet is restored.

4. NetworkManager configuration

We must edit NetworkManager's configuration in two places.

a) Check in /etc/NetworkManager/NetworkManager.conf for the dns= key and comment out the line (b) Launch nm-connection-editor from the command line. After launching: Choose the Wired connection and click Edit. Click on the IPv4 Settings tab. Choose 'Automatic (DHCP) addresses only' instead of just 'Automatic (DHCP)'. In the DNS servers field enter 127.0.0.1 first followed by one or two external DNS servers, separated by spaces (e.g. 127.0.0.1 208.67.222.222 8.8.8.8). Save these settings and close the window.
 * 1) dns=dnsmasq

and then restart Network Manager with

sudo systemctl restart network-manager

5. Set up dnsmasq as a proxy DHCP server

Create a default configuration file for dnsmasq with the command

sudo ltsp-config dnsmasq

Edit this file /etc/dnsmasq.d/ltsp-server-dnsmasq.conf so that local dns caching is activated. Comment out


 * 1) port=0

When working with a server with one nic (only one subnet with the server, all clients and the router) check to see if the line

dhcp-range=x.y.z.0,proxy

corresponds to this subnet. If this is correct comment out the other range line


 * 1) dhcp-range=192.168.67.20,192.168.67.250,8h

If on the other hand the server has two nics be sure to connect the gigabit capable device to the switch with the clients and give that device the static ip 192.168.67.1 and leave both lines active (without the # symbol.)

Thus dnsmasq is the dhcp server for that subnet only.

Then restart dnsmasq with the command

sudo systemctl restart dnsmasq

6. Edit the config file /etc/ltsp/update-kernels.conf to have the uncommented lines

BOOT_METHODS=NBD IPAPPEND=3

7. The version of the kernel running on the server can be determined with the command

uname -r

Note that at the time of writing the kernel was 4.9.0-6-amd64 in 64bit Stretch thus the command is

sudo dpkg-reconfigure linux-image-4.9.0-6-amd64

This reports update-initramfs: Generating /boot/initrd.img-4.9.0-6-amd64 adding the changes above.

8. Once the server has been updated and any additional software has been installed a new client filesystem image must be created in order for the clients to also have these updates. This is the command

sudo ltsp-update-image --cleanup /

This builds the latest squashfs image for nbd in /opt/ltsp/images and puts the latest kernel into /var/lib/tftboot/ltsp/amd64.) It triggers "ltsp-config nbd-server" to create (if needed) the files /etc/nbd-server/conf.d/swap.conf and /etc/nbd-server/conf.d/ltsp_amd64.conf. Check to see if both are there. It also creates /etc/nbd-client.

9. Then, create the default configuration file for the clients with the command

sudo ltsp-config lts.conf

10. Lastly reboot the server so that all changes are active including the user's membership in the group epoptes.