Skip to content

Installation

Catena Streaming Engine installation consists of the following stages:

  1. Preparing the Kubernetes orchestrator (using k3s as an example)
  2. Preparing the environment inside the running Kubernetes cluster
  3. Installing Catena SE

Catena SE is designed to run on Kubernetes. This architectural choice enables systems that can survive the failure of any server in your cluster.

Installation requirements

  • One or more servers running Ubuntu 24.04 to install the full streaming stack

Installing Kubernetes on the primary server

Run the command on the primary server.

curl -sfL https://flussonic.ru/doc/catena-se/install.sh | sh -s - kube --control-ip 192.168.0.2

--control-ip — internal IP address of the server (use when it has more than one interface). This is the address other nodes will use to connect. Optional.

--public-ip — public IP address of the server for connecting to Kubernetes from outside. You can omit it if you will only access via VPN. Optional.

You will see output similar to:

# curl -sfL https://flussonic.ru/doc/catena-se/install.sh | sh -s - kube --public-ip 1.2.3.4
Installing k3s server on this host (visible as 192.168.0.2)
Token will be stored in /var/lib/rancher/k3s/server/node-token (copy to agent hosts for join)
[INFO]  Finding release for channel stable
[INFO]  Using v1.34.4+k3s1 as release
...
Writing k3s.yaml to /root/k3s.yaml ...
Waiting for k3s API to be ready ...
NAME        STATUS     ROLES    AGE   VERSION
streamer3   NotReady   <none>   0s    v1.34.4+k3s1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11929  100 11929    0     0  57359      0 --:--:-- --:--:-- --:--:-- 57628
[WARNING] Could not find git. It is required for plugin installation.
Helm v4.1.1 is already latest
Multus manifest written to /var/lib/rancher/k3s/server/manifests/multus.yaml

Next: export KUBECONFIG=/root/k3s.yaml  (or run from this dir), then sh gateway

Next, install the web server and related components:

curl -sfL https://flussonic.ru/doc/catena-se/install.sh | sh -s - gateway
root@streamer3:~# curl -sfL https://flussonic.ru/doc/catena-se/install.sh | sh -s - gateway
Installing cert-manager (HelmChart manifest) ...
Release "cert-manager" does not exist. Installing it now.
Pulled: quay.io/jetstack/charts/cert-manager:1.19.3
Digest: sha256:c6edad39343c88a8f0ca4df93ee8ce1d049bffaffead3f325bbcb6df3358432f
NAME: cert-manager
LAST DEPLOYED: Sun Feb 15 13:50:01 2026
NAMESPACE: cert-manager
STATUS: deployed
...
https://cert-manager.io/docs/usage/ingress/
Waiting for cert-manager to be ready ...
...
Installing Envoy Gateway (HelmChart manifest) ...
Pulled: docker.io/envoyproxy/gateway-helm:1.7.0
Digest: sha256:fdc01017304bc676fb7097d1fe8ceda5cc1c9673bf1c01a7576898623b3310f7
NAME: eg
LAST DEPLOYED: Sun Feb 15 13:52:25 2026
NAMESPACE: envoy-gateway-system
STATUS: deployed
..
To get more details, please visit https://gateway.envoyproxy.io and https://github.com/envoyproxy/gateway.
Waiting for Envoy Gateway to be ready ...

If you see messages like these, it is not critical:

Waiting for cert-manager to be ready ...
error: timed out waiting for the condition on pods/cert-manager-6c46b7bb4-jlvrj

Installation may simply take longer than expected.

If something goes wrong, remove the existing installation before retrying:

sudo k3s-uninstall.sh

Installation configuration

This section describes how to run Catena SE on a single server without a load balancer and without TLS.

For this stage you need the license key and the node name.

To find the node name on the server:

# kubectl get nodes
NAME        STATUS   ROLES           AGE   VERSION
streamer3   Ready    control-plane   14m   v1.34.4+k3s1

Next, create the file catena-se.yaml on the target server:

license: "my-license-key"

streamers:
  hosts:
    - node: streamer3

What should you configure in this file?

  • Replace my-license-key with your license key from your account
  • For each streamer in the cluster, set streamer3 to that node's name from kubectl get nodes

Now install the application:

curl -sfL https://flussonic.ru/doc/catena-se/install.sh | sh -s - app --values catena-se.yaml

You will see output similar to:

root@streamer3:~# curl -sfL https://flussonic.ru/doc/catena-se/install.sh | sh -s - app --values catena-se.yaml
Applying central-operator ...
namespace/central-operator-system created
customresourcedefinition.apiextensions.k8s.io/centrals.media.flussonic.com created
serviceaccount/central-operator-controller-manager created
role.rbac.authorization.k8s.io/central-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/central-operator-manager-role created
clusterrole.rbac.authorization.k8s.io/central-operator-metrics-reader created
...
service/media-server-operator-controller-manager-metrics-service created
deployment.apps/media-server-operator-controller-manager created
pod/media-server-operator-controller-manager-7d566d4b7c-8wlnd condition met
Installing Catena SE helm chart (--values catena-se.yaml) ...
Release "tv" does not exist. Installing it now.
Pulled: docker.io/flussonic/catena-se:26.2.3
Digest: sha256:62d58a19ccecb18171e702921821d91fa476b5916701748fb73d9db618d416c5
NAME: tv
LAST DEPLOYED: Sun Feb 15 14:05:26 2026
NAMESPACE: catena-se
STATUS: deployed
REVISION: 1
DESCRIPTION: Install complete
NOTES:
Your login is `root`

Your current Catena SE password can be extracted with following command:

kubectl -n catena-se get secret license -o jsonpath='{.data.edit_auth}' | base64 --decode | awk -F : '{print $2}'

Now run that command to get the password:

# kubectl -n catena-se get secret license -o jsonpath='{.data.edit_auth}' | base64 --decode | awk -F : '{print $2}'
6CytVA00aFYpvQ

Verifying installation

Go to http://your-installation

Enter the login and password from the previous step

Updating application configuration

If you have changed the installation configuration file, you can update the installation:

curl -sfL https://flussonic.ru/doc/catena-se/install.sh | sh -s - app --values ./catena-se.yaml

Running the script again with the app step will update the application and reapply the configuration.

Enabling HTTPS

Edit catena-se.yaml and add the ingress section:

license: ...

ingress:
  host: my-server-hostname.com

streamers:
  hosts:
  - node: streamer3
    host: my-server-hostname.com
...

Use the same hostname in both the ingress settings and for the first streamer.

Then update the configuration as described above.

Adding servers

To add a second server, see the Adding a server guide.