Files
sencho/docs/features/fleet-view.mdx
T
Anso a55d1245f8 fix(fleet): resolve version detection pipeline for Docker builds (#402)
* fix(fleet): resolve version detection pipeline for Docker builds

The Dockerfile backend-builder stage was missing a COPY of the root
package.json, causing generate-version.js to fall back to "0.0.0-dev"
at build time. At runtime, the filesystem walk also failed (root
package.json not in the final image), producing the string "unknown"
which the frontend rendered as "vunknown".

Changes:
- Dockerfile: copy root package.json into backend-builder stage
- CapabilityRegistry: return null (not "unknown") for unresolvable
  versions; add isValidVersion() type guard; normalize remote meta
  responses to strip "unknown"/"0.0.0-dev" sentinel values
- Fleet endpoints: hoist gateway version validation outside per-node
  loops; treat unresolvable remote versions as "potentially outdated"
  instead of silently marking them up to date
- FleetView: guard all version display points (card badge, update
  button, gateway label, modal columns) via shared formatVersion()
- EditorLayout, CapabilityGate: use shared isValidVersion utility
- New frontend/src/lib/version.ts shared utility
- Docs: add troubleshooting section for version display edge cases
- Screenshots: updated Fleet Overview and Node Updates modal

* docs: update fleet node updates screenshot with live remote node
2026-04-06 03:03:56 -04:00

181 lines
7.9 KiB
Plaintext

---
title: Fleet View
description: Monitor all your nodes from a single dashboard with real-time health metrics, search, filtering, and container drill-down.
---
The **Fleet** tab gives you a bird's-eye view of every node in your Sencho deployment, local and remote, on one screen. It is available to all tiers, with advanced features unlocked by Skipper and Admiral.
<Frame>
<img src="/images/fleet-view/fleet-overview.png" alt="Fleet Overview showing health summary cards, toolbar, node cards, and tabs" />
</Frame>
## Page layout
The Fleet page is divided into two tabs:
- **Overview** - the main monitoring view described on this page
- **Snapshots** - fleet-wide backup snapshots (covered in [Fleet Backups](/features/fleet-backups))
The header shows **Fleet Overview** with a subtitle summarising the current state (e.g. "2 of 2 nodes online, 31 containers, 21 stacks"). Two buttons sit in the top-right corner:
| Button | What it does |
|--------|--------------|
| **Check Updates** | Opens the Node Updates modal to view and apply Sencho version updates across your fleet (Skipper+) |
| **Refresh** | Re-fetches data from all nodes. Shows a spinner while loading |
## Community features
Every Sencho installation gets the full fleet monitoring grid at no cost.
### Node grid
Each node appears as a card showing:
| Data | Description |
|------|-------------|
| **Status badge** | Online (green) or Offline (grayed out) |
| **Type badge** | `local` or `remote` |
| **Version badge** | The node's Sencho version (e.g. `v0.38.0`). Remote nodes running older versions that cannot report their version show no version badge |
| **Update available badge** | Orange pill shown when a newer Sencho version is available for this node |
| **Critical badge** | Red pill shown when CPU or disk usage exceeds 90% |
| **Running containers** | Count of containers in `running` state |
| **Stopped containers** | Count of containers in `exited` state |
| **Stacks** | Total number of Compose stacks on the node |
| **CPU usage** | Current percentage with colour-coded bar (green to amber to red) |
| **RAM usage** | Used / total with percentage bar |
| **Disk usage** | Used / total with percentage bar |
Nodes with an available Sencho update also show an **Update to vX.Y.Z** button at the bottom of the card.
Offline nodes are visually dimmed and show a "Node unreachable" placeholder instead of stats.
### Manual refresh
Click the **Refresh** button in the top-right to re-fetch data from all nodes. The button shows a spinner while loading.
---
## Paid features
<Note>
The features below require a Skipper or Admiral license. Community users see an upgrade prompt in place of these controls.
</Note>
### Fleet health summary cards
Four cards appear above the node grid, aggregating data across all online nodes:
| Card | What it shows |
|------|---------------|
| **Containers** | Total running containers, with fleet-wide total in subtitle |
| **Fleet CPU** | Average CPU across all online nodes, plus which node has the highest load |
| **Fleet Memory** | Total RAM used / total available across the fleet |
| **Alerts** | Count of nodes with critical resource usage (CPU or disk above 90%). Card turns red when any exist |
### Auto-refresh
Fleet data automatically refreshes every 30 seconds. A subtle indicator at the bottom of the page confirms this is active. When a node update is in progress, the refresh rate increases to every 5 seconds so you can watch status changes in near real-time.
### Search
The search bar filters the node grid in real time. It matches against:
- Node names (e.g. typing `dev` shows only nodes with "dev" in the name)
- Stack names (e.g. typing `plex` shows only nodes that have a "plex" stack)
### Sorting
Use the sort dropdown to order nodes by:
- **Name** (alphabetical)
- **CPU Usage** (highest first)
- **Memory Usage** (highest first)
- **Containers** (most first)
- **Status** (online first)
Click the arrow button next to the dropdown to toggle ascending/descending.
Sort preferences are saved to your browser and persist across sessions.
### Filtering
Filter pills let you narrow the grid:
| Filter | Options |
|--------|---------|
| **Status** | All, Online, Offline |
| **Type** | All Types, Local, Remote |
| **Critical Only** | Show only nodes with CPU or disk above 90% |
| **Tags** | Filter by stack labels assigned to nodes |
A "Clear filters" button appears when filters hide all nodes.
### Stack drill-down
Click **Stack details** on any online node card to expand the stack list. The button shows the total stack count (e.g. "18 stacks"). Each stack in the list shows a container count badge.
Click a stack name to expand it further and see individual containers with:
- Container name
- State badge (running, exited, restarting)
- Image name (e.g. `linuxserver/plex:latest`)
- Uptime (e.g. "Up 4 days")
Hover over any container row to reveal an **Open in editor** button that navigates you directly to that stack's editor on the corresponding node.
<Frame>
<img src="/images/fleet-view/fleet-drill-down.png" alt="Fleet View with Stack details expanded showing the stack list and a container drill-down" />
</Frame>
### Critical node detection
Nodes with CPU or disk usage above 90% automatically receive a red **Critical** badge. Combined with the **Critical Only** filter, this lets you quickly triage overloaded servers.
### Node Updates
Click **Check Updates** in the header to open the Node Updates modal. This lets you manage Sencho version updates across your entire fleet from one place.
<Frame>
<img src="/images/fleet-view/fleet-node-updates.png" alt="Node Updates modal showing update status for all fleet nodes" />
</Frame>
The modal shows:
- **Summary cards** at the top: counts of nodes that are Up to date, have updates Available, are currently Updating, or have Failed
- **Gateway version** label showing your primary instance's version
- **Filter** search box to find specific nodes
- **Node table** with columns: Node name, Type, Current version, Latest version, and Status (either an "Up to date" badge or an "Update" button)
- **Recheck** button to re-scan for available updates
- **Update All** button to trigger updates on all remote nodes that have a pending update
When you click **Update** on a remote node, Sencho sends the update command and the node restarts with the new version. If you update the local node, a reconnection overlay appears while your primary instance restarts.
---
## How fleet data is fetched
Fleet View queries all registered nodes in parallel. Each node responds independently; one slow or offline node does not block the others. Local node data comes from the Docker socket and system stats directly. Remote node data is fetched over the Distributed API proxy using each node's Bearer token.
<Note>
Fleet View always runs on your primary (local) Sencho instance. It is never proxied through a remote node.
</Note>
---
## Troubleshooting
### Version shows as "unknown" for a remote node
This means the remote node's `/api/meta` endpoint did not return a valid version. Common causes:
- **Remote node is offline or unreachable.** Check that the node's API URL and token are correct in the node configuration.
- **Remote node is running an older Sencho version** that predates the version reporting feature. Update the remote node manually (pull the latest Docker image and restart the container) to restore version reporting.
Once the remote node is reachable and running a current Sencho version, its version will appear automatically on the next fleet refresh.
### "Update All" says no updates available
The **Update All** button only triggers updates on remote nodes that:
1. Report a valid version lower than your primary instance's version
2. Support the self-update capability (requires running in Docker)
If a remote node's version is unresolvable ("unknown"), the **Update** button on its individual card will still be available, but **Update All** requires both versions to be known for a safe comparison.