From ae3143a2ba27d5dea840fa28601a0988cff8f01f Mon Sep 17 00:00:00 2001 From: SandObserver <260779319+SandObserver@users.noreply.github.com> Date: Thu, 22 Oct 2026 21:58:53 -0400 Subject: [PATCH] Docs: cover the TrueNAS WebSocket API and System Summary source --- src/content/docs/docs/security.md | 2 +- src/content/docs/docs/widgets/disk-health.mdx | 7 ++++--- src/content/docs/docs/widgets/index.mdx | 2 +- .../docs/docs/widgets/system-summary.mdx | 18 +++++++++++++++--- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/content/docs/docs/security.md b/src/content/docs/docs/security.md index 6bc1c3f..9ebf919 100644 --- a/src/content/docs/docs/security.md +++ b/src/content/docs/docs/security.md @@ -49,7 +49,7 @@ Secrets are stored in plain text in `apps.json` on the data volume. Protect that The server blocks outbound requests to private, loopback, link-local, carrier-grade NAT, multicast and reserved ranges, in IPv4 and IPv6. It resolves the host, checks the address, then pins the resolved IP so the connection cannot be re-pointed after the check. -`localhost` is refused by name. A dotless hostname such as a Docker container name is resolved and pinned like any other name. It may point at a private address, but not at a loopback or link-local one. The host IP set in General is trusted. Only `http` and `https` URLs are fetched. +`localhost` is refused by name. A dotless hostname such as a Docker container name is resolved and pinned like any other name. It may point at a private address, but not at a loopback or link-local one. The host IP set in General is trusted. Only `http` and `https` URLs are fetched. The WebSocket connection TrueNAS widgets use opens on the same URL and passes the same check. | Range | Why | | --- | --- | diff --git a/src/content/docs/docs/widgets/disk-health.mdx b/src/content/docs/docs/widgets/disk-health.mdx index 9b00cea..6dd5cad 100644 --- a/src/content/docs/docs/widgets/disk-health.mdx +++ b/src/content/docs/docs/widgets/disk-health.mdx @@ -37,10 +37,11 @@ Small holds four bays. Medium holds ten. kind: 'NAS operating system', needs: 'URL, API key', fields: [ - ['TrueNAS URL', 'For example `truenas.local`.'], - ['TrueNAS API Key', 'Stored as a secret.'], + ['TrueNAS URL', 'For example `truenas.local`. An address without `https://` gets it. An `http://` address is refused, because TrueNAS revokes an API key sent over HTTP.'], + ['TrueNAS API Key', 'Stored as a secret. The `POOL_READ` role is enough.'], + ['Allow Self-Signed Certificate', 'Turn on for the certificate TrueNAS installs by default.'], ], - notes: ['TrueNAS 25.x only. Later versions do not have the REST API this widget reads. On a later version, run Scrutiny instead.'], + notes: ['Reads pool health. TrueNAS 25.04 and later answer on the WebSocket API. Older versions are read over the REST API.'], links: [{ label: 'truenas.com', href: 'https://www.truenas.com/' }], }, ]} /> diff --git a/src/content/docs/docs/widgets/index.mdx b/src/content/docs/docs/widgets/index.mdx index 3b3bf3f..5968db9 100644 --- a/src/content/docs/docs/widgets/index.mdx +++ b/src/content/docs/docs/widgets/index.mdx @@ -32,7 +32,7 @@ Widgets reorder in the same list as apps and folders. See [Apps and folders](/do { href: '/docs/widgets/dns/', name: 'DNS', text: 'Blocked and total queries.', value: 'AdGuard Home, Pi-hole, Technitium, NextDNS' }, { href: '/docs/widgets/github/', name: 'GitHub', text: 'Pull requests or a contribution graph.', value: 'GitHub' }, { href: '/docs/widgets/now-playing/', name: 'Now Playing', text: 'What is playing, with progress.', value: 'Plex, Jellyfin, Emby, Navidrome' }, - { href: '/docs/widgets/system-summary/', name: 'System summary', text: 'CPU, memory, disk, temperature and network.', value: 'This machine, Glances, Beszel, Unraid' }, + { href: '/docs/widgets/system-summary/', name: 'System summary', text: 'CPU, memory, disk, temperature and network.', value: 'This machine, Glances, Beszel, Unraid, TrueNAS' }, { href: '/docs/widgets/weather/', name: 'Weather', text: 'Current conditions for one place.', value: 'Open-Meteo, OpenWeather' }, ]} /> diff --git a/src/content/docs/docs/widgets/system-summary.mdx b/src/content/docs/docs/widgets/system-summary.mdx index c9bb8d2..c921b2d 100644 --- a/src/content/docs/docs/widgets/system-summary.mdx +++ b/src/content/docs/docs/widgets/system-summary.mdx @@ -1,6 +1,6 @@ --- title: System summary widget -description: CPU, memory, disk, temperature and network stats from the host, Glances, Beszel or Unraid, on your Stackyard dashboard. +description: CPU, memory, disk, temperature and network stats from the host, Glances, Beszel, Unraid or TrueNAS, on your Stackyard dashboard. --- import WidgetGroup from '../../../../components/WidgetGroup.astro'; @@ -66,6 +66,18 @@ Sizes: Small, Medium. notes: ['Unraid reports neither IO wait nor a process count.'], links: [{ label: 'unraid.net', href: 'https://unraid.net/' }], }, + { + name: 'TrueNAS', icon: 'truenas-scale', + kind: 'NAS operating system', + needs: 'URL, API key', + fields: [ + ['TrueNAS URL', 'For example `truenas.local`. An address without `https://` gets it. An `http://` address is refused, because TrueNAS revokes an API key sent over HTTP.'], + ['TrueNAS API Key', 'Stored as a secret. Create it for an account whose privilege has the `REPORTING_READ`, `POOL_READ` and `DATASET_READ` roles.'], + ['Allow Self-Signed Certificate', 'Turn on for the certificate TrueNAS installs by default.'], + ], + notes: ['TrueNAS 25.04 or later. TrueNAS reports neither IO wait nor a process count. A Disk slot reads a pool, or the first pool when empty. Memory leaves out the ZFS cache. Uptime needs the `READONLY_ADMIN` role, and is empty without it.'], + links: [{ label: 'truenas.com', href: 'https://www.truenas.com/' }], + }, ]} /> @@ -101,7 +113,7 @@ Medium size only.