Skip to main content
Version: Next

Install

Announcement

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 -fsSL 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.

sudo apt-get update
sudo apt-get install tedge-full
info

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 -fsSL https://thin-edge.io/install-services.sh | sh -s

Check out the init systems for more information on the service definitions.

info

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 ManagerFormatDistributions
aptdebDebian, Ubuntu and other debian-based operating systems
yum/dnf/microdnfrpmRHEL, RockyLinux, AlmaLinux, Fedora
zypperrpmopenSUSE
apkapkAlpine 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.

tip

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.

curl -1sLf 'https://dl.cloudsmith.io/public/thinedge/tedge-release/setup.deb.sh' | sudo bash

Running as root

These commands must be run as the root user.

curl -1sLf 'https://dl.cloudsmith.io/public/thinedge/tedge-release/setup.deb.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.

sudo apt-get update
sudo apt-get install 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 -fsSL https://thin-edge.io/install.sh | sh -s -- --package-manager tarball

Package repository hosting

Hosted By: Cloudsmith

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.

LinuxRepository
Debian logoLatest version of 'tedge-full' @ Cloudsmith
RedHat logoLatest version of 'tedge-full' @ Cloudsmith
Alpine logoLatest version of 'tedge-full' @ Cloudsmith

Shell completions

note

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).

bash completion to set the log level
$ tedge connect c8y --log-level <TAB><TAB>
trace debug info warn error
zsh completion to set a specific configuration item
$ 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
fish completion to find a subcommand
$ 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.

sudo apt-get update
sudo apt-get install 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.

~/.bashrc
[ -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
note

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:

~/.zshrc
# 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.

source <(tedge completions bash)

You can add the above line to your shell's profile manually to save you having to run the command each time.