Install
thin-edge.io ❤️ Linux so we now support installing thin-edge.io on any Linux distribution!
Systemd is still the default init system (aka. service manager), however if you don't have Systemd, then it won't be used. You are then free to configure your own service manager to run thin-edge.io how you want, or use one of the community supported packages.
Install/update
The easiest way to get started with thin-edge.io is to use the installation script which will auto detect the installation method appropriate for your Linux distribution. The script will configure the package manager and install thin-edge.io and its dependencies (e.g. mosquitto). If your distribution does not have one of the supported package managers, then the tarball will be used to install thin-edge.io.
To install or update to the latest version, run the following command:
- curl
- wget
curl -fsSL https://thin-edge.io/install.sh | sh -s
wget -O - https://thin-edge.io/install.sh | sh -s
Update using a package manager
thin-edge.io and its components can be updated by running the install.sh script again, or using the Linux package manager on your distribution.
- Debian/Ubuntu
- RHEL/Fedora/RockyLinux
- Alpine
sudo apt-get update
sudo apt-get install tedge-full
sudo dnf install --best tedge-full --refresh
sudo apk update
sudo apk add --no-cache tedge-full
If you have any trouble updating via the package manager, then run the install.sh script again. The install script will install or update the script as well as configure the appropriate package manager for your Linux distribution.
Optional: Linux distributions without Systemd
thin-edge.io uses Systemd by default to run all of its components as background services. If your Linux distribution does not have Systemd installed, then you will also have to run one more additional step.
Run the script below to automatically detect and install the relevant service definitions for the init system provided by your Linux distribution.
- curl
- wget
curl -fsSL https://thin-edge.io/install-services.sh | sh -s
wget -O - https://thin-edge.io/install-services.sh | sh -s
Check out the init systems for more information on the service definitions.
If the script detects that Systemd is installed, then it will not install anything as thin-edge.io comes with Systemd service definitions.
Supported Linux Package Managers
The following Linux Package Managers are supported out-of-the-box. For all other Linux distributions, the tarball (.tar.gz binary) can be used to add the thin-edge.io executables/binaries.



