Installing Elytra (Native)

How to install and setup Elytra on Linux

Supported Operating Systems

There is a very high chance it will work on more than these. These are the ones that are known working and officially supported though.

OSVersion
Fedora40-42
Ubuntu24.04
Debian13
Rocky10
RHEL10
ArchRolling

Prerequisites

Installing Prequisites

sudo dnf update
sudo dnf install curl tar
sudo dnf -y install dnf-plugins-core
sudo dnf-3 config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt-get update
sudo apt-get install curl tar ca-certificates
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt-get update
sudo apt-get install curl tar ca-certificates
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo dnf update
sudo dnf install curl tar
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo yum update
sudo yum install curl tar
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo pacman -Syu
sudo pacman -S curl tar docker

Now, enable the docker engine service to start on boot

sudo systemctl enable --now docker

Installing Elytra

Now we need to install elytra. This will be the program communicating with your Pyrodactyl Panel.

Download Executable

  curl -L -o /usr/local/bin/elytra https://github.com/pyrohost/elytra/releases/latest/download/elytra_linux_amd64 
  sudo chmod u+x /usr/local/bin/elytra
  curl -L -o /usr/local/bin/elytra https://github.com/pyrohost/elytra/releases/latest/download/elytra_linux_arm64 
  sudo chmod u+x /usr/local/bin/elytra

Installing Rustic

Rustic is not required to run Elytra. You do however lose out on Deduplicated and encrypted backups. The Pyrodactyl team heavily recommends you install it.

To install rustic, you have the choice of building from source, or downloading the latest pre-built binary. The quickest way is to use the pre-built binaries.

  mkdir -p /tmp/rustic-install
	curl -L https://github.com/rustic-rs/rustic/releases/download/v0.10.0/rustic-v0.10.0-x86_64-unknown-linux-musl.tar.gz | tar -xz -C /tmp/rustic-install
  sudo mv /tmp/rustic-install/rustic /usr/local/bin/
  mkdir -p /tmp/rustic-install
	curl -L https://github.com/rustic-rs/rustic/releases/download/v0.10.0/rustic-v0.10.0-aarch64-unknown-linux-musl.tar.gz | tar -xz -C /tmp/rustic-install
  sudo mv /tmp/rustic-install/rustic /usr/local/bin/

Creating SSL Certificates

Using SSL is not required to run Elytra, but if you checked Use SSL Connection when adding the node to your panel, you will need to do this step to enable SSL. It is recommended that you do this step to ensure connection security between the panel and the node.

Before continuing to create an SSL certificate, ensure that you have created an A Record for the FDQN you wish to use for the node, pointed to the IP of the machine on which the node will be running.

sudo dnf update -y
sudo dnf install certbot -y

# Obtain a certificate (Replace 'node.pyrodactyl.dev' with your own FDQN)
sudo certbot certonly --standalone -d node.pyrodactyl.dev
sudo apt update
sudo apt install certbot -y

# Obtain a certificate (Replace 'node.pyrodactyl.dev' with your own FDQN)
sudo certbot certonly --standalone -d node.pyrodactyl.dev
sudo apt update
sudo apt install certbot -y

# Obtain a certificate (Replace 'node.pyrodactyl.dev' with your own FDQN)
sudo certbot certonly --standalone -d node.pyrodactyl.dev
sudo dnf install epel-release -y
sudo dnf install certbot -y

# Obtain a certificate (Replace 'node.pyrodactyl.dev' with your own FDQN)
sudo certbot certonly --standalone -d node.pyrodactyl.dev
sudo dnf install epel-release -y
sudo dnf install certbot -y

# Obtain a certificate (Replace 'node.pyrodactyl.dev' with your own FDQN)
sudo certbot certonly --standalone -d node.pyrodactyl.dev
sudo pacman -Syu
sudo pacman -S certbot

# Obtain a certificate (Replace 'node.pyrodactyl.dev' with your own FDQN)
sudo certbot certonly --standalone -d node.pyrodactyl.dev

Setting up Systemd Task for Elytra

sudo nano /etc/systemd/system/elytra.service

and paste

[Unit]
Description=Pyrodactyl Elytra Daemon
After=docker.service
Requires=docker.service
PartOf=docker.service

