> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.proto.xyz/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.proto.xyz/_mcp/server.

# Update a Fleet Node

Run the installer for an exact newer release on the Fleet Node host. Fleet Node does not update itself or resolve a moving `latest` channel.

Use a release supported by your Fleet deployment. When possible, use the same release tag as Fleet. Confirm that the target release includes `install-fleet-node.sh` and an archive for your host architecture on the [Proto Fleet releases page](https://github.com/block/proto-fleet/releases).

#### Read the installed version

```bash
cat /opt/fleetnode/version.txt
```

The file reports the exact installed tag.

#### Install the target release

Set `VERSION` to the exact target tag. This example uses `v0.3.1-rc.6`:

```bash
VERSION=v0.3.1-rc.6
bash <(curl -fsSL "https://github.com/block/proto-fleet/releases/download/${VERSION}/install-fleet-node.sh") "${VERSION}"
```

The installer downloads and verifies the candidate before it interrupts an active service. It then stops the service, replaces the Fleet Node program and plugins, reloads the systemd unit, and starts the service again.

Enrollment state under `/var/lib/fleetnode` and configuration under `/etc/fleetnode` remain in place. You do not need to enroll the node again.

If the new service cannot start, the installer restores the previous program, plugins, service unit, and enrollment helper, then restarts the previous service.

#### Verify the update

```bash
cat /opt/fleetnode/version.txt
sudo systemctl is-active fleet-node.service
sudo journalctl -u fleet-node.service -n 100 --no-pager
```

Confirm that the version file contains the target tag, the service is active, and **Settings → Nodes** shows the node as **Online** without an update warning.

The service is briefly unavailable during replacement. Miners continue running, but Fleet cannot collect telemetry or send commands through this node until it reconnects.

If the service was already inactive or in an error state, the installer leaves it stopped after replacement. Start it after correcting the original problem:

```bash
sudo systemctl start fleet-node.service
```

For download, checksum, startup, or rollback problems, see [Fleet Node troubleshooting](/fleet/fleet-node/troubleshooting).