Configuring Hyperion with LXD¶
We host a LXD image containing a pre-configured Hyperion instance. Please follow the instructions below to get started.
For those unfamiliar with LXD, it is a native Linux containerization tool developed by Canonical, the company behind Ubuntu. Thus, it is very well-supported in recent Ubuntu distributions.
For Windows installation using WSL2, refer to this guide before proceeding to make sure
systemd is enabled.
1. Install LXD¶
LXD is pre-installed on Ubuntu Server cloud images, but if it's not available, you can install it using Snap with the following command:
sudo snap install lxd
For other Linux distributions or non-Snap installations, please refer to the documentation.
2. Initialize LXD¶
After installation, you must initialize LXD, which involves configuring the network interface, storage, and other things. For this process, run the command below. The prompt will ask some questions, it's fine to use the default values, just hit Enter to proceed.
When asked about the default pool size, you can use the default value or set it to a higher value if you have enough disk space. Later on, it's easy to expand to add more storage, but keep in mind you can't shrink an existing pool.
sudo lxd init
3. Download Hyperion image and configuration¶
Now that LXD is running, you need to download the Hyperion image from our repository and then launch the image. You also need to download the device configuration file, which will be used to configure the ports exposed by the container.
wget https://images.eosrio.io/hyperion_3.3.9-5.tar.zst wget https://raw.githubusercontent.com/eosrio/hyperion-lxd/main/hyperion-devices.yaml
This process may take a few minutes, the size of the image is approximately 2.0GB
4. Import the Hyperion image¶
Now, you are going to use the LXC (Client), which is part of LXD (Daemon). This command is used to manage resources, and you can learn more about it by typing:
In some environments you may need to use
sudo to run the
Now that you have the image downloaded, you can import it to LXD storage using the command below:
lxc image import hyperion_3.3.9-5.tar.zst --alias hyperion-starter
When the image import is complete, you can check if it's present by running the command:
lxc image ls
Feel free to delete the downloaded file
hyperion_3.3.9-5.tar.zst after importing the image.
5. Create the Hyperion container¶
Now let's create the container with the image. We provided the configuration file
hyperion-devices.yaml to configure the ports exposed by the container. You can pass it to the launch command below to streamline the configuration. Feel free to modify the
listen port values in the file if you need to. Just keep the
connect ports as they are.
lxc launch hyperion-starter hyperion-1 < hyperion-devices.yaml
If you want to change any device configuration after the container has been started you can use the
lxc config device ... command
You can verify our created instance with the command
You can also test if everything is working properly by accessing http://localhost:7000/v2/health to get a response from the Hyperion API.
6. Accessing the container¶
At this point the container should be running and you are ready to use Hyperion, you can open a shell inside it with:
lxc exec hyperion-1 -- bash -c 'sudo su - ubuntu'
You can use the
pm2 ls command in the terminal to see the status of the two Hyperion microservices (API and Indexer) and whether they are online or offline.
Check PM2 logs to see if the indexer is running:
Using Fish, you can create an alias like the example below:
alias hyperion-shell="lxc exec hyperion-1 -- bash -c 'sudo su - ubuntu'" funcsave hyperion-shell
hyperion-shelland you're inside the container with everything you need configured.
What's inside the container?
inside the container you will find:
7. Accessing the services¶
Our default device configuration includes proxies for Kibana, RabbitMQ Management and the Hyperion API. They can be accessed at:
- Kibana: http://localhost:5601
- Username: elastic
- Password: see
- RabbitMQ Management: http://localhost:15672
- Username: hyperion-lxd
- Password: changeme123
- Hyperion API: http://localhost:7000
If you are a developer, you can access the hyperion swagger at http://localhost:7000/v2/docs
Feel free to change configurations as you like. All configurations files are located in
For more details, please refer to the Hyperion Configuration Section .
Stopping the instance¶
First, use the command to
exit the container shell and then stop the instance:
lxc stop hyperion-1
lxc delete hyperion-1