Download iso
Versions available on Article creation date were
TrueNAS Scale 24.10 https://download.sys.truenas.net/TrueNAS-SCALE-ElectricEel/24.10.2.1/TrueNAS-SCALE-24.10.2.1.iso
TrueNAS Scale 25.04 RC1 https://download.sys.truenas.net/TrueNAS-SCALE-Fangtooth-RC/25.04-RC.1/TrueNAS-SCALE-25.04-RC.1.iso
TrueNAS Scale 24.10 does not support Intel N150 Intel Graphics, and I suspect it has reduced the Disk or Network performance on this device. So it needs to be upgraded to at least to TrueNAS Scale 25.04-RC.1
Burn .iso to USB Flash drive
Burn to Flash using Balena Etcher https://etcher.balena.io/#download-etcher (Rufus might not work)
Boot From Flash
Installer main menu
Choose eMMC so all NVMe can join the pool of disks
Some Warning on all data lost on eMMC if we proceed
Choose to configure on the Web, just to save time. Since it might not be a successful attempt, why spend time now?
That is the step when things are going to go well or not well
Something wrong, looks like. Both TrueNas 24.10 and 25.04 RC1 may fail to format eMMC
If All is good, it looks like that
And that is it:
Remove the flash and reboot the NAS
After some standard Linux boot messages, we will get to
It's about 5 minutes, including reboots.
All other Settings are to be done via the web interface.
Install Troubleshooting
Failed to find partition number 2 on mmcblk0
See source code in https://github.com/truenas/truenas-installer/blob/master/truenas_installer/install.py
64GB looks like the absolute minimum eMMC to TrueNAS Scale partition sizes
That is the place where we got in the "Bad hardware" category, so a workaround might be to create a partition in advance from the Shell
async def format_disk(disk: Disk, set_pmbr: bool, callback: Callable): await wipe_disk(disk, callback) # Create BIOS boot partition await run(["sgdisk", "-a4096", "-n1:0:+1024K", "-t1:EF02", "-A1:set:2", disk.device]) # Create EFI partition (Even if not used, allows user to switch to UEFI later) await run(["sgdisk", "-n2:0:+524288K", "-t2:EF00", disk.device]) # Create data partition await run(["sgdisk", "-n3:0:0", "-t3:BF01", disk.device]) # Bad hardware is bad, but we've seen a few users # state that by the time we run `parted` command # down below OR the caller of this function tries # to do something with the partition(s), they won't # be present. This is almost _exclusively_ related # to bad hardware, but we will wait up to 30 seconds # for the partitions to show up in sysfs. disk_parts = await get_partitions(disk.device, [1, 2, 3], tries=30) for partnum, part_device in disk_parts.items(): if part_device is None: raise InstallError(f"Failed to find partition number {partnum} on {disk.name}") if set_pmbr: await run(["parted", "-s", disk.device, "disk_set", "pmbr_boot", "on"], check=False)
Workaround #1
Just re-try install 2-10 times until it work. Yes. as simple as that.
Workaund #2
So next workaround might be to create a partition in advance from the Shell
# Choose (3) Shell option in menu # remove partition tables sgdisk -Z /dev/mmcblk0 # from NVMe also (but it might not be neccessary) sgdisk -Z /dev/nvme0n1 sgdisk -Z /dev/nvme1n1 sgdisk -Z /dev/nvme2n1 sgdisk -Z /dev/nvme3n1 # create partition table on eMMC as Install script do it sgdisk -a 4096 -n 1:0:+1024K -t 1:EF02 -A 1:set:2 /dev/mmcblk0 sgdisk -n 2:0:+524288K -t 2:EF00 /dev/mmcblk0 sgdisk -n 3:0:0 -t 3:BF01 /dev/mmcblk0 # it might be an overkill with partprobes, but anyway sync; partporbe partprobe /dev/mmcblk0 partprobe /dev/nvme0n1 partprobe /dev/nvme1n1 partprobe /dev/nvme2n1 partprobe /dev/nvme3n1 exit # End continue Install.
Try using commands like below in the shell
Workaround #3 less chance, but you can play with it too
dd if=/dev/zero of=/dev/mmcblk0 bs=4k count=16k dd if=/dev/zero of=/dev/nvme0n1 bs=4k count=16k dd if=/dev/zero of=/dev/nvme1n1 bs=4k count=16k dd if=/dev/zero of=/dev/nvme2n1 bs=4k count=16k dd if=/dev/zero of=/dev/nvme3n1 bs=4k count=16k parted -s /dev/mmcblk0 mktable gpt parted -s /dev/nvme0n1 mktable gpt mkpart primary ext4 2048 4T parted -s /dev/nvme1n1 mktable gpt mkpart primary ext4 2048 4T parted -s /dev/nvme2n1 mktable gpt mkpart primary ext4 2048 4T parted -s /dev/nvme3n1 mktable gpt mkpart primary ext4 2048 4T reboot # Install after reboot
After reboot, try installing again
Configuring TrueNAS
Change Widgets on Dashboard
Press configure, and save after editing is done.
The example screen is changing network card of IP and traffic info on the dashboard
Storage Configuration
Create Pool
We do the simple storage configuration when all disk is just a RAID0 like configuration, to sum all capacities without any redundancy, that is not secure way to store critical information so you might want to it in another way
First choose the name of pool. We plan to do all as simply as possible so the pool name will be "pool". Press Next after wich Part of config.
And that is the decision you have to think about. What kind of redundancy you want and how much space to sacrifice for that. Like
Mode | Size |
---|---|
Stripe | 16TB |
RAIDZ1 | 12TB |
dRAID1 | 12TB |
Mirror | 4/8TB |
So let's choose no redundancy. Like we trust in Samsung and TrueNAS a lot,
We got not much disks so ZFS Log, Spare, Cache,, Metadata, will not be configured
So that what we got as summary from the wizard
Content Will be erased - Confirm
So now you have a pool. Unused disk is a special eMMC partitions. So just ignore them.
Create Dataset(s)
Go to the dataset tab. Notice that we have LZ4 compression enabled by default - disabling it might improve some disk access speed.
Add dataset
We still keeping it simple. dataset name is data. preset Generic. Not messing wit Advanced options yet.
Create SMB Share
Assuming NAS is used in Windows PC network and we want to share files on it
Windows SMB Share Add
still not messing with Advanced options. We got all in one pool. We share it.
No we do not, yet.
Starting Windows Network share service? - Yes. Because that is the idea.
and now it is Running
Data Protection
Good tab that we just skip for now, some day we setup at least regular S.M.A.R.T. tests
Network
What can I say. It is ok for now. maybe some routings later
Credentials
Users
Yes, that is something we want to add to be able to log in by SSH and see the Windows share files.
Lets add SSH access and key, home directory - why not? and shell. do not miss that. change nologin to bash
Maybe this user will be used to admin this NAS so we can add group for that - builtin_administrators
Same to be done with all NAS users, if there any.
Try copying some files to network share
Instances
we skip for now
Apps
it where all the fun begins
Discover App
App settings, Choose application pool
Use search to find the app you need
we search for Immich - and we found it (v1.131.3) - latest for the moment), it also shows some Alternatives.
Available Resources in the corner should help you to decide if you need yet another app. Now we are ok.
CPU Usage: 1% Avg. Usage Memory Usage: 4.65 GiB / 11.42 GiB Available Space: 14.37 TiB
If any problem - it is not ours.. ok..
And now here is like a lot of place you might need to fill right but for test you might use random passwords and proper timezon
you can map the container folders to some path on shared disk if needed
If your Photos are already organized - path to this library (like nextcloud library or manual managed folders), we also need to add it in this setting as Additional Storage.
The final is to set resources and Allow GPU access
Now Install - Something goes wrong..
from ssh we con see more
or using System/Shell
oliutyi@truenas:~$ sudo awk '{gsub(/\\n/,"\n")}1' /var/log/app_lifecycle.log
fixed by
chmown 999:999 /mnt/pool/data/immich/db
so now