Deploy a node
A node is a managed service for pipelines and storage.
Install a node
Start at app.tenzir.com and click Add in the nodes pane. Then select your platform.
Docker
We provide Docker images and a Docker Compose file for a container setup. Install a node as follows:
- Enter a name for your node and click the download button to obtain the
docker-compose.NODE.yaml
configuration file whereNODE
is the name you entered for your node. - Run
Edit the Docker Compose file and change environment variables to adjust the configuration.
Linux
We offer a native deployment on various Linux distributions. Install a node as follows:
- Enter a name for your node and click the download button to obtain a
platform.yaml
configuration file. - Move the
platform.yaml
to<sysconfdir>/tenzir/plugin/platform.yaml
so that the node can find it during startup where<sysconfdir>
might be/etc
. See the configuration files documentation for more options. - Run our installer to install a binary package on any Linux distribution:
The installer script asks for confirmation before performing the installation. If you prefer a manual installation you can also perform the installer steps yourself.
- Debian
- RPM-based (RedHat, OpenSUSE, Fedora)
- Nix
- Any
Download the latest Debian package and install it via
dpkg
:
You can uninstall the Tenzir package as follows:
Use purge instead of remove if you also want to delete the state directory and leave no trace:
Download the latest RPM package and install it via
rpm
:
Use our flake.nix
:
Install Tenzir by adding github:tenzir/tenzir/stable
to your flake inputs, or
use your preferred method to include third-party modules on classic NixOS.
Download a tarball with our static binary for all Linux
distributions and unpack it into /opt/tenzir
:
We also offer prebuilt statically linked binaries for every Git commit to the
main
branch.
macOS
Please use Docker with Rosetta until we offer a native package.
Start a node
You can skip this step if you use Docker because docker compose up
already starts a node for you.
Run the tenzir-node
executable to start a node:
_____ _____ _ _ ________ ____
|_ _| ____| \ | |__ /_ _| _ \
| | | _| | \| | / / | || |_) |
| | | |___| |\ |/ /_ | || _ <
|_| |_____|_| \_/____|___|_| \_\
v4.0.0-rc6-0-gf193b51f1f
Visit https://app.tenzir.com to get started.
[16:50:26.741] node listens for node-to-node connections on tcp://127.0.0.1:5158
[16:50:26.982] node connected to platform via wss://ws.tenzir.app:443/production
This will spawn a blocking process that listens by default for node-to-node
connections on the TCP endpoint 127.0.0.1:5158
. Select a different endpoint
via the tenzir.endpoint
option, e.g., bind to an IPv6 address:
Set tenzir.endpoint
to false
to disable the endpoint, making the node
exclusively accessible through the Tenzir Platform. This effectively prevents
connections from other tenzir
or tenzir-node
processes.
Stop a node
There exist two ways stop a server:
- Hit CTRL+C in the same TTY where you ran
tenzir-node
. - Send the process a SIGINT or SIGTERM signal, e.g., via
pkill -2 tenzir-node
.
Sending the process a SIGTERM is the same as hitting CTRL+C.
Automate the deployment
Use systemd or Ansible to automate the deployment of a node.
systemd
The Tenzir package bundles a systemd service unit under
<extraction_path>/lib/systemd/system/tenzir-node.service
. The service is
sandboxed and runs with limited privileges.
Prepare the host system
Please note that all subsequent commands require root
privileges. The service
requires a user and group called tenzir
. You can create them as follows.
Once the user exists, you should create the directory for Tenzir's persistent
data and change the permissions such that it is owned by the new tenzir
user:
Configure the unit
Locate the lines beginning with ExecStart=
and ExecStop=
at the bottom
of the [Service]
section in the unit file. Depending on your installation path
you might need to change the location of the tenzir
binary.
ExecStart=/path/to/tenzir start
In case your Tenzir deployment needs elevated privileges, e.g., to capture packets, you can provide them as follows:
Then link the unit file to your systemd search path:
To have the service start up automatically on system boot, enable
it via
systemd
. Otherwise, just start
it to run it immediately.
Ansible
The Ansible role for Tenzir allows for easy integration of Tenzir into
existing Ansible setups. The role uses either the Tenzir Debian package or
the tarball installation method depending on which is appropriate for the
target environment. The role definition is in the
ansible/roles/tenzir
directory of the Tenzir
repository. You need a local copy of this directory so you can use it in your
playbook.
Example
This example playbook shows how to run a Tenzir service on the machine
example_tenzir_server
:
Variables
tenzir_config_dir
(required)
A path to directory containing a tenzir.yaml
relative to the playbook.
tenzir_read_write_paths
A list of paths that Tenzir shall be granted access to in addition to its own state and log directories.
tenzir_archive
A tarball of Tenzir structured like those that can be downloaded from the
GitHub Releases Page. This is used
for target distributions that are not based on the apt
package manager.
tenzir_debian_package
A Debian package (.deb
). This package is used for Debian and Debian based
Linux distributions.