# TrueNAS Integration Pulse v6 includes first-class monitoring for **TrueNAS SCALE** and **TrueNAS CORE** systems. TrueNAS data flows through the unified resource model, appearing alongside Proxmox, Docker, Kubernetes, and host agent data throughout the UI. ## Quick Start 1. Go to **Settings → TrueNAS**. 2. Click **Add Connection**. 3. Enter the TrueNAS URL (e.g., `https://truenas.local`) and an API key. 4. Click **Test Connection** → **Save**. 5. Data appears within one polling cycle (~30 seconds). ## Creating a TrueNAS API Key On your TrueNAS system: 1. Navigate to **Settings → API Keys** (SCALE) or **System → API Keys** (CORE). 2. Click **Add** and create a new key. 3. Copy the key value and paste it into Pulse. > **Tip**: A read-only key is sufficient for monitoring on most TrueNAS versions. Native app control actions require a key with the corresponding TrueNAS app permissions. > > **TrueNAS SCALE 25.10**: API keys are linked to a user, and keys for users with the Readonly Admin role can be rejected with 403 on endpoints Pulse polls (TrueNAS serves these through its deprecated REST bridge). Until Pulse moves to the TrueNAS WebSocket API, use a key linked to a Full Admin user on 25.10. ## What Gets Monitored | Data | Unified Page | Details | |---|---|---| | System info (hostname, version, uptime) | Infrastructure | CPU, memory, health status | | Virtual machines | TrueNAS Overview | State, CPU, memory, boot mode, devices, and security flags from the TrueNAS VM API | | Apps | TrueNAS Overview | Native app state, image/version, ports, volumes, networks, and runtime container details | | ZFS Pools | Storage | Total/used/free capacity, pool status (ONLINE/DEGRADED/FAULTED) | | ZFS Datasets | Storage | Used/available space, mount status, read-only flag | | Physical Disks | Storage | Model, serial, size, transport type, rotational flag | | ZFS Snapshots | Recovery | Dataset, creation time, size, referenced data | | Replication Tasks | Recovery | Source/target datasets, direction, last run status | | TrueNAS Alerts | Alerts | Native TrueNAS alert messages and severity levels | ## Unified Resource Mapping TrueNAS resources are mapped into the unified resource model: - **TrueNAS host** → appears as a resource with `source: truenas` on the **Infrastructure** page. - **TrueNAS VMs** → appear as canonical `vm` workloads on the **TrueNAS** page. - **TrueNAS apps** → appear as canonical `app-container` workloads on the **TrueNAS** page. - **ZFS pools and datasets** → appear on the **Storage** page. - **ZFS snapshots and replication** → appear on the **Recovery** page as recovery points. - **TrueNAS alerts** → surfaced on the **Alerts** page alongside Proxmox and other platform alerts. Resources from TrueNAS can be filtered using the **source** filter on any page. ## Multiple TrueNAS Systems Add as many TrueNAS connections as needed. Each connection is polled independently. Resources from all connected systems are merged into the unified view. ## Configuration ### Environment Variables | Variable | Description | Default | |---|---|---| | `PULSE_ENABLE_TRUENAS` | Enable/disable TrueNAS integration | `true` | ### Storage TrueNAS connection credentials are stored encrypted in `truenas.enc` in the Pulse data directory (`/etc/pulse` or `/data`). ## API Reference All endpoints require admin authentication. | Method | Endpoint | Description | |---|---|---| | `GET` | `/api/truenas/connections` | List all configured TrueNAS connections | | `POST` | `/api/truenas/connections` | Add a new TrueNAS connection | | `DELETE` | `/api/truenas/connections/{id}` | Remove a TrueNAS connection | | `POST` | `/api/truenas/connections/test` | Test a connection before saving | ### Adding a connection (API) ```bash curl -X POST http://localhost:7655/api/truenas/connections \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"nas-1","host":"https://truenas.local","api_key":"your-api-key"}' ``` ### Testing a connection (API) ```bash curl -X POST http://localhost:7655/api/truenas/connections/test \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"nas-1","host":"https://truenas.local","api_key":"your-api-key"}' ``` ## Troubleshooting ### "TrueNAS service unavailable" - Check that the TrueNAS system is reachable from the Pulse server. - Verify the URL includes the protocol (`https://`). - Test connectivity manually: ```bash curl -sk -H "Authorization: Bearer " https:///api/v2.0/system/info ``` ### No data appearing after adding connection - Wait at least 30 seconds for the first poll cycle. - Check Pulse logs for TrueNAS-related errors: ```bash journalctl -u pulse | grep -i truenas # or docker logs pulse | grep -i truenas ``` ### Stale TrueNAS data - If TrueNAS data stops updating, the source status transitions to `stale` after ~120 seconds. - Check TrueNAS connectivity and API key validity. - Verify with the API: ```bash curl -H "Authorization: Bearer $TOKEN" http://localhost:7655/api/resources \ | jq '.resources[] | select(.platformType == "truenas")' ``` ### Disabling TrueNAS integration Set `PULSE_ENABLE_TRUENAS=false` and restart Pulse. Existing connection data is preserved but polling stops. ## See Also - [Configuration Guide](CONFIGURATION.md#truenas) — environment variables and setup - [ZFS Monitoring](ZFS_MONITORING.md) — Proxmox-native ZFS pool monitoring - [Recovery](RECOVERY.md) — TrueNAS snapshots in the recovery view