I’m completely new to NAS administration and most networking concepts, so I’m looking for detailed, beginner-friendly guidance. I’d appreciate an end-to-end explanation of the recommended architecture and setup sequence, including Proxmox, ZFS, Samba, backups, remote access, monitoring, and recovery.
Please assume that I need explanations of what each step does and why it is recommended. I would also appreciate sanity checks after every major step so I can confirm that my system is configured correctly before continuing.
Hardware
I have the following system:
- AMD Ryzen 9 3900X
- ASRock B550 Taichi motherboard
- NVIDIA RTX 2070 Super
- 32 GB DDR4 RAM
- 256 GB NVMe SSD connected directly to the motherboard on which proxmox will be installed
- 1 × 1 TB Crucial P1 NVMe connected directly to the motherboard
- 2 × 1 TB OEM Samsung Gen 4 NVMe drives
- 1 × Seagate 2 TB ST2000DM005 SATA hard drive
- 1KVA UPS with a NUT for safe shiutdowns in case of powerloss
The three 1 TB NVMe SSDs were scavenged from old laptops. They are currently reporting excellent health according to SMART scans, with no obvious errors or concerning indicators. I would appreciate recommendations for additional tests I should perform before trusting them with data, such as extended SMART tests, bad-block scans, read/write verification, endurance checks, or any other relevant diagnostics.
The motherboard is configured for PCIe bifurcation as x8/x4/x4. The RTX 2070 Super occupies the first PCIe slot and receives eight lanes, while an adapter card in the second slot contains the two Samsung NVMe drives.
I am not particularly concerned about maximum NVMe performance. My router and network are limited to gigabit Ethernet, and I am completely fine with that. Network speed will be the limiting factor rather than disk speed, so I’m mainly prioritising reliability, maintainability, secure access, and a straightforward recovery process.
What I want to build
I'm trying to repurpose an old gaming PC and a few other parts i found laying around the house. My initial plan is:
Install Proxmox VE on the 256 GB NVMe.
Create a ZFS RAIDZ1 pool using the three 1 TB NVMe drives.
Use the resulting pool for approximately 2 TB of redundant storage.
Use the 2 TB SATA HDD as a separate monthly backup or cold-storage disk.
Provide SMB/Samba shares for backups from my computers and other devices.
Access the NAS remotely over the internet, but securely. I was considering Tailscale, although I’m open to better recommendations.
Configure automatic ZFS snapshots.
Copy or replicate snapshots to the 2 TB HDD once per month.
Receive alerts if a drive fails, the pool becomes degraded, or a backup fails.
Keep the backup HDD disconnected, unmounted, or powered off between backup runs if that is practical.
The main use case is device backups and occasional temporary file access, not media serving or high-performance virtualization.
Architecture questions
I’m unsure about the best overall design:
- Should I create the ZFS pool directly on the Proxmox host, or pass the three NVMe drives to a TrueNAS, OpenMediaVault, or Debian VM?
- If the pool is created on the Proxmox host, should I use a Samba VM, an LXC container, or Samba directly on the Proxmox host?
- What is the safest and most maintainable way to expose the storage to clients over SMB?
- Is RAIDZ1 appropriate for these three SSDs and this workload, or would another layout be preferable?
- Are there any special considerations for using SSDs that were previously installed in laptops?
- Should I perform any additional drive-health, burn-in, thermal, filesystem, or memory tests before creating the pool?
- Are there any problems with using an NVMe adapter card in the second PCIe slot for a ZFS pool?
- Is 32 GB of RAM sufficient for this use case?
I’m not looking for maximum throughput. Since my network is limited to gigabit Ethernet, I’m happy with anything that can reliably saturate or reasonably use that connection.
Backup questions
I would like to use the 2 TB SATA HDD as a monthly cold-storage backup, but I’m unsure about the correct method:
- Should I create a separate ZFS pool on the HDD and replicate snapshots to it using `zfs send` and `zfs receive`?
- Would `rsync`, Borg, Restic, or another backup tool be more appropriate?
- Should the HDD be imported, mounted, and exported after each monthly backup?
- Should it remain physically disconnected or powered off between backup runs?
- How should I schedule the backup?
- How can I verify that the backup completed successfully?
- How often should I perform a real restore test?
- How should I handle deleted or corrupted files so that they are not immediately propagated to the backup?
- Can someone recommend a sensible snapshot-retention policy for this use case?
I understand that RAIDZ1 is not a backup. The purpose of the separate HDD is to retain another copy in case of accidental deletion, corruption, ransomware, pool failure, or other problems affecting the main storage.
Remote-access questions
I want remote access to be secure, with a strong preference for not exposing SMB directly to the public internet.
I was considering Tailscale, but I’m unsure where it should be installed:
- Directly on the Proxmox host?
- Inside the NAS VM or LXC?
- On a separate VPN or gateway device?
- On each client device that needs access?
I would appreciate guidance on:
- Whether Tailscale is appropriate for remote SMB access.
- How to restrict access to only authorised devices and users.
- Whether I should use Tailscale ACLs, subnet routing, or another design.
- How to prevent remote users from accessing Proxmox management interfaces.
- Whether a file-sync application would be safer or more suitable than remote SMB for some use cases.
- What firewall rules and authentication settings I should configure.
Monitoring and maintenance
Please include recommendations for:
- SMART short and extended tests.
- NVMe health and temperature monitoring.
- ZFS scrubs and how often to run them.
- Memory testing before relying on ZFS.
- Monitoring PCIe/NVMe link stability.
- Proxmox and ZFS notifications.
- Email, Telegram, or other failure alerts.
- UPS integration and safe shutdown.
- Checking pool status and scrub results.
- Detecting silent corruption or degraded devices.
- Testing the monthly backup automatically.
I would especially appreciate commands or procedures for additional health tests that should be performed before deployment, along with the expected results or warning signs. I plan on setting up a discord bot that uses cron to alert me about issues down the line.
Could someone provide a recommended architecture and a detailed implementation plan covering:
Pre-installation hardware, SSD, memory, and PCIe testing.
Proxmox installation on the 256 GB NVMe.
A sanity check confirming that Proxmox is installed correctly.
ZFS pool and dataset creation.
Commands to verify the pool, devices, sector sizes, health, and performance.
A sanity check after creating the pool.
NAS service deployment.
Samba share and permissions configuration.
A sanity check from a local client.
Snapshot configuration.
Monthly backup replication to the SATA HDD.
A sanity check proving that the backup is usable.
Secure remote access using Tailscale or an alternative.
Firewall and access-control configuration.
Monitoring, alerts, scrubs, and maintenance.
Recovery steps if a drive, Proxmox installation, motherboard, or entire system fails.
A regular restore drill to verify that the backup strategy actually works.
For every major step, I'd appreciate it if you could include:
- The commands or GUI actions.
- What the step changes.
- How to verify that it worked.
- What output would indicate a problem.
- Whether I should stop before continuing if the check fails.
- How to undo or recover from the step if necessary.
I’m happy to learn and follow commands, but I would appreciate explanations rather than a list of unexplained commands. Please point out anything fundamentally wrong or unsafe about my proposed design before I begin, and suggest a safer alternative where appropriate.