I have been using a NAS running TrueNAS for a couple of weeks now. From the App GUI for setting up Docker containers, which I genuinely despise, to the removal of SMART tests in the new version, I don’t think this was a good call. So I’m thinking I might as well DIY it, although if you believe that may be a questionable idea, feel free to mention that!
Because of that, I am looking at Debian, as it seems to be the standard server OS, and I have used it a little before. I have light server administration experience, although not a lot, and no specific knowledge of how to optimize one to act as a NAS. I am, however, reasonably familiar with Linux in general.
- How do I optimize Debian for NAS use?
- What utilities should I install that provide system info, allow for network shares, and so on?
- Are there things that TrueNAS did that I may be unaware of and should also set up for myself on Debian?
- Do you have any tips and suggestions for what I should install in addition to that? Maybe some power optimization tools or useful dashboard software?
- Can I just wipe the OS drive, put Debian on there, and then mount my pool once Debian is set up for ZFS, or does TrueNAS do anything special to the filesystem? If not, how should I migrate the existing data? (Mostly videos, pictures, documents, and a Home Assistant setup)
- What are good resources to find help with Debian server administration?
- Are there any issues with Nvidia? If so, how do I fix them? I have an old Nvidia GPU in the NAS for video encoding since my CPU doesn’t have an iGPU.
- Are there common pitfalls in this for people with little experience like me?
I’d be glad to get some info on these topics to know if this is a reasonable idea or if I should just stick with what I have.


On your point about it being “easy” to install containers via the app interface, are there any guidelines for how to configure them when all you’ve got for reference is a Docker Compose file?
A lot of stuff matches 1:1, but there are often oddities here and there, and I’m still not entirely sure of the correct way to configure storage. Some guides say to create datasets in the pool and then configure some to use the “apps” preset, while others should use “generic.” Others say to just use the automatic permissions checkbox, and others still tell you to check the “Use ACL” box. When I haven’t found a guide, I just created the datasets manually, set them to “apps,” and so far it has worked.
And when I want to use Docker containers normally, I’ve been advised against it. There used to be something called “jails,” but that was deprecated with the new Containers tab in the GUI. Apparently, that’s being dropped again for some reason, but the jails are still deprecated, and any time I search for how to use Docker Compose, I get so much conflicting info. Some say to just run docker compose as you would on a regular server via the command line, while others say that could break the system and tell me to just use VMs instead, and it’s all a mess.
The SMART stuff I mentioned was definitely my lesser worry, just a mild annoyance that tipped me over to consider switching, but the apps feel like I’m learning a whole new abstraction layer instead of just writing a Docker Compose file with input fields. Maybe that’s just a me problem though and I’m simply refusing to adapt, I am really not sure.
I get your point, it can be really quite confusing to go from a compose file or just general instructions and mby a docker run command to the settings of truenas.
you mention jails and that’s a core (no pun intended) issue of truenas. Truenas core is based on BSD which uses jails, whilst truenas scale is based on debian and uses docker. then recently it was all combined back into one, based on linux. hence no jails, just docker.
additionally, truenas scale was using kubernetes instead of docker until a year ago i’d guess. so what im trying to say is that whatever info you may find online could be very irrelevant if it’s for truenas core or truenas scale back in the kubernetes days.
besides the ui, if you have a compose yaml and just wanna use that for setup, you can go to apps -> discover apps -> three dots next to custom app -> install via yaml. now this is a pain to find, but it is there an it works pretty well. if you hate how that editor works, you can just paste a stub there that imports a specific other yaml file and then you put all the relevant config into that one. this extra file can then be edited via the cli, copied, moved, and version controlled, which can be very convenient.
regarding storage, using ixVolumes is perfectly fine. i prefer to have a generic dataset called apps that then contains specific datasets for each app i’m running. those specific datasets i set to the apps preset.
beyond that, i’ve got more diverse setups too. for example audiobookshelf. the config and metadata storage live in an audiobookshelf dataset in the apps dataset, as described before. this apps dataset is on a small ssd pool.
the podcasts and audiobooks themselves are stored on a larger HDD mirror. basically i have a media dataset there that uses the share preset and then within that i got an audiobooks dataset that uses the apps preset. that way audiobookshelf can use the books and i can easily access the directory via smb. additionally i run a cloud sync task from the data protection tab once a week that syncs all my audiobooks to pcloud.
now all of that isn’t necessarily easy, but i find it easier and more intuitive than doing it all via the cli on debian. then again i’ve never used debian with some specialised nas ui as others have recommended.