This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Networking

Network configuration, connection fallback, proxies, ports, and time sync.

This section covers how a device connects to the network and to the SPEKTRA Edge platform: how you describe network configuration, how the device falls back between connections, how to route through a proxy, what the device needs to reach on the network, and how time is kept in sync.

Network configuration model

Device networking is described as a Netplan-format YAML document. This is a clean, declarative way to configure wired, Wi-Fi, and cellular connections, as well as advanced setups such as bonds, bridges, VLANs, and tunnels.

You can supply the network configuration when you create an install image (so the device has connectivity from first boot) and you can update it later from the dashboard. When you push configuration from the platform, you choose how it combines with what is already on the device:

ModeBehavior
MergeThe pushed configuration is merged with the device’s existing configuration.
ReplaceThe pushed configuration replaces the device’s existing configuration.

On the device, the baseline configuration — the one a device falls back to if a pushed configuration fails — lives at /isodevice/config/interfaces.yaml. See connection fallback.

The device reports its observed network state back to the platform — active interfaces, IP addresses, and carrier information — which you can view on the device overview page.

Wired, Wi-Fi, and cellular

All three connection types are configured through the same network configuration document:

  • Wired connections typically use DHCP by default and need no configuration to come up.
  • Wi-Fi connections are configured with the network name and credentials.
  • Cellular connections are configured for the modem; a device can also be associated with a SIM in the platform for inventory and activation tracking.

See the Netplan documentation for the exact YAML for each type.

Connection fallback

A field device often has more than one way to reach the network, and its configuration can be changed remotely. To keep a configuration mistake or a link outage from taking a device permanently offline, the OS has several layers of fallback — network configuration fallback, uplink (interface and cellular) failover, and proxy fallback. These are covered in detail on the Connection fallback page.

In this section

1 - Configure device networking with Netplan

Push Netplan YAML from the dashboard, with a worked Wi-Fi example.

Device networking on SPEKTRA Edge is configured with Canonical Netplan, which provides a clean, YAML-based configuration and supports a wide range of Linux networking managers. You edit that YAML from the dashboard and the platform pushes it to the device.

This page walks through one concrete case — adding a Wi-Fi interface to a Raspberry Pi as a secondary uplink — so you can see the whole push-and-verify loop end to end. The same flow applies to wired interfaces, VLANs, bonds, and cellular; only the YAML differs.

What you need

To go through this page, you need the following.

Configure Wi-Fi networking

Go to the Device overview page by clicking the device name on the Project overview page.

Clicking the device name, Raspberry Pi 5, to go to the Device overview page.

Clicking the device name, Raspberry Pi 5, to go to the Device overview page.

Then, click the Edit details option of the Device actions to open the Update device details page.

Clicking the Edit details option to open the Update device details page.

Clicking the Edit details option to open the Update device details page.

Go to the Network agent section of the Update device details page and use the Merge option to add the new Wi-Fi specific configuration.

Add Wi-Fi specific configuration with the Merge with default configuration option.

Add Wi-Fi specific configuration with the Merge with default configuration option.

Verify Wi-Fi networking

Go to the Device overview page and check the IP address as well as the ISP information for the wireless interface.

Verifying the IP address of the Wi-Fi interface on the Device overview page.

Verifying the IP address of the Wi-Fi interface on the Device overview page.

Next steps

Congratulations on configuring the Wi-Fi networking of your Raspberry Pi with SPEKTRA Edge.

With that, let’s move on to proxy configuration if your devices reach the internet through a forward proxy, or to OS upgrades.

Onwards.

2 - Connection fallback

How a device stays reachable after a bad config push, link outage, or proxy failure.

Devices are often deployed where connectivity is imperfect: a misapplied network change, a flaky uplink, or a proxy that goes down. SPEKTRA Edge OS has several fallback behaviors that keep a device reachable and recoverable. This page explains the three that matter most: network configuration fallback, uplink (interface and cellular) failover, and proxy fallback.

Network configuration fallback

When you push a new network configuration to a device, there is always a risk that the new configuration is wrong and takes the device offline — which would also prevent you from pushing a correction.

To guard against this, a device can fall back to a known-good network configuration that was established when the device was set up. If a platform-supplied configuration leaves the device unable to reach the platform, the device can revert to this baked-in configuration so it can be reached again.

You can control this behavior:

SettingEffect
Fallback enabled (default)If platform-supplied network configuration fails, the device reverts to its known-good configuration.
Fallback disabledThe device always uses the platform-supplied configuration and never reverts.

A device can have more than one uplink — for example wired Ethernet plus cellular, or wired plus Wi-Fi. When multiple uplinks are configured, the device prefers the primary uplink and uses the others as backups, switching to a working uplink when the preferred one is unavailable.

A common, robust pattern is:

  1. Wired Ethernet as the primary uplink (DHCP).
  2. Wi-Fi or cellular as a backup that takes over when the wired link is down.

Cellular is especially useful as a last-resort uplink because it does not depend on local site infrastructure. Associate a SIM with the device during hardware registration, configure the cellular connection in your network YAML, and the device can fall back to it to stay manageable.

Proxy fallback

When a device is configured to reach the platform through a proxy, it still needs to stay reachable if that proxy becomes unavailable. The device evaluates the available paths to the platform and uses a working one, so a single failed proxy does not necessarily cut the device off from management.

This means you can introduce a proxy for normal operation without making it a single point of failure for device management, provided a viable path to the platform remains.

Putting it together

The three mechanisms guard different failures, so they stack: each one catches what the ones above it cannot.

flowchart TD
    GOAL(["Device must stay<br/>reachable by the platform"])

    GOAL --> L1{"Is the pushed network<br/>configuration working?"}
    L1 -->|"no"| F1["Revert to the known-good<br/>configuration from setup"]

    L1 -->|"yes"| L2{"Is the preferred<br/>uplink up?"}
    L2 -->|"no"| F2["Fail over to a backup uplink<br/>(Wi-Fi or cellular)"]

    L2 -->|"yes"| L3{"Is the proxy<br/>reachable?"}
    L3 -->|"no"| F3["Use another viable path<br/>to the platform"]

    L3 -->|"yes"| OK(["Managed normally"])

For a remote, hard-to-reach device, a resilient setup combines all three:

  • Keep network configuration fallback enabled so a bad push self-corrects.
  • Provide a backup uplink (cellular is ideal) so a single link failure does not isolate the device.
  • If you use a proxy, ensure a viable path to the platform remains so proxy problems do not block management.

Next steps

3 - Proxy configuration

Route device and workload traffic through an HTTP or HTTPS forward proxy.

If your devices reach the internet through a forward proxy, configure the proxy so that both the device’s connection to the SPEKTRA Edge platform and your workloads’ traffic are routed correctly.

What you can set

Proxy configuration consists of the standard proxy settings:

SettingMeaning
http_proxyProxy URL for plain HTTP traffic.
https_proxyProxy URL for HTTPS traffic.
no_proxyHosts and networks that should bypass the proxy (comma-separated).

In addition, you can specify which network interfaces the device should use to reach the platform through the proxy, so control-plane traffic uses the intended path.

Where to set it

You can configure the proxy:

  • at image creation, so devices use the proxy from first boot, or
  • from the dashboard for a device that is already online.

Which traffic uses the proxy

“The device uses a proxy” is three separate behaviors, and they do not all work the same way. The distinction matters most for the third row.

TrafficUses the proxy?How
The device’s connection to the platformYesThe agent opens an HTTP CONNECT tunnel through the proxy, then speaks TLS to the platform through it.
Container image pullsYesThe proxy settings are written into the container runtime’s own configuration, so pulls made on the device’s behalf follow them.
Traffic your workload makes once runningNoA running container does not inherit the device’s proxy settings.

Configure the proxy from the dashboard

To go through this section, you need:

  • access to the SPEKTRA Edge dashboard
  • an active project
  • a device provisioned under the project
  • the name and the port number of the proxy server

Go to the Device overview page of the target device under your project by clicking the name of the device on the Project overview page.

Clicking the device name on the Project overview page.

Clicking the device name on the Project overview page.

Open the Update device details page by clicking the Edit detail option of the device menu option.

Click the Edit detail option of the device menu option.

Click the Edit detail option of the device menu option.

Configure the proxy server in the HTTP and/or HTTPS proxy server section of the Update device details page.

You can configure the device to bypass the proxy servers for the particular communication, e.g. the node local communication in the example below.

Configure the HTTP and HTTPS proxy servers on the Update device details page.

Configure the HTTP and HTTPS proxy servers on the Update device details page.

Save the page and you are good to go. The device goes through the proxy server for the HTTP and HTTPS traffic.

What the proxy must allow

The device’s connection to the platform is gRPC over HTTP/2, carried inside a TLS session on port 443. That places two requirements on the proxy.

It must allow CONNECT to port 443. The device does not send ordinary HTTP requests to the platform; it asks the proxy to open a tunnel and then runs TLS inside it. A proxy that only forwards HTTP methods, or that restricts CONNECT to a narrow destination list, blocks the device.

It must not terminate or inspect TLS. A proxy doing TLS inspection substitutes its own certificate for the platform’s. The device validates the platform certificate against its trust store, does not find the inspection certificate there, and the handshake fails.

Fallback behavior

The device determines the best route to the platform and will fall back to a direct connection when the proxy is not usable, so a proxy outage does not necessarily take a device offline. If you require that all traffic traverse the proxy, ensure direct egress is blocked at the network level rather than relying on device configuration.

no_proxy recommendations

Add to no_proxy any destinations that must not go through the proxy, such as:

  • on-site services the device talks to directly (local registries, local APIs)
  • link-local and private ranges used on the device’s LAN

Next steps

4 - Connectivity & ports

What a device must reach and what it listens on, for planning firewall rules.

This page lists what a device needs to reach on the network and what it accepts on its own interfaces, so you can plan firewall rules for the sites where your devices run.

Outbound connectivity (required)

A device reaches the SPEKTRA Edge platform over secure, outbound connections. Devices do not need any inbound connections from the platform — all communication is initiated by the device.

DestinationPortPurpose
*.edgelq.comTCP 443Everything the device needs from the platform: onboarding, configuration, telemetry, log forwarding, remote access, and OS downloads.
Your container registryTCP 443Image pulls. The device connects to the registry directly — see Private registry.
Your time sourcesUDP 123Network time synchronization. See Time synchronization.
Public STUN serversUDP 3478, UDP 19302External IP address discovery.

All platform traffic is TLS on TCP 443. Allow the whole edgelq.com domain rather than individual hostnames: a device is directed to different service endpoints depending on its project and region, and the set changes as the platform grows.

At minimum, allow outbound TCP 443 to *.edgelq.com and outbound UDP 123 to your time sources. If you use a proxy, the device’s platform traffic egresses through it.

Match subdomains at any depth

Platform hostnames carry several labels, so the rule has to match more than one level below edgelq.com.

Many firewalls and proxies treat *.edgelq.com as matching every subdomain at any depth, which is what you want. Some treat * as exactly one label — and on those, *.edgelq.com matches a two-label name but not a deeper one, which lets a device get far enough to onboard and then stops it.

If your equipment behaves that way, express the rule as a domain-suffix match on edgelq.com instead. Squid spells this .edgelq.com; most next-generation firewalls offer a “domain suffix” or “subdomain” match type.

DNS

The device must be able to resolve every destination above. A device on a network with filtered or split-horizon DNS can pass a connectivity test to a raw IP address and still fail to reach the platform. If you run internal resolvers, confirm they resolve edgelq.com names and your registry’s name.

Inbound (on the device)

By default a device exposes only what is needed to administer it locally:

PortPurpose
TCP 22SSH access. Can be restricted or disabled — see SSH access.

The device also responds to local network discovery (mDNS) so it can be found by name on the local segment; this can be turned off with the device discovery setting.

Any ports your workloads expose are determined by the workloads you deploy, not by the OS.

Remote access does not require inbound ports

Operator actions such as opening a remote shell, transferring files, or streaming logs are carried over the device’s existing outbound connection to the platform. You do not need to open inbound ports to use them. See Remote access.

Firewall planning checklist

  • Allow outbound TCP 443 to *.edgelq.com (directly or via proxy), matching subdomains at any depth.
  • Confirm the device can resolve those names with the resolvers it will actually use on site.
  • Allow outbound TCP 443 to your container registry, if you deploy from a private one.
  • Allow outbound UDP 123 to your NTP sources.
  • Allow outbound UDP to your chosen STUN servers (or accept that external IP discovery is unavailable).
  • If traffic passes through a proxy, confirm it permits HTTP CONNECT to port 443 and does not terminate TLS — see Proxy configuration.
  • Decide whether local TCP 22 (SSH) should be reachable on your LAN.
  • Open any ports your workloads require, per workload.

5 - Time synchronization

Set NTP servers and understand the default time behavior of a device.

Accurate time is important for secure connections, certificate validation, log correlation, and device attestation. Devices keep their clocks synchronized over the network using NTP.

Default behavior

Devices use chrony as their NTP client. Out of the box a device ships without a custom time configuration, so it synchronizes against the public pools that its Linux distribution configures by default — typically ntp.ubuntu.com and the 0–2.ubuntu.pool.ntp.org pools. A device with internet access therefore keeps accurate time without any configuration.

Treat those pool names as a default that can change with the distribution, not as a contract. If you need to know exactly what a given device is using, read /etc/chrony/chrony.conf on the device, and set your own sources if the answer matters to your firewall rules.

Setting custom NTP servers

If your environment requires specific time sources — for example, internal NTP servers on an isolated network — you can provide your own NTP configuration. You can set it:

  • at image creation, so it applies from first boot, or
  • by placing a chrony-format configuration at /isodevice/config/chrony.conf on the device.

When custom NTP settings are provided, they take effect early in the boot process so the device’s clock is correct before it contacts the platform.

When a device cannot reach a time source

A device with no reachable NTP source keeps running, but its clock is left to drift against whatever the hardware clock holds. Once the drift is large enough, certificate validity checks start to fail, and the symptom you see is a device that appears offline in the dashboard even though its network is otherwise healthy — the TLS handshake to the platform cannot complete.

This failure is easy to misread, because the device can still reach the internet. If a device will not come online, check its clock before you go looking at firewall rules. See Troubleshooting.

Recommendations

  • On networks without internet access, always configure reachable internal NTP servers; otherwise the device cannot correct its clock, which can cause secure connections and attestation to fail.
  • Make sure outbound UDP 123 to your time sources is allowed — see Connectivity & ports.