Install Edera

Install Edera

At the end of this guide, Edera for Containers will be installed and running on your VM.

🚫
Disposable infrastructure only. Edera modifies your bootloader and there is no automated uninstall. Only install on instances or VMs you can terminate and recreate.

Verify UEFI boot

Edera requires UEFI. Run:

[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

If the output is BIOS, Edera will not work on this machine.

Add your user to the docker group

sudo usermod -aG docker $USER

Start a new SSH session after running this command. The group change only takes effect in new sessions.

Run edera-check

Verify your system meets the requirements before installing:

docker run --pull always --pid host --privileged \
  ghcr.io/edera-dev/edera-check:stable preinstall

If any required checks fail, resolve them before proceeding. Optional checks indicate features that won’t be available but won’t block installation.

Authenticate to the Edera registry

Set your license key as an environment variable, then authenticate:

export EDERA_LICENSE_KEY=<YOUR_LICENSE_KEY>
docker login -u license -p $EDERA_LICENSE_KEY images.edera.dev

Pull the installer image

docker pull images.edera.dev/installer:on-preview

Run the installer

docker run --rm --privileged --pid=host --net=host \
  --env 'TARGET_DIR=/host' \
  --env "EDERA_LICENSE_KEY=${EDERA_LICENSE_KEY}" \
  --volume '/:/host' \
  images.edera.dev/installer:on-preview

The machine will reboot when the installer completes.

Note: EDERA_LICENSE_KEY is automatically written to /var/lib/edera/protect/license.key during installation. You do not need to write the file yourself afterward.

Verify the installation

After reboot, SSH back in and verify:

# Check you're running the Edera kernel
uname -r
# Expected: 6.x.y-edera

# Check the daemon is running
sudo systemctl is-active protect-daemon
# Expected: active
⚠️
activating is not the same as active. The daemon should become active within a few seconds. If it stays in activating, it failed to start — a missing or invalid license key is a common cause. Check logs with sudo journalctl -u protect-daemon -n 50.

Last updated on