[Service]
User=root
WorkingDirectory=/etc/elytra
LimitNOFILE=4096
PIDFile=/var/run/elytra/daemon.pid
ExecStart=/usr/local/bin/elytra
Restart=on-failure
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s

[Install]
WantedBy=multi-user.target

Now save and exit that file.

Setup Elytra

To setup Elytra, you must first get your config. This is done by first, adding a new node in your Pyrodactyl Panel.

Setup your Elytra

First thing you need to do, is to get to your admin panel.
This is located at https://<Your-Domain.com>/admin

Setting up Your Location

after visiting this page, you should see a menu on the left side of the screen called Locations Click on that to make your first location

Location View

Once on this page, click "Create New" in the top right corner Name it whatever you want. This name doesn't matter that much.

Create Your Node

Once your Location is created. Click on Nodes right beneath the locations button.

Node View

Click "Create New"

and you will be prompted with a screen with lots of buttons and input fields. The only values you will need to change are

  • Name
    Give it a unique name that you can identify this node by

  • Public FQDN

    This address should be The address that people will use when connecting to your node. not panel to node
    If your panel is https secured is has to be a domain name, and vise versa, if it's http, it has to be an ip address.

  • Total Memory
    How much memory your Server has

    This is not a hard value. The panel will only get mad at you, not stop you!

  • Memory Over-Allocation
    How much percent over your Total Memory you want to show up as "Available"

  • Total Disk Space
    How much disk space you have to use

    This is not a hard value. The panel will only get mad at you, not stop you!

  • Disk Over-Allocation How much percent over your Total Disk you want to show up as "Available"

    If your going to run Elytra behind a proxy Set Behind proxy to true

Click Create on your node, and it might take a second. But then it should load into the nodes page.


Configuring Elytra

Click the Configuration Button located at the top of the page

Elytra Config

Rather than anything complex, you can press the auto deploy button on the side of the page, and copy the command that pops out which should look a little something like this

cd /etc/elytra && sudo elytra configure --panel-url http://panel.pyrodactyl.dev --token pyro_XWsMcVoJkoMCWn9COtSsUTlbRSevBbLJ5HEMKZQjnN5 --node 1

Test your service.

If you want to run Elytra just to test it. You can do that by running this command anywhere on your host

  elytra

Once you've got your stuff working. your free to go


Enable Elytra Service

  sudo systemctl enable --now elytra

Troubleshooting

If Elytra refuses to start because it cannot create the pyrodactyl system user (you will see logs mentioning failed to create pyrodactyl system user error=exit status 4), you can manually provision the account. Confirm that the user is missing before running the command above (e.g., sudo getent passwd pyrodactyl).

sudo getent passwd pyrodactyl || sudo useradd --system --create-home --shell /usr/sbin/nologin --comment "Elytra/Pterodactyl system user" pyrodactyl

Retry with sudo if you are prompted for permissions again; the service runs as root before dropping privileges.

sudo getent passwd pyrodactyl || sudo useradd --system --create-home --shell /usr/sbin/nologin --comment "Elytra/Pterodactyl system user" pyrodactyl

Ubuntu keeps nologin under /usr/sbin, matching what the service unit expects.

sudo getent passwd pyrodactyl || sudo useradd --system --create-home --shell /usr/sbin/nologin --comment "Elytra/Pterodactyl system user" pyrodactyl

Use the same path as Ubuntu since Debian shares the same filesystem layout for administrative binaries.

sudo getent passwd pyrodactyl || sudo useradd --system --create-home --shell /usr/sbin/nologin --comment "Elytra/Pterodactyl system user" pyrodactyl

Red Hat derivatives keep nologin in /usr/sbin, so this mirrors the Fedora command exactly.

sudo getent passwd pyrodactyl || sudo useradd --system --create-home --shell /usr/sbin/nologin --comment "Elytra/Pterodactyl system user" pyrodactyl

If SELinux is enforcing, rerun sudo restorecon /etc/passwd after creating the user to ensure the context is correct.

sudo getent passwd pyrodactyl || sudo useradd --system --create-home --shell /usr/bin/nologin --comment "Elytra/Pterodactyl system user" pyrodactyl

Arch places nologin in /usr/bin, so point the command there to keep systemd happy.