Installation¶
Catena Streaming Engine installation consists of the following stages:
- Preparing the Kubernetes orchestrator (using k3s as an example)
- Preparing the environment inside the running Kubernetes cluster
- 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-keywith your license key from your account - For each streamer in the cluster, set
streamer3to that node's name fromkubectl 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.