Package Manager | Format | Distributions |
---|---|---|
apt | deb | Debian, Ubuntu and other debian-based operating systems |
yum/dnf/microdnf | rpm | RHEL, RockyLinux, AlmaLinux, Fedora |
zypper | rpm | openSUSE |
apk | apk | Alpine Linux |
- | tarball (*.tar.gz) | All other Linux distributions, e.g. Yocto |
Alternative installation methods
In cases were you would not like to run the automatic install script, you can choose one to run the steps manually. This allows you more control over the process which can be useful if you are experiencing problems with the auto detection used in the install script.
Manual repository setup and installation
The software repositories used by the package managers can be configured using the setup scripts. These scripts are normally executed by the install.sh script in the installation section, however they can also be manually executed if you want more fine-grain control over the process.
If you are having problems setting any of the repositories, check out the Cloudsmith website where they have Set Me Up instructions in additional formats, e.g. manual configuration rather than via the setup.*.sh
script.
Pre-requisites
The instructions require you to have the following tools installed.
- curl
- bash
Setup
Running with sudo
You will need to have sudo
also installed if you want to run these instructions.
- Debian/Ubuntu
- RHEL/Fedora/RockyLinux
- Alpine
curl -1sLf 'https://dl.cloudsmith.io/public/thinedge/tedge-release/setup.deb.sh' | sudo bash
curl -1sLf 'https://dl.cloudsmith.io/public/thinedge/tedge-release/setup.rpm.sh' | sudo bash
curl -1sLf 'https://dl.cloudsmith.io/public/thinedge/tedge-release/setup.alpine.sh' | sudo bash
Running as root
These commands must be run as the root user.
- Debian/Ubuntu
- RHEL/Fedora/RockyLinux
- Alpine
curl -1sLf 'https://dl.cloudsmith.io/public/thinedge/tedge-release/setup.deb.sh' | bash
curl -1sLf 'https://dl.cloudsmith.io/public/thinedge/tedge-release/setup.rpm.sh' | bash
curl -1sLf 'https://dl.cloudsmith.io/public/thinedge/tedge-release/setup.alpine.sh' | bash
Installing and updating using a package manager
Once you have the repository setup, you can install the tedge-full virtual package which will automatically pull in all of the thin-edge.io packages. This makes it easier to install and update in the future, as you only have to type in one package name, tedge-full
.
- Debian/Ubuntu
- RHEL/Fedora/RockyLinux
- Alpine
sudo apt-get update
sudo apt-get install tedge-full
sudo dnf install --best tedge-full --refresh
sudo apk update
sudo apk add --no-cache tedge-full
Install via tarball
You can force the install.sh script to install via the tarball instead of via a package manager. The install script will also take care of the required post installation steps.
To install the thin-edge.io via the tarball run the following command:
- curl
- wget
curl -fsSL https://thin-edge.io/install.sh | sh -s -- --package-manager tarball
wget -O - https://thin-edge.io/install.sh | sh -s -- --package-manager tarball
Package repository hosting
Package repository hosting is graciously provided by Cloudsmith. Cloudsmith is the only fully hosted, cloud-native, universal package management solution, that enables your organization to create, store and share packages in any format, to any place, with total confidence.
The packages can be viewed directly from the Cloudsmith.io website.
Linux | Repository |
---|---|
![]() | |
![]() | |
![]() |
Shell completions
Shell-completions are supported with tedge
>= 1.5.0
To make using the Command Line Interface (CLI) easier, tedge
provides shell completion support (also known as tab-completions). Shell completions allow users to discover commands and configuration directly on the command line without having to check the online documentation.
For all tedge
commands, you can activate the tab completion by pressing <TAB>
twice in quick succession. You will be presented with the available options based on the given the command line's current input.
Before you can use shell completions, you need to enable them first. If you've configured tab completion for other packages already, then you may be able to skip these steps. The following sections include instructions on how to load the completions which are included in the thin-edge.io Linux packages, or how to load the completions at runtime by running the tedge completions <SHELL_TYPE>
command.
Each type of shell (e.g. bash, zsh, fish) offers slightly different shell completion user experiences, where zsh and fish are generally more verbose than bash, so to give you idea what to expect, the following examples show some examples for various shells (where <TAB>
represents pressing the "TAB" button on the keyboard).
$ tedge connect c8y --log-level <TAB><TAB>
trace debug info warn error
$ tedge config set mqtt.client.<TAB><TAB>
mqtt.client.auth.ca_dir -- Path to the directory containing the CA certificates used by MQTT
mqtt.client.auth.ca_file -- Path to the CA certificate used by MQTT clients to use when authenticating the MQTT broker
mqtt.client.auth.cert_file -- Path to the client certificate
mqtt.client.auth.key_file -- Path to the client private key
mqtt.client.host -- The host that the thin-edge MQTT client should connect to
mqtt.client.port -- The port that the thin-edge MQTT client should connect to
$ tedge con<TAB><TAB>
config (Configure Thin Edge) connect (Connect to cloud provider)
Loading completions from Linux packages
The thin-edge.io Linux packages (starting from 1.5.0) will install the shell completion scripts during the package's post installation phase. However, post installation
will only add the completions scripts if it detects the presence of the associated shells (e.g. bash
, zsh
and/or fish
).
Using the completions included in the Linux packages offers a better out of the box experience as some operating systems or shells don't require any setup. If your operating system does not enable completions for you, then follow the instructions for your preferred shell to enable the shell completions.
bash
For bash completions, you will need to install the bash-completion package for your operating system. If you can't find instructions for your operating system, then please consult online resources.
- Debian/Ubuntu
- RHEL/Fedora/RockyLinux
- Alpine
sudo apt-get update
sudo apt-get install bash-completion
sudo dnf install --best bash-completion --refresh
apk add bash-completion
After the bash-completion package is installed, then you will need to edit your shell profile by adding the following snippet, so that when bash shell starts, it will know that it should also load the available tab completions.
[ -f /etc/bash_completion ] && source /etc/bash_completion
Reload your shell profile after making any changes to it. You can reload your shell profile by running:
source ~/.bashrc
If the bash-completion package was not installed at the time thin-edge.io was installed then you can still activate completions as runtime by following these instructions.
zsh
zsh does not require any package dependencies, however you will need to add the following snippet to your zsh profile:
# refresh completions
autoload -U compinit; compinit
# Optional: Improve styling of menu complete
zstyle ':completion:*' menu select
# bind shift+tab to reverse menu complete
zmodload zsh/complist
bindkey -M menuselect '^[[Z' reverse-menu-complete
Reload your shell profile after making any changes to it. You can reload your shell profile by running:
source ~/.zshrc
fish
fish completions should just work out of the box without any additional dependencies or editing your shell profile.
Loading completions at runtime
The shell completions can also be loaded at runtime in your current shell by running one of the following commands associated with your shell. The completions will only be loaded into your current shell's session, so you will need to run the command every time you open a new shell.
- bash
- zsh
- fish
source <(tedge completions bash)
source <(tedge completions zsh)
tedge completions fish | source
You can add the above line to your shell's profile manually to save you having to run the command each time.