| title | TrueNAS Community Edition |
|---|---|
| description | This article will describe how to set up a TrueNAS server to be compatible will services described in this wiki. |
| published | true |
| date | 2026-08-13 01:32:20 UTC |
| tags | |
| editor | markdown |
| dateCreated | 2026-01-15 15:02:56 UTC |
This page was built to describe TrueNAS CE Goldeye 25.10.6 {.is-info}
https://youtu.be/cA8fZ-lfgaA?feature=shared
See the playlist here: https://youtube.com/playlist?list=PL6zQmF2gDqDT7SHyBe7ni1P2S4NzyJpD6
https://youtu.be/wbeAWq8WiqE?feature=shared
https://youtu.be/YgTFRrwJnwY?feature=shared
This is strongly recommended if you have a pool name with spaces or capitalization in it {.is-warning}
If you have any apps or shares accessing the pool, stop them before starting these steps {.is-danger}
-
Navigate to Storage → Pool
-
Click on the Export/Disconnect button to export the pool without destroying any of the data:
-
Next, in the shell, run these commands as root replacing the original name of the pool with the new name you have chosen.:
zpool import original_name new_name
-
to confirm the new name is working:
zpool status new_name
-
so we can import it in the GUI again:
zpool export new_name -
Lastly, navigate to the Storage → Pool tab and click the button for Import Pool in the top right corner. Select the new pool you have just renamed.
If you had any apps using hostpath for the old pool they will have to be edited/recreated. Same goes for rsync tasks, shares, snapshots, etc.
{.is-warning}
To add a single disk to an existing RAIDZ(1,2,3) pool, use the Extend button in the devices menu.
Note that you will not be able to gain 100% of the usable space from that disk until you run the rebalancing script. You can calculate how much capacity you will gain by using the calculator.
To view progress of the expansion, run this command in the shell:
zpool status pool_nameWatch Lawrence do it: https://youtu.be/uPCrDmjWV_I
https://youtu.be/27MhvLKBKtQ?feature=shared
For snapshots and rollbacks at a granular level, datasets should be set up in the pool for each individual app.
Apps running on Scale should use the Host Path Config option to store their data. You will find this option in the right hand menu under Storage Configuration > Type. This allows for the rapid redeployment of apps with no loss to their configurations, which can be considerable for some. Each app uses its respective host path from the example above. For a video explanation and example of this:
https://youtu.be/JZ9zbcyLcDo
In order for the apps to write to the dataset properly, make sure to select the ‘Apps’ option for the dataset preset:
Once the dataset has been created, you can still modify its permissions like below:
For a video walkthrough on permissions:
https://youtu.be/qAGN0_73cV4
Drive Health Management is how TrueNAS keeps an eye on your physical disks. Since TrueNAS 25.10 (Goldeye), the SMART test scheduling and results screens were removed from the GUI. SMART itself was not removed. TrueNAS still polls SMART data on every drive and still raises alerts on critical health indicators. What you lost is the recurring self-tests (the scheduled short and long scans), and this page shows you how to set those back up, how to read the results, and the other tasks that extend the life of your drives. This matters more than ever with hard drive prices up roughly 50% due to the AI storage crunch.
Setting up your own SMART self-tests is optional but recommended. A long test is the only thing that reads every sector, including empty ones, catching bad spots before your data lands on them. {.is-info}
TrueNAS 25.10 removed the SMART UI (NAS-134927) and the built-in test scheduler (NAS-135020). The smartmontools binaries are still installed, so scripts and third-party tools keep working. Existing scheduled tests from 25.04 and earlier were automatically migrated to cron jobs during the upgrade, so check your Cron Jobs list before creating new ones.
iX has announced they are working on bringing back API endpoints and UI trigger buttons for SMART testing in a future release. Until that ships, use one of the methods below. {.is-info}
TrueNAS ships a middleware command that already knows about every disk in the system, so it is the cleanest way to test everything at once. Open the Shell and run:
midclt call disk.smart_test SHORT '["*"]'Swap SHORT for LONG to run the full surface scan:
midclt call disk.smart_test LONG '["*"]'The ["*"] is a wildcard meaning "all disks."
A successful call returns
null. That is not an error, it just means the tests kicked off. This is also why you may get "produced the following output: null" emails after upgrading. {.is-warning}
To schedule it, go to System Settings → Advanced → Cron Jobs → Add, paste the command, set the user to root, and set a schedule. A good baseline is SHORT daily and LONG weekly or monthly.
If you would rather stay in pure smartctl and not touch the TrueNAS API, this portable loop tests every drive the scan finds, spinning disk, SATA SSD, or NVMe alike:
for dev in $(smartctl --scan | cut -d' ' -f1); do smartctl -t short "$dev"; doneAdd it under System Settings → Advanced → Cron Jobs, run as root, on a daily schedule. Make a second job with -t long for the weekly or monthly full scan.
For a full dashboard with per-drive history, scheduled tests, and alerting, install Scrutiny from the TrueNAS apps catalog:
- Navigate to Apps in the TrueNAS UI
- Search for Scrutiny
- Click Install, then open the Web UI
Scrutiny was forked and is under active development again, so it is a safe pick today. Once it is collecting data you get trend lines on every metric over time. {.is-success}
To fire a test at a single drive by hand:
smartctl -t short /dev/sda
smartctl -t long /dev/sdaThe short test takes a couple of minutes. The long test can take hours on a big spinning drive and runs in the background while the drive stays in service.
Find your disks first. This works for every drive type and tells you which are scsi (SATA/SAS) and which are nvme:
smartctl --scanThen pull the data you need:
smartctl -a /dev/sda # full health report
smartctl -H /dev/sda # quick pass/fail summary
smartctl -l selftest /dev/sda # results of the self-tests you ranBackblaze found that about 77% of drives that died had already tripped a warning on one of these five. Watch the raw values and their trend over time, not the normalized score (which is proprietary and varies by manufacturer).
| Attribute | ID | What it flags | Healthy value |
|---|---|---|---|
| Reallocated Sectors | 5 | Sectors remapped after going bad | 0, or low and stable |
| Current Pending Sectors | 197 | Bad sectors awaiting reallocation | 0 |
| Offline Uncorrectable | 198 | Sectors the drive cannot read | 0 |
| Reported Uncorrectable | 187 | Reads that ECC could not fix | 0 |
| Command Timeout | 188 | Aborted ops, often cabling or power | 0, or low and stable |
| {.dense} |
Those five are ATA attributes, so they apply to spinning drives and SATA SSDs. NVMe drives do not have them. On an NVMe drive, watch these instead in the smartctl -a output:
- Percentage Used: write endurance consumed. 100% means the rated limit, not a dead drive.
- Available Spare: reserve area left for remapping bad blocks.
- Media and Data Integrity Errors: should stay at 0.
Many consumer NVMe SSDs do not support the self-test command at all. If a test errors out on an NVMe drive, that is expected. You still read its health with
smartctl -a. {.is-info}
Scrub scheduling is still in the GUI. Go to Data Protection → Scrub Tasks and make sure every pool has one. A scrub reads every block, verifies it against its checksum, and self-heals from redundancy if a block has gone bad. Schedule scrubs weekly or monthly during quiet hours.
Never run a long SMART test and a scrub (or resilver) on the same drive at the same time. Long self-tests can take the disk offline. Stagger their schedules so they never collide.
When zpool status shows CKSUM, READ, or WRITE errors, cross-check SMART before you conclude:
- SMART clean, ZFS errors climbing → suspect the transport (cable, backplane, HBA, PSU). Reseat or replace the path before condemning the drive.
- SMART shows reallocations, pending, or uncorrectables → the drive is genuinely failing. Replace it.
Heat kills drives. Good airflow is one of the cheapest ways to extend drive life, and TrueNAS now monitors temperature on SATA and SAS disks. Fix airflow if a drive runs consistently hot.
Drives die and ZFS is not a magic bullet. There is no substitute for a real 3-2-1 backup: three copies, two different media, one off-site.
They are two legs of the same table, and neither replaces the other. SMART checks the container (the physical drive, including empty sectors your data has not touched yet). ZFS checks the contents (your actual blocks, via checksums and scrubs, and self-heals them). ZFS knows whether your data is intact but can infer nothing about the health of the metal it lives on. SMART is the only thing that sees the hardware. Run both.
https://www.youtube.com/watch?v=0lzFHySymsU
Having a static IP to your server will prove necessary if you refer to your apps as IP:Port as shown in most of this wiki. If the IP of the server were to change, all of your apps would become unreachable.
- Navigate to Network > Interfaces
- Click the Pencil icon next to your ethernet adapter
- Uncheck the box for DHCP
- Click Add for the Aliases. Enter your IP address, then select /24.
Make sure the IP address you select is available {.is-warning}
As long as you are accessing the WebGUI from the address you just selected, you should be given a prompt to Save Changes.
If you are coming from a different IP address, you will need to log back in within 60 seconds to the WebGUI at the new address you just chose, navigate to the Network page, then Save Changes. {.is-warning}
We need to change the Nameservers away from our local to something more reliable.
- Navigate to Network > Global Configuration
- Click Settings
- Change Nameserver 1 to
1.1.1.1and Nameserver 2 to9.9.9.9.
Before we setup the VM, we have to build a network bridge. This is necessary because without it, our VM won't be able to see anything on our TrueNAS host. Follow the docs or even better, follow this YouTube video:
https://youtu.be/XBcAMd_wyI0
Check out the new TrueNAS Apps directory and guide! {.is-success}
- Go to your router page and find an open IP in your subnet
- Navigate to the Network Tab and edit the interface your server is running on
- Add the open IP address as an additional Alias
- Navigate to the app you want to assign the IP address to
- Click Edit and scroll to the Network Configuration section, then the Host IPs subsection, then click Add
- Select the new IP address and click Save at the bottom
Note that the WebUI button will not open the correct IP when you click it; you must navigate to the app manually {.is-warning}
Always make sure you are using host path configuration for your volumes and take a backup of compose files first (if you are using them)! {.is-warning}
You should be taking regular backups of your Configuration File. Especially when upgrading versions, which you will be prompted to do before you start the upgrade.
To take a backup, click Manage Configuration → Download File. In the event you ever need to restore from that file, click Upload File.
When uploading a config file it will overwrite your current settings with the saved ones from the file! {.is-warning}
Some apps like Nginx Proxy Manager require ports 80 and 443. By default, TrueNAS uses these for the webGUI. Change them by clicking the Settings button to any other open port.
After you save the changes you will lose connection to the UI and have to navigate to the new port in the URL.
Lawrence does a great job of going over some basic security hardening tasks. Watch his video for some tips.
https://www.youtube.com/watch?v=fEWobaEIAHM






