Skip to content

Install

Ensure your system meets the requirements. Then, choose one of the installation methods below.

Install the Ella Core snap and connect it to the required interfaces:

sudo snap install ella-core
sudo snap connect ella-core:network-control
sudo snap connect ella-core:process-control
sudo snap connect ella-core:sys-fs-bpf-upf-pipeline
sudo snap connect ella-core:system-observe
sudo snap connect ella-core:firewall-control

Configure Ella Core:

sudo vim /var/snap/ella-core/common/core.yaml

Start Ella Core:

sudo snap start --enable ella-core.cored

Install the required dependencies:

sudo snap install go --channel=1.24/stable --classic
sudo snap install node --channel=22/stable --classic
sudo apt update
sudo apt -y install clang llvm gcc-multilib libbpf-dev

Clone the Ella Core repository:

git clone https://github.com/ellanetworks/core.git
cd core

Build the frontend:

npm install --prefix ui
npm run build --prefix ui

Build Ella Core:

REVISION=`git rev-parse HEAD`
go build -ldflags "-X github.com/ellanetworks/core/version.GitCommit=${REVISION}" ./cmd/core/main.go

Configure Ella Core:

vim core.yaml

Start Ella Core:

sudo ./main -config core.yaml

Create a new directory:

mkdir ella
cd ella

Copy the following file into this directory:

docker-compose.yaml
configs:
  ella_config:
    content: |
      logging:
        system:
          level: "info"
          output: "stdout"
        audit:
          output: "stdout"
      db:
        path: "core.db"
      interfaces:
        n2:
          name: "n3"
          port: 38412
        n3:
          name: "n3"
        n6:
          name: "eth0"
        api:
          name: "eth0"
          port: 5002
      xdp:
        attach-mode: "generic"

services:
  ella-core:
    image: ghcr.io/ellanetworks/ella-core:v0.4.0
    configs:
      - source: ella_config
        target: /core.yaml
    restart: unless-stopped
    entrypoint: /bin/core --config /core.yaml
    volumes:
      - /sys/fs/bpf:/sys/fs/bpf:rw
    privileged: true
    ports:
      - "5002:5002"
    networks:
      default:
        driver_opts:
          com.docker.network.endpoint.ifname: eth0
      n3:
        driver_opts:
          com.docker.network.endpoint.ifname: n3
        ipv4_address: 10.3.0.2

networks:
  n3:
    internal: true
    ipam:
      config:
        - subnet: 10.3.0.0/24

Edit the file to match your network interfaces and desired configuration.

Start the Ella Core container:

docker compose up -d

Ensure your Kubernetes cluster is running with the Multus CNI installed.

kubectl apply -k github.com/ellanetworks/core/k8s?ref=v0.4.0 -n ella