# Installing the ThinLinc server

For information on where to find the ThinLinc server software, see Obtaining ThinLinc. For instructions on how to upgrade a pre-existing ThinLinc installation, see Upgrading ThinLinc.

Start by downloading the ThinLinc server, extracting the ZIP file and running the install-server script in the extracted archive’s root directory:

    $ unzip tl-x.y.z-server.zip
    $ cd tl-x.y.z-server
    $ sh ./install-server

install-server will install the ThinLinc server package suitable for your system from the `packages` subdirectory. It will then ask if you want to run ThinLinc setup. Answer yes to this prompt or start ThinLinc setup manually by running /opt/thinlinc/sbin/tl-setup.

Moreover, remember to review the platform-specific notes that apply to your server platform: https://www.cendio.com/thinlinc/docs/platforms/

Note

The ThinLinc server can also be installed and configured non-interactively, see Automated installation for more information.

## ThinLinc setup

ThinLinc setup is responsible for configuring ThinLinc and installing any missing dependencies. When installing ThinLinc on a new machine, ThinLinc setup always needs to be run.

ThinLinc setup will give you the choice to configure ThinLinc as a master or an agent. Selecting master will configure the system as a standalone ThinLinc server, while selecting agent will configure it as an agent node that is part of a load-balanced ThinLinc cluster. If this is the first ThinLinc system you are configuring, select master.

Note

In case you want to redo any of the configuration steps done by ThinLinc setup, you can always re-run it by running `/opt/thinlinc/sbin/tl-setup`.

On SELinux enabled distributions, ThinLinc setup will optionally modify the local system policy. See SELinux enabled distributions for more information.

## Sudo configuration

ThinLinc ships with an array of administration commands. Some of these needs root privileges to run. To use these commands with sudo and not have to specify the entire path to the command, sudo needs to be configured to trust ThinLinc paths. This is achieved by editing sudo’s `secure_path` in `/etc/sudoers` using visudo:

    $ sudo visudo

Add `/opt/thinlinc/bin` and `/opt/thinlinc/sbin` to `secure_path` and save the file.

Example

If this was in `/etc/sudoers` before:

    Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

Then after you add the ThinLinc paths it should be:

    Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/opt/thinlinc/bin:/opt/thinlinc/sbin

## External access behind NAT

As described in ThinLinc architecture, the ThinLinc client first connects to the master machine. The master responds with the IP address or hostname of the agent machine assigned to host the session. The client will then directly connect to this agent machine. This is true in all cases, even when you have a standalone ThinLinc server (where a single machine acts both as the master and agent).

In cases where the agent isn’t directly reachable by the client — for example, if it is behind a NAT router on a private network — specific configuration may be required. See the agent configuration parameter `/vsmagent/agent_hostname` and the Network requirements chapter for further details.

## Next steps

Assuming you have a desktop environment installed alongside the ThinLinc server, you should now be able to connect using either the Native Client or the browser based ThinLinc Web Access using the same credentials as when logging in to your server over SSH. See Choosing a client and Authentication in ThinLinc for further information.

Note

Having issues connecting to your ThinLinc server? Take a look at the Troubleshooting ThinLinc chapter.

You should now have a fully functioning ThinLinc setup. If you want to make additional tweaks to your setup, a few starting points are listed below:

- Installing license files to accommodate more than 10 concurrent users

- Spreading the session load over multiple machines

- Configuring high availability

- Enabling hardware accelerated 3D graphics with VirtualGL