Skip to main content

Remote Tunnel

This guide shows how to open a remote access tunnel to a deployed Avocado OS device from the Avocado Connect console and use it for SSH, a web dashboard, or any other TCP service on the device.

Remote tunnels are a feature of Avocado Connect, the fleet management and device operations platform for Avocado OS. The device dials out and Connect's relay brokers the connection, so you can reach hardware behind NAT, firewalls, or cellular links with no static IPs, port forwarding, or VPN setup. This is all enabled by WireGuard. Every session is audit-logged — who connected, when, and for how long.

Prerequisites

  • An Avocado Connect account — sign up for a free developer account at connect.peridio.com/login
  • A device provisioned with Avocado OS, enrolled in Connect, and showing Online — see the OTA guide for the full setup flow
  • The device's runtime includes the avocado-ext-connect and avocado-ext-tunnels extensions (tunnels are gated on device capability)
  • To use a tunnel for SSH, the runtime must also run an SSH server (e.g. avocado-ext-sshd-dev in development); likewise, Cockpit on port 9090 requires the avocado-ext-cockpit extension

NOTE: If you do not want Remote Access Tunnels enabled, simply remove the avocado-ext-tunnels extension from your avocado.yaml file.

Choose a port

A tunnel forwards one device port to your machine. Common choices:

ServicePortWhat you get
SSH22A remote shell on the device
HTTP80A web service on the device
HTTPS443A TLS web service on the device
Cockpit9090The device's web-based management UI
CustomanyAnything else listening on the device — e.g. a web frontend on 3000 or 5000

Custom ports are useful if your application hosts a web frontend (say on port 3000 or 5000), a tunnel gives you an exact view of what a user standing in front of the device sees — or lets you reach an internal dashboard.

Open a tunnel

  • Open your device in Connect. The Tunnels panel lives on the device detail page, and the Agent section confirms the device reports Tunnel Capable: Yes.
A device detail page in Avocado Connect: the Tunnels panel with no active tunnels and port shortcuts, a Quick Actions panel with Open SSH Tunnel, and the Agent section reporting Tunnel Capable: Yes.
  • Under New, pick a standard port — SSH :22, HTTP :80, HTTPS :443, Cockpit :9090 — or choose Custom and enter any port. For SSH there's also the Open SSH Tunnel quick action.
The Tunnels panel up close: New tunnel shortcuts for SSH port 22, HTTP port 80, HTTPS port 443, Cockpit port 9090, and Custom, with the Open SSH Tunnel quick action below.
  • Connect establishes the WireGuard tunnel to the device.
The Tunnels panel showing one active tunnel being set up: Establishing WireGuard tunnel on port 22, with a progress indicator and a Close action.
  • Once the tunnel is established, Connect shows the connection details — for SSH, copy the ready-made SSH command.
The Tunnels panel with a tunnel established on port 22 and a copyable SSH command: ssh -p 62042 root@13.219.213.3.

Use the tunnel

  • SSH (port 22): run the copied SSH command to get a shell on the device.
A terminal running the copied tunnel command ssh -p 62042 root@13.219.213.3: after accepting the host key, a root shell opens on the Jetson Orin Nano devkit.

Example: view a device dashboard on a custom port

First, close the SSH tunnel from the previous section (Close next to the tunnel) — the developer plan tunnel policy allows one active tunnel at a time.

Say your application serves a dashboard on port 5000 — this example uses the python-flask reference, which hosts a live device dashboard. Choose Custom, enter the port, and click Connect.

The Tunnels panel with Custom selected: a port field containing 5000 and a Connect button.

Once established, the tunnel shows an endpoint (host and port) instead of an SSH command — copy it.

The Tunnels panel with a tunnel established on port 5000 and a copyable endpoint: 13.219.213.3:58954.

Open the endpoint in your browser: the device's dashboard renders live through the tunnel, exactly as it would for someone on the device's own network.

A browser pointed at the tunnel endpoint showing a live device dashboard served from the Jetson: CPU, memory, disk, load, uptime, temperature, and per-interface network throughput.

Tunnel lifetime

  • Tunnels expire automatically after their TTL, so access is temporary by default. Close a tunnel early from the device's Tunnels view in Connect.
  • Every tunnel session is recorded for audit: who opened it, to which device and port, and for how long.
  • For a higher-level look at remote access in Connect, see the Remote Access overview.