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.