Installation

The QuickHMI server is installed on a Linux distribution via the terminal. Please note the system requirements for Linux!

Open a terminal or connect to your Linux system via SSH access.

The commands to be executed may differ from distribution to distribution. The commands in these instructions are based on Linux Ubuntu.

Installing a different major version

A different major version of QuickHMI can be installed if all occurrences of “Lynx” in the following script excerpts are replaced by the corresponding other version.

If another QuickHMI version is already installed, it must first be uninstalled. The necessary steps are documented here .

New installation *1Update *2Upgrade *3
X1. uninstall the previous version.
Deinstallation
X1. install an openJDK runtime environment. Runtime environments from version 11 are supported. If there is no current package source for version 11 of openjdk in the Linux distribution used, you can use version 17 .
sudo apt-get install openjdk-11-jre
X2. if you want to use the graphical RuntimeManager, install openjfx. Otherwise you can skip this step.
sudo apt-get install openjfx
X3. create a new user quickhmi with the password indi . This user is used to start the QuickHMI server.
username="quickhmi"
password="indi"
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
sudo useradd -m -p $pass $username
XXX4. change to the “/home/quickhmi” folder.
cd /home/quickhmi
XXX5. download the QuickHMI Server package. Instead of using the wget command, you can use the file on another computer beforehand and then copy it to the current directory (/home/quickhmi).
sudo wget https://www.quickhmi.de/linux/lynx/QuickHMIServer.tar
XXX6. Unzip the QuickHMI Server package to /home/quickhmi.
sudo tar -xvf QuickHMIServer.tar

You should now find the following folder structure: /home/quickhmi/QuickHMIServer Lynx
XXX7. Delete the QuickHMI Server package.
sudo rm QuickHMIServer.tar
XX8. set the user quickhmi as the owner of the QuickHMIServer folder.
sudo chown quickhmi "QuickHMIServer Lynx"
XX9. create a symbolic link to the file /home/quickhmi/QuickHMIServer/qhmiRM.sh to /usr/bin/qhmiRM .
sudo ln -sf "/home/quickhmi/QuickHMIServer Lynx/qhmiRM.sh" /usr/bin/qhmiRM
XXX10. copy the folder /home/quickhmi/QuickHMIServer Lynx/usr/ to /usr/ . Use the command cp -a to copy the folder with all its contents.

The / after the source directory is important for this command!

sudo cp -a "QuickHMIServer Lynx/usr/." /usr/
XXX11. You can now delete the /home/quickhmi/QuickHMIServer Lynx/usr folder. It is no longer needed here.
sudo rm -rf "QuickHMIServer Lynx/usr"
XXX12. copy the folder /home/quickhmi/QuickHMIServer Lynx/etc/ to /etc/ . Use the command cp -a to copy the folder with all its contents.

The / after the source directory is important for this command!
sudo cp -a "QuickHMIServer Lynx/etc/." /etc/
XXX13. You can now delete the /home/quickhmi/QuickHMIServer Lynx/etc folder. It is no longer required here.
sudo rm -rf "QuickHMIServer Lynx/etc"

*1 New installation: First installation of QuickHMI.
*2 Update: Installation of another version within the same main version.
*3 Upgrade: Installation of a new major version (e.g. Lynx) after the previously installed major version (e.g. Jellyfish) has been uninstalled.

This completes the installation.

Now switch to the folder for QHMI:

cd /home/quickhmi/QuickHMIServer Lynx

You will also receive a list of all possible commands:

sudo qhmiRM

The possible commands are listed below:

CommandText
-rQuickHMI console runtime manager is started
-rgQuickHMI runtime manager GUI is started
-rdstarts the QuickHMI Server
-sdstops the QuickHMI Server
-iDirect import of a QuickHMI export file into the server. Can be used together with the -instance (instance_ID) argument
-vshows the currently installed version
-u Starts the update process
-startStarts an instance manually. Must be used together with the argument for the instance (-instance instance_ID)
-stopStops an instance. Must be used together with the argument for the instance (-instance instance_ID)

The description of the graphical runtime manager can be found here https://docs.quickhmi.com/dokumentation/runtime-manager/der-quickhmi-runtime-manager/

In the first step, a project should be imported via the export file.

sudo qhmiRM -i Testproject1.qexp

After selecting a running instance or creating a new instance, the project is imported.

The runtime can then be started with :

sudo qhmiRM -rd

ℹ️ Note: Version 15 has not been released yet. These instructions describe the installation from version 15 on and apply once it is available.

Requirements

From version 15 the Linux package ships its own Java runtime. Installing Java or the openjfx package is no longer required.

  • 64-bit Linux with systemd and glibc. Tested on Debian, Ubuntu and Raspberry Pi OS (64-bit). Alpine Linux is not supported, not even as a base for containers.
  • root privileges or sudo.
  • For the graphical Runtime Manager (qhmiRM -rg) a desktop environment or X forwarding. The console Runtime Manager works without either.

First check the architecture of the operating system:

uname -m

The expected output is x86_64 or aarch64. If the command reports armv7l, a 32-bit operating system is running even though the hardware may support 64-bit. This is common on the Raspberry Pi. In that case install a 64-bit operating system first. See also the system requirements.

Setting up the package source (recommended)

Set up the QuickHMI package source once, and from then on you install and update the runtime like any other program on your system. There is nothing left to download by hand, and your system verifies the authenticity and integrity of every package it installs.

sudo install -d -m 0755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/quickhmi-archive-keyring.gpg https://www.indi-an.com/linux/apt/quickhmi-archive-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/quickhmi-archive-keyring.gpg] https://www.indi-an.com/linux/apt stable main" | sudo tee /etc/apt/sources.list.d/quickhmi.list
sudo apt update

After that, a single command installs the runtime. Your system picks the matching architecture on its own, you do not have to specify it.

sudo apt install quickhmi-Version_M

The key you download is the public half of our signing key; it lets your system recognise that the packages come from us and have not been altered on the way. If you want to check it, the following command shows its fingerprint. It must read: 7013 57CF EB09 75E1 1464 C0C6 30F0 32E5 BDA3 3B1F.

gpg --show-keys /etc/apt/keyrings/quickhmi-archive-keyring.gpg

The package source contains the QuickHMI runtime and nothing else. The rest of your system is unaffected, and automatic system updates leave the runtime alone: updating it is always a deliberate decision. How to update later is described on the Updating page.

Without the package source: downloading the package

If the system has no access to our server, or if you prefer not to add the package source, download the matching package once and install it from the file. The following sections describe that route.

Choosing the package

On Debian, Ubuntu and Raspberry Pi OS the .deb package is the standard way. For other distributions with systemd there is the archive (.tar.gz) with an installation script. Both set up the same installation.

Output of uname -m.deb packageArchive
x86_64quickhmi-Version_M_amd64.debquickhmi-Version_M-linux-x64.tar.gz
aarch64quickhmi-Version_M_arm64.debquickhmi-Version_M-linux-aarch64.tar.gz

The file names carry no version number and always provide the current release. Each file comes with a checksum file ending in .sha256. You can also find the packages on the download page. Only the current release is provided; older versions are not offered for download.

Installation with the .deb package

The following commands download the package and its checksum, verify the file and install it. The example is for x86_64; on aarch64 replace amd64 with arm64.

wget https://www.indi-an.com/linux/Version_M/quickhmi-Version_M_amd64.deb
wget https://www.indi-an.com/linux/Version_M/quickhmi-Version_M_amd64.deb.sha256
sha256sum -c quickhmi-Version_M_amd64.deb.sha256
sudo apt install ./quickhmi-Version_M_amd64.deb

The ./ in front of the file name is required, otherwise apt looks for the package in the package sources instead of the current directory. Instead of wget you can also download the files on another computer and copy them to the Linux system.

Installation with the archive

The example is for x86_64; on aarch64 replace x64 with aarch64.

wget https://www.indi-an.com/linux/Version_M/quickhmi-Version_M-linux-x64.tar.gz
wget https://www.indi-an.com/linux/Version_M/quickhmi-Version_M-linux-x64.tar.gz.sha256
sha256sum -c quickhmi-Version_M-linux-x64.tar.gz.sha256
mkdir quickhmi-Version_M
tar xzf quickhmi-Version_M-linux-x64.tar.gz -C quickhmi-Version_M --strip-components=1
cd quickhmi-Version_M
sudo ./install.sh

The installation script checks the architecture, creates the service account, registers the service and finally reports the installed version, the Java version and the paths.

What the installation creates

LocationContent
/opt/quickhmi/Version_MProgram and Java runtime. Replaced on every update, do not make changes here.
/var/lib/quickhmi/Version_MInstances, projects, server.cfg, certificates and your own JDBC drivers under jdbc_driver/user. Preserved on updates.
/var/log/quickhmi/Version_MLog files of the instances.
Service quickhmi-Version_Msystemd service that starts all instances with autostart enabled at boot. Each instance runs as its own service quickhmi-Version_M@<ID>.
Account quickhmiSystem account without password and without shell under which the instances run.
/usr/bin/qhmiRMThe qhmiRM command, available from any directory.

An existing installation of QuickHMI Lynx is left untouched and keeps running in parallel. Projects are not migrated: export the project again with the editor for version 15 and import it as described below. To remove Lynx see Uninstallation.

First steps

Transfer the project export (.qexp) from the editor to the Linux system, for example with scp or WinSCP, and import it into an instance:

sudo qhmiRM -i Testproject1.qexp -instance=1

Without -instance= the import asks for the instance ID. There are no further prompts; new security definitions (users and groups) from the export are applied. Afterwards the instance runs as service quickhmi-Version_M@1 and is reachable on the port configured in the project. To check the state:

systemctl status quickhmi-Version_M@1

qhmiRM commands

All commands require root privileges, run them with sudo. Called without an argument, the command prints an overview:

sudo qhmiRM
CommandEffect
-rStarts the console Runtime Manager.
-rgStarts the graphical Runtime Manager.
-rdStarts the service and with it all instances with autostart enabled.
-sdStops the service and with it all instances.
-i <file.qexp>Imports a project export. Optionally with -instance=<ID> for a specific instance.
-vShows package version, revision and Java version.
-uApplies a pending update from a project export again.
-start -instance=<ID>Starts a single instance.
-stop -instance=<ID>Stops a single instance and disables its autostart.

The graphical Runtime Manager is described under The QuickHMI Runtime Manager.