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.
WSL2
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:
Linux Terminal
sudo snap install lxd
non-Snap installations
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.
Linux Terminal
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.
Linux Terminal
wget https://images.eosrio.io/hyperion_3.3.9-5.tar.zst
wget https://raw.githubusercontent.com/eosrio/hyperion-lxd/main/hyperion-devices.yaml
Tip
This process may take a few minutes, the size of the image is approximately 2.0GB
4. Import the Hyperion image¶
Note
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:
lxc --help
Tip
In some environments you may need to use sudo
to run the lxc
command.
Linux Terminal
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
Tip 2
Feel free to delete the downloaded file hyperion_3.3.9-5.tar.zst
after importing the image.
rm hyperion_3.3.9-5.tar.zst
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.
Linux Terminal
lxc launch hyperion-starter hyperion-1 < hyperion-devices.yaml
Tip
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
lxc ls
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:
Linux Terminal
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:
pm2 logs
Check your elastic password, you will need it to login to Kibana:
cat ~/elastic.pass
Tip
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-shell
and you're inside the container with everything you need configured.
What's inside the container?
inside the container you will find:
- ElasticSearch
- RabbitMq
- Redis
- Hyperion-API
- Hyperion-Indexer
- Nodeos(Leap)
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
cat ~/elastic.pass
- 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
Next steps¶
Feel free to change configurations as you like. All configurations files are located in ~/hyperion
or ~/nodeos
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:
Linux Terminal
lxc stop hyperion-1
Deleting¶
Linux Terminal
lxc delete hyperion-1