Introduction
EVE-OS (Edge Virtualization Engine) supports a local data store that lets edge nodes download edge app images from a storage service running on the device itself, without requiring an external network connection. This is useful for air-gapped or intermittently connected deployments where applications must launch dynamically even when the device cannot reach external storage.
Prerequisites
- EVE-OS installed and running on the edge node.
- An EVE application running Ubuntu (or another Linux distribution that supports avahi-daemon).
- The application instance must be attached to a local network instance for the EVE downloader to access.
- An HTTP server (for example, Apache) running on the edge container to serve images.
- A data store configured in Edge Infrastructure Services with the FQDN set to a .local domain (for example, http://ubuntu-4321-http-server.local).
How It Works
Normally, EVE-OS downloads edge app images from external data stores such as Amazon S3, Azure Blob Storage, or a private server. The local data store feature allows a storage service running inside an edge container on the same device to serve images to other edge containers on that device.
EVE-OS uses ZeroConfig (mDNS) to discover the local data store automatically, without requiring a static IP address. When EVE-OS needs to download an image and the data store URL uses a .local domain (for example, http://ubuntu-4321-http-server.local), it sends mDNS query packets on all internal network bridges to the multicast address 224.0.0.251 on port 5353. The local data store edge container responds with its hostname and IP address. EVE-OS then uses that IP address to fetch the image over HTTP.
This means the local data store edge container can receive a dynamic IP address on each reboot and the feature continues to work without any manual reconfiguration.
The data store configuration on Edge Infrastructure Services requires no special changes beyond setting the FQDN to a .local domain. There are no API changes required.
Key Benefits
- Edge containers can launch on an edge node that has no active connection to external networks or Edge Infrastructure Services.
- The local data store IP address does not need to be static, because mDNS resolves the hostname automatically on each boot.
- The same local data store configuration can be reused across multiple edge nodes to distribute the same or different sets of images.
- No changes are required to Edge Infrastructure Services configuration or the EVE-OS API.
- Downloaded images are verified using a hash value defined in the data store configuration, maintaining image integrity.
Configure a Local Datastore With ZeroConfig
Use this procedure to configure an edge container as a local data store and enable EVE-OS to discover it automatically using mDNS (ZeroConfig). Complete these steps on the edge container that will serve as the local data store.
Install and Configure Avahi
- If avahi-daemon is not already installed on the edge container, install it by running:
sudo apt install avahi-daemon
For installation guidance, refer to the Avahi installation documentation.
- Open the Avahi configuration file at /etc/avahi/avahi-daemon.conf.
- Set or confirm the following values, replacing ubuntu-4321-http-server with the hostname you used in the data store FQDN:
host-name=ubuntu-4321-http-server use-ipv6=no publish-workstation=yes
Setting host-name explicitly in the Avahi configuration ensures the correct hostname is advertised even if the system hostname changes. Setting use-ipv6=no ensures mDNS replies include an IPv4 address. Setting publish-workstation=yes enables the workstation service, which EVE-OS queries first.
- Save the file.
- Restart avahi-daemon to apply the changes:
sudo service avahi-daemon restart
(Optional) Advertise HTTP or HTTPS Services
EVE-OS queries the workstation service first. If you also want to advertise http or https services, create a service definition file in /etc/avahi/services/.
- Create a file named http.service in /etc/avahi/services/ with the following content:
<?xml version="1.0" standalone='no'?><!--*-nxml-*--> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">%h</name> <service> <type>_http._tcp</type> <port>80</port> </service> </service-group>
- Restart avahi-daemon:
sudo service avahi-daemon restart
At least one of the workstation, http, or https services must be advertised for the local data store feature to work.
Verify the Configuration
-
Confirm avahi-daemon is running:
sudo systemctl status avahi-daemon
- Install the avahi-utils package if it is not already present:
sudo apt install avahi-utils
- Run the following command and confirm your edge container's hostname and service appear in the output:
avahi-browse -a | grep server
A successful result looks similar to this:
+ eth0 IPv4 ubuntu-4321-http-server [00:16:3e:00:01:03] Workstation local + lo IPv4 ubuntu-4321-http-server [00:00:00:00:00:00] Workstation local
If the hostname does not appear, confirm that publish-workstation=yes is set in /etc/avahi/avahi-daemon.conf and that the daemon was restarted after the change.
A Note on Protocol Scheme
Because the local data store is internal to the device and under your control, use HTTP as the protocol scheme in the data store URL. EVE-OS verifies image integrity using the hash value defined in the data store configuration.
If HTTPS is required, you must assign a static IP address to the local data store edge container's network interface and include that IP address in the certificate's subjectAltName field. You must also include the certificate chain in the data store configuration so EVE-OS can verify it during download.
Next Steps
After the local data store is advertising itself over mDNS, deploy an edge application that uses it:
- Place the image files on the local data store. Copy the images you want to serve into the HTTP server's document root on the edge container (for example, Apache's /var/www/html/...), so they're reachable at the path you'll reference in the data store configuration.
- Confirm the data store points at the .local FQDN. In Edge Infrastructure Services, the data store's FQDN should be the .local URL (for example, http://ubuntu-4321-http-server.local). Use the http scheme unless you've completed the static-IP/HTTPS setup described above.
- Register the image. Create an image artifact that references this data store and the relative path to the file, and provide the image hash. EVE-OS verifies the downloaded image against this hash.
- Create and deploy an edge application that uses the image, and deploy it to the same edge node that hosts the local data store container (it must share a network instance with that container so mDNS can reach it).
- Verify the download. EVE-OS resolves the .local hostname via mDNS, rewrites the URL to the discovered IP, and downloads the image over HTTP. Confirm the app instance transitions past the download/verify stages (for example, in the app's status, or in downloader logs on the device).