Auto-update blog content from Obsidian: 2026-04-29 20:40:29
Some checks failed
Blog Deployment / Notify (push) Successful in 3s
Blog Deployment / Check-Rebuild (push) Successful in 6s
Blog Deployment / Build (push) Has been skipped
Blog Deployment / Deploy-Staging (push) Successful in 9s
Blog Deployment / Test-Staging (push) Failing after 3s
Blog Deployment / Merge (push) Has been skipped
Blog Deployment / Test-Production (push) Has been skipped
Blog Deployment / Clean (push) Has been skipped
Blog Deployment / Deploy-Production (push) Has been skipped
Some checks failed
Blog Deployment / Notify (push) Successful in 3s
Blog Deployment / Check-Rebuild (push) Successful in 6s
Blog Deployment / Build (push) Has been skipped
Blog Deployment / Deploy-Staging (push) Successful in 9s
Blog Deployment / Test-Staging (push) Failing after 3s
Blog Deployment / Merge (push) Has been skipped
Blog Deployment / Test-Production (push) Has been skipped
Blog Deployment / Clean (push) Has been skipped
Blog Deployment / Deploy-Production (push) Has been skipped
This commit is contained in:
@@ -67,7 +67,7 @@ I considered FreeNAS/TrueNAS, OpenMediaVault, and Unraid. I chose TrueNAS SCALE
|
||||
The install didn’t go as smoothly as expected...
|
||||
|
||||
I use [Ventoy](https://www.ventoy.net/en/index.html) to keep multiple ISOs on one USB stick. I was in version 1.0.99, and the ISO wouldn't launch. Updating to 1.1.10 fixed it:
|
||||

|
||||

|
||||
|
||||
But here I encountered another problem when launching the installation on my eMMC storage device:
|
||||
```
|
||||
@@ -76,16 +76,16 @@ Failed to find partition number 2 on mmcblk0
|
||||
|
||||
I found a solution on this [post](https://forums.truenas.com/t/installation-failed-on-emmc-odroid-h4/15317/12):
|
||||
- Enter the shell
|
||||

|
||||

|
||||
- Edit the file `/lib/python3/dist-packages/truenas_installer/utils.py`
|
||||
- Move the line `await asyncio.sleep(1)` right beneath `for _try in range(tries):`
|
||||
- Edit line 46 to add `+ 'p'`:
|
||||
`for partdir in filter(lambda x: x.is_dir() and x.name.startswith(device + 'p'), dir_contents):`
|
||||

|
||||

|
||||
- Exit the shell and start the installation without reboot
|
||||
|
||||
The installer was finally able to get through:
|
||||

|
||||

|
||||
|
||||
Once the installation was complete, I shut down the machine. Then I installed it into my rack on top of the 3 Proxmox VE nodes. I plugged both Ethernet cables from my switch and powered it up.
|
||||
|
||||
@@ -97,18 +97,18 @@ By default, TrueNAS uses DHCP. I found its MAC address in my UniFi interface and
|
||||
### General Settings
|
||||
|
||||
During install, I didn’t set a password for truenas_admin. The login page forced me to pick one:
|
||||

|
||||

|
||||
|
||||
Once the password is updated, I land on the dashboard. The UI feels great at first glance:
|
||||

|
||||

|
||||
|
||||
I quickly explore the interface, the first thing I do is changing the hostname to `granite` and check the box below et it inherit domain from DHCP:
|
||||

|
||||

|
||||
|
||||
In the `General Settings`, I change the `Localization` settings. I set the Console Keyboard Map to `French (AZERTY)` and the Timezone to `Europe/Paris`.
|
||||
|
||||
I create a new user `vez`, with `Full Admin` role within TrueNAS. I allow SSH for key‑based auth only, no passwords:
|
||||

|
||||

|
||||
|
||||
Finally I remove the admin role from `truenas_admin` and lock the account.
|
||||
|
||||
@@ -117,16 +117,16 @@ Finally I remove the admin role from `truenas_admin` and lock the account.
|
||||
In TrueNAS, a pool is a storage collection created by combining multiple disks into a unified ZFS‑managed space.
|
||||
|
||||
In the `Storage` page, I can find my `Disks`, where I can confirm TrueNAS can see my couple of NVMe drives:
|
||||

|
||||

|
||||
|
||||
Back in the `Storage Dashboard`, I click the `Create Pool` button. I name the pool `storage` because I'm really inspired to give it a name:
|
||||

|
||||

|
||||
|
||||
Then I select the `Mirror` layout:
|
||||

|
||||

|
||||
|
||||
I explore quickly the optional configurations, but the defaults are fine to me: autotrim, compression, no dedup, etc. At the end, before creating the pool, there is a `Review` section:
|
||||

|
||||

|
||||
|
||||
After hitting `Create Pool`, I'm warned that everything on the disks will be wiped, which I confirm. Finally the pool is created.
|
||||
|
||||
@@ -137,10 +137,10 @@ A dataset is a filesystem inside a pool. It can contains files, directories and
|
||||
#### SMB share
|
||||
|
||||
Let's now create my first dataset `files` to share files over the network for my Windows clients, like ISOs, etc:
|
||||

|
||||

|
||||
|
||||
When creating SMB datasets in SCALE, set Share Type to SMB so the right ACL/xattr defaults apply. TrueNAS then prompts me to start/enable the SMB service:
|
||||

|
||||

|
||||
|
||||
From my Windows Laptop, I try to access my new share `\\granite.mgmt.vezpi.com\files`. As expected I'm prompt to give credentials.
|
||||
|
||||
@@ -155,7 +155,7 @@ I create another dataset: `media`, and a child `photos`. I create a NFS share fr
|
||||
On my current NFS server, the files for the photos are owned by `root` (managed by *Immich*). Later I'll see how I can migrate towards a root-less version.
|
||||
|
||||
⚠️ For now I set, in `Advanced Options`, the `Maproot User` and `Maproot Group` to `root`. This is equivalent to the NFS attribute `no_squash_root`, the local `root` of the client stays `root` on the server, don't do that:
|
||||

|
||||

|
||||
|
||||
✅ I mount the NFS share on a client, this works fine.
|
||||
|
||||
@@ -175,14 +175,14 @@ I mentioned VM capabilities in my requirements. I won't cover that is this post,
|
||||
### Data protection
|
||||
|
||||
Now time to enable some data protection features:
|
||||

|
||||

|
||||
|
||||
I want to create automatic snapshots for some of my datasets, those I care the most: my cloud files and photos.
|
||||
|
||||
Let's create snapshot tasks. I click on the `Add` button next to `Periodic Snapshot Tasks`:
|
||||
- cloud: daily snapshots, keep for 2 months
|
||||
- photos: daily snapshots, keep for 7 days
|
||||

|
||||

|
||||
|
||||
I could also set up a `Cloud Sync Task`, but Duplicati already handles offsite backups.
|
||||
|
||||
@@ -200,12 +200,12 @@ sudo rsync -a --info=progress2 /data/photo/ /new_photos
|
||||
```
|
||||
|
||||
At the end, I could decommission my old NFS server on the LXC. The dataset layout after migration looks like this:
|
||||

|
||||

|
||||
|
||||
### Android application
|
||||
|
||||
Out of curiosity, I've checked on the Google Play store for an app to manage a TrueNAS instance. I've found [Nasdeck](https://play.google.com/store/apps/details?id=com.strtechllc.nasdeck&hl=fr&pli=1), which is quite nice. Here some screenshots:
|
||||

|
||||

|
||||
|
||||
---
|
||||
## Conclusion
|
||||
|
||||
Reference in New Issue
Block a user