FastX is a platform for creating, managing, and connecting to Virtual Display Sessions (sessions) on remote Linux systems. Multiple systems can be run individually as standalone systems, but the real power comes from when those systems are linked together into a cluster. Clusters allow administrators to centrally manage multiple systems, create single entry points into the cluster event behind a firewall, Load Balance systems to allow even distribution of work, and many other features simplifying and improving the user experience.
Installation
Recommended
- StarNet recommends setting up a Central License Server to manage the licensing in a cluster environment.
Requirements
- FastX activation key
- RHEL 9 or higher (ARM systems require RHEL 10) or Debian Equivalent
- Each Node needs its own $FX_LOCAL_DIR, and $FX_TEMP_DIR
- $FX_LOCAL_DIR may be mounted. Default is /var/fastx-local/.
- $FX_TEMP_DIR must not be mounted. Default is /tmp/.
- Minimum required packages:
- RHEL: xauth perl python3 curl nodejs libfontconfig1 libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev libharfbuzz0b
- Debian: xauth perl python3 curl nodejs fontconfig mesa-libGL-devel mesa-libGLU-devel harfbuzz
- NodeJS 22 or later
- FastX Server
- Download FastX repository installation script
- Debian: apt-get install fastx5-server
- RHEL: dnf install-y fastx5-server
- Download FastX repository installation script
- FastX Transporter
- Debian: apt-get install fastx-nats
- RHEL: dnf install -y fastx-nats
Set up the Head Nodes
These are the nodes that your users will connect to. Typically the License server and the transporter are installed on these nodes. Users may or may not be able to launch sessions on these nodes
# RHEL Systems
sudo dnf install -y fastx5-server fastx-nats
# Debian systems
sudo apt-get install -y fastx5-server fastx-nats
Configure this node to be a Head Node
Copy /etc/fastx/transporter-secret.ini to your compute nodes and restart the server
Set up the FastX Nodess
# RHEL Systems
sudo dnf install -y fastx5-server
# Debian systems
sudo apt-get install -y fastx5-server
Configure this node to be a Compute Node
Copy the /etc/fastx/transporter-secret.ini from the head node and restart the server
Node Configuration
Each node (head or compute) can be configured for different roles.
- Log in to your node as a fastx administrator
- Click on the Admin button (gear icon)
- Click on Webserver > Settings
You can also configure the roles manually by setting up specific services in the SERVICES variable or /etc/fastx/fastx.env
See Cluster Installation Patterns for more advanced setups
Node Types
The configure server dropdown menu has the typical node configurations
In a typical cluster installation
Head Nodes: Use Head Node
Compute Nodes: Use Compute Node


- Standalone Server/All Services — Default Configuration. All Services are installed. Use this on your head nodes if you want to launch sessions on the head nodes
- Head Node — Users can log in, but not launch sessions (typically for cluster head nodes)
- Compute Node — Users launch sessions on these nodes
- Compute Node With Authentication — Users launch sessions on these nodes. (Required if using Gateway Node Without Logins)
- Manager — Rarely Used.
Notes on Services
FastX is divided into a different services that work together within the cluster. Each cluster MUST contain all services for a cluster to function properly, Here is a description of what each service does
- webserver — Runs the http server. Users connect to this server
- manager — Holds the session states and other configuration
- user — Authenticates users and holds user information
- launcher — runs the start command to start sessions, and sessions connect back to this system
The socket and forward services are helper services that allow communication. They are automatically configured if webserver or launcher are set
When configuring using /etc/fastx/fastx.env set SERVICES ro a comma separated value as follow
SERVICES=webserver,manager,user,launcher
Mounting /var/fastx
Nodes with the user service need to be synced to keep the user data stable across the cluster. The simplest solution is to simply NFS mount the directory. There are also programs such as syncthing that can solve this issue
NATS Transporter
The transporter uses the NATS protocol for fast and efficient transport.
The /etc/fastx/nats-server.conf file configures the NATS transporter.
The authorization token in /etc/fastx/nats-server.conf MUST MATCH the token in /etc/fastx/transporter-secret.ini
/etc/fastx/nats-server.conf
Here is a typical setup of /etc/fastx/nats-server.conf
authorization {
token: "$2a$11$PWIFAL8RsWyGI3jVZtO9Nu8.6jOxzxfZo7c/W0eLk017hjgUKWrhy"
}
# Client port of 4222 on all interfaces
port: 4222
authorization {
token: thisisasecret
}
tls {
cert_file: /etc/pki/tls/certs/fedora-self.nats.crt
key_file: /etc/pki/tls/private/fedora-self-key.nats.txt
}
# This is for clustering multiple servers together.
cluster {
# Route connections to be received on any interface on port 6222
port: 6222
# Routes are protected, so need to use them with --routes flag
authorization {
user: ruser
password: T0pS3cr3t
timeout: 2
}
# Routes are actively solicited and connected to from this server.
routes = [
nats://10.211.55.9:6222,
nats://10.211.55.4:6222,
nats://10.211.55.8:6222
]
}
NATS supports clustering and high availability. Edit the /etc/fastx/nats-server.conf to enable clustering according to the configuration documentation.
https://docs.nats.io/running-a-nats-service/configuration/clustering/cluster_config
https://docs.nats.io/running-a-nats-service/configuration/clustering
Cluster nodes
High availability is built in by default. Simply add more cluster nodes that are configured according to the nodes in Cluster Installation Patterns. The services will distribute the load evenly across the HA nodes.
Job Scheduling
Job scheduling is the process of launching a session to be scheduled at a later time by a special job scheduling script. Instead of calling the default start script, the FastX launcher will call a job scheduler template or admin supplied custom script that will use a custom job scheduler to launch the session. The session will show up in a pending state on the user’s UI.
Long Term Storage and Configuration
$FX_CONFIG_DIR: /etc/fastx
The FastX configuration directory is located in /etc/fastx (or set via environment variable $FX_CONFIG_DIR). All files are stored in human readable flat file format. See FastX 5 Configuration
Each cluster member (Cluster Manager or FastX Node) maintains its own configuration directory /etc/fastx. Configuration in this directory is NOT synchronized across the cluster. It is up to the system administrators to maintain configuration.
Typically system admins use configuration management systems like Puppet, Ansible, and Kubernetes ConfigMaps/Secrets to maintain /etc/fastx
$FX_VAR_DIR: /var/fastx
Data that will be made by the FastX Web Server is stored in /var/fastx (or set via environment variable $FX_VAR_DIR). This data include user configuration, logins, and server data.
In a cluster, a FastX Node will write data to both its local /var/fastx as well as upload it to the Cluster Manager to store it in /var/fastx. When reading data, a FastX Node will query the Cluster Manager for the information.
$FX_LOCAL_DIR: /var/fastx-local
Data local to a specific FastX Node is stored in /var/fastx-local This data is private to the system itself and does not need to be shared
$FX_TEMP_DIR: /tmp
Interprocess communication needs a local directory that is available to both the fastx user and the end linux user. Typically this is /tmp.