You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rewrite the Raspberry Pi guide around the single install-script path and
drop the broken Docker/Snap blocks (wrong env var names) and the outdated
headless setup that relied on the pre-Bookworm wpa_supplicant.conf method.
Standardize the verification step to an "Accept the device" section with
the same wording across Buildroot, Yocto, and Raspberry Pi.
Buildroot: create (not edit) the /etc/default/shellhub-agent env file to
match the external tree README, drop the QEMU section, and link the repo.
Yocto: fix the supported release (scarthgap is not in LAYERSERIES_COMPAT)
to styhead/whinlatter/wrynose, and link the layer repo.
Overview: frame the two paths (build into firmware vs install on a running
OS) and add Raspberry Pi to the section.
Copy file name to clipboardExpand all lines: ui/apps/docs/src/pages/embedded-linux/buildroot.mdx
+7-21Lines changed: 7 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,15 +37,17 @@ Select **ShellHub** under **External options** in the menuconfig interface.
37
37
38
38
### 3. Configure the agent
39
39
40
-
The external tree provides a root filesystem overlay for the agent's environment variables. Edit `../shellhub/rootfs_overlay/etc/default/shellhub-agent`:
40
+
The external tree ships a root filesystem overlay for the agent's environment file. Create `rootfs_overlay/etc/default/shellhub-agent` in the external tree:
Copy file name to clipboardExpand all lines: ui/apps/docs/src/pages/embedded-linux/overview.mdx
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,10 @@ description: Integrate the ShellHub agent into embedded Linux firmware with Buil
6
6
7
7
# Embedded Linux
8
8
9
-
ShellHub provides first-class support for embedded Linux platforms. Instead of installing the agent after deployment, you embed it directly into your firmware image — the agent starts automatically on boot and connects to ShellHub without manual setup on each device.
9
+
ShellHub runs on embedded Linux platforms. There are two ways to get the agent onto a device:
10
+
11
+
-**Build it into your firmware** with [Buildroot](/embedded-linux/buildroot) or [Yocto](/embedded-linux/yocto). The agent is part of the rootfs and connects on first boot, with no per-device install step. This page covers that approach.
12
+
-**Install it on a device already running an embedded OS** — for example a [Raspberry Pi](/embedded-linux/raspberry-pi) running Raspberry Pi OS — with the agent install script.
10
13
11
14
## Why embed the agent?
12
15
@@ -50,7 +53,8 @@ The exact variable names differ by build system. See the [Buildroot](/embedded-l
50
53
51
54
## Next steps
52
55
53
-
-[Buildroot](/embedded-linux/buildroot) — BR2_EXTERNAL setup and QEMU testing
56
+
-[Buildroot](/embedded-linux/buildroot) — BR2_EXTERNAL setup and configuration
Copy file name to clipboardExpand all lines: ui/apps/docs/src/pages/embedded-linux/raspberry-pi.mdx
+13-84Lines changed: 13 additions & 84 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,120 +6,49 @@ description: Install the ShellHub agent on Raspberry Pi running Raspberry Pi OS
6
6
7
7
# Raspberry Pi
8
8
9
-
Install the ShellHub agent on a Raspberry Pi running Raspberry Pi OS (Debian-based). Once installed, you can SSH into your Pi from anywhere through ShellHub — no port forwarding, no dynamic DNS, no VPN.
9
+
Install the ShellHub agent on a Raspberry Pi running Raspberry Pi OS (Debian-based). Once installed, you can SSH into your Pi from anywhere through ShellHub — no port forwarding, no dynamic DNS, no VPN, even behind NAT or CGNAT.
10
10
11
11
## Prerequisites
12
12
13
13
- Raspberry Pi (any model: Zero, 3, 4, 5) running Raspberry Pi OS (32-bit or 64-bit)
14
14
- Internet connection on the Pi
15
15
- A ShellHub account with a namespace
16
16
17
-
## Install with the install script
17
+
## Install the agent
18
18
19
-
The fastest way. SSH into your Pi (or open a terminal) and run:
19
+
SSH into your Pi (or open a terminal) and run:
20
20
21
21
```bash
22
22
$ curl -sSf "https://cloud.shellhub.io/install.sh?tenant_id=YOUR_TENANT_ID"| sh
23
23
```
24
24
25
-
Replace `YOUR_TENANT_ID` with your namespace's tenant ID (found in the namespace selector or Settings page). The script detects your Pi's architecture (armhf or arm64) and installs the appropriate agent binary.
25
+
Replace `YOUR_TENANT_ID` with your namespace's tenant ID. You can also copy this command with the tenant ID already filled in from **Add Device** in the dashboard.
26
+
27
+
The script auto-detects your Pi's architecture (`armv7l`/`aarch64`) and the best install method available. On a stock Raspberry Pi OS it installs the agent as a systemd service (`shellhub-agent`) that starts on boot and restarts on failure; if Docker or Podman is already present, it uses that instead. You don't need to pick a method or write a `docker run` command by hand.
26
28
27
29
For self-hosted ShellHub, replace the URL with your server address:
28
30
29
31
```bash
30
32
$ curl -sSf "https://your-server.example.com/install.sh?tenant_id=YOUR_TENANT_ID"| sh
31
33
```
32
34
33
-
After installation, the agent starts automatically and the Pi appears as **Pending** in the ShellHub dashboard. Accept it to start connecting.
34
-
35
-
## Install with Docker
36
-
37
-
If your Pi has Docker installed:
38
-
39
-
```bash
40
-
$ docker run -d \
41
-
--name shellhub-agent \
42
-
--restart always \
43
-
--privileged \
44
-
--net host \
45
-
--pid host \
46
-
-v /:/host \
47
-
-v /dev:/dev \
48
-
-v /var/run/docker.sock:/var/run/docker.sock \
49
-
-v /etc/shellhub:/etc/shellhub \
50
-
-e SERVER_ADDRESS=https://cloud.shellhub.io \
51
-
-e TENANT_ID=<your-tenant-id> \
52
-
shellhubio/agent
53
-
```
54
-
55
-
Replace `<your-tenant-id>` with your namespace's tenant ID (found in the namespace selector or Settings page).
56
-
57
-
See the [Docker guide](/agent/docker) for more options.
58
-
59
-
## Install with Snap
35
+
## Accept the device
60
36
61
-
On Ubuntu-based Raspberry Pi OS or Ubuntu Server for Pi:
62
-
63
-
```bash
64
-
$ sudo snap install shellhub-agent
65
-
$ sudo snap set shellhub-agent server-address=https://cloud.shellhub.io
66
-
$ sudo snap set shellhub-agent tenant-id=<your-tenant-id>
67
-
$ sudo snap start shellhub-agent
68
-
```
69
-
70
-
See the [Snap guide](/agent/snap) for details.
37
+
Once the agent is running, the Pi appears as **Pending** on the Devices page in the dashboard. Accept it to start connecting.
71
38
72
39
## Connecting to your Pi
73
40
74
-
Once the agent is running and the device is accepted:
75
-
76
-
**Web terminal** — Click the terminal icon next to your Pi on the Devices page.
77
-
78
-
**Native SSH** — Use the SSHID:
41
+
Once the device is accepted, connect through the web terminal or any native SSH client using its SSHID:
Replace `pi` with your Pi's username, `mynamespace` with your namespace, and `raspberrypi` with the device hostname shown in the dashboard.
85
-
86
-
## Headless setup
87
-
88
-
For Pis deployed without a monitor or keyboard, install the agent as part of your provisioning process:
89
-
90
-
1. Flash Raspberry Pi OS to an SD card
91
-
2. Enable SSH on first boot (create an empty `ssh` file in the boot partition)
92
-
3. Configure Wi-Fi if needed (`wpa_supplicant.conf` in boot partition)
93
-
4. Boot the Pi and SSH in over your local network
94
-
5. Run the install script
95
-
6. Accept the device in ShellHub
47
+
Replace `pi` with your Pi's username, `mynamespace` with your namespace, and `raspberrypi` with the device hostname. See [Connecting via SSH](/guides/connecting) for the full details.
96
48
97
49
From this point on, you can reach the Pi through ShellHub regardless of network changes — even if it moves to a different Wi-Fi network, gets a new IP, or goes behind a NAT.
98
50
99
-
## Embedded use cases
100
-
101
-
If you're building a custom Linux image for Raspberry Pi with Buildroot or Yocto, you can embed the agent directly into the firmware. See [Embedded Linux](/embedded-linux/overview) for build system integrations.
102
-
103
-
## Troubleshooting
104
-
105
-
**Agent not starting** — Check the agent logs:
106
-
107
-
```bash
108
-
$ journalctl -u shellhub-agent -f
109
-
```
110
-
111
-
Or for Docker:
112
-
113
-
```bash
114
-
$ docker logs shellhub-agent
115
-
```
116
-
117
-
**Device shows as offline** — Make sure the Pi has internet access and can reach your ShellHub server on port 443. Test with:
118
-
119
-
```bash
120
-
$ curl -I https://cloud.shellhub.io
121
-
```
122
-
123
-
**Wrong architecture** — The install script auto-detects architecture. If it fails, check with `uname -m`. Raspberry Pi OS 32-bit reports `armv7l`, 64-bit reports `aarch64`.
51
+
## Next steps
124
52
125
-
**Permission denied after connecting** — The default user on Raspberry Pi OS is `pi` (older images) or your custom username (newer images). Make sure you're using the correct username in the SSHID.
53
+
-[Connecting via SSH](/guides/connecting) — Web terminal and native SSH clients
54
+
-[Agent Overview](/agent/overview) — How the agent works and its configuration
0 commit comments