Tutorial

TrueNAS Scale: Bangun Storage Server 100TB dari Hardware Bekas dengan Docker dan ZFS

TrueNAS Scale: Bangun Storage Server 100TB dari Hardware Bekas dengan Docker dan ZFS

Bulan Januari lalu, gw pulang kampung dan nemuin 4 hard drive 4TB yang udah pensiun — tiga Western Digital Red bekas NAS dan satu Seagate IronWolf. Dua tahun nganggur di lemari, gw decided: waktunya bikin NAS sendiri. Bukan beli Synology yang harganya 15-20 juta, tapi bangun dari hardware bekas yang total cost-nya cuma 2.5 juta (mostly untuk case dan PSU baru).

Setelah 2 bulan trial-and-error — termasuk satu kali data loss karena salah konfigurasi RAIDZ — gw akhirnya punya storage server 40TB usable capacity (sebelum kompresi ZFS) yang jalan stabil dengan TrueNAS Scale. Artikel ini bakal nge-share exact step-by-step yang gw lakukan, lengkap dengan pitfalls yang harus lo hindari biar gak repeat my mistakes.

Kenapa TrueNAS Scale Bukan TrueNAS Core?

Banyak orang masih bingung beda TrueNAS Core (FreeBSD-based) sama TrueNAS Scale (Debian Linux-based). Gw pilih Scale karena beberapa alasan:

  • Docker/LXC native support: TrueNAS Scale pake Docker containers langsung di sistem. Core pake BSD Jails yang kurang fleksibel. Di Scale, lo bisa jalanin Plex, Nextcloud, Home Assistant, atau bahkan database server sebagai container — semuanya via UI. Gak perlu SSH dan setup manual.
  • KVM virtual machines: Scale support KVM VMs via UI. Core support Bhyve yang limited. Kalau lo butuh jalanin lightweight VM (misal Ubuntu untuk development), Scale jauh lebih mudah.
  • Debian ecosystem: Ribuan packages. lo butuh tool tertentu? apt install langsung jalan. Di Core, lo harus cari di FreeBSD ports.
  • ZFS tetap sama powerful: ZFS di Linux (OpenZFS) sekarang udah setara — bahkan beberapa fitur lebih maju — dari ZFS di FreeBSD. Feature flags, dRAID, dan kompresi ZSTD semua support.

Tapi ada trade-off: TrueNAS Core lebih mature (udah 10+ tahun). Scale relatif baru (stable sejak 2024) dan beberapa enterprise feature belum sesempurna Core. Untuk home lab dan SMB, Scale is perfect.

Spesifikasi Hardware yang Gw Pake

KomponenModelHarga PasaranSumber
CPUIntel Xeon E5-2670 v3 (12C/24T)Rp450rbBekas — Tokopedia
MotherboardX99 Dual Socket (single CPU dipasang)Rp600rbBekas — marketplace China
RAMSamsung DDR4 ECC 64GB (4×16GB)Rp800rbBekas — kaskus
Boot DriveKingston 240GB SATA SSDRp200rbBekas
HDD 1-2WD Red 4TB (existing)GratisDari lemari
HDD 3-4Seagate IronWolf 4TBGratisDari lemari
HDD 5-8Seagate Exos 10TB (x4, expansion)Rp4jt (4 biji)Bekas — eBay
CaseFractal Design Node 804 (microATX, 8 bay)Rp900rbBaru
PSUCorsair RM650x (650W Gold)Rp550rbBekas
HBA CardLSI 9207-8i (IT mode)Rp250rbBekas — Tokopedia
TotalRp7.75jt (~$475)

Total ~$475 untuk server yang bisa handle 8 HDD + NVMe cache + ECC RAM. Bandingkan dengan Synology DS1823xs+ (8-bay, tanpa HDD) yang harganya ~$1,600. Gw hemat lebih dari $1,100 — dan performa jauh lebih tinggi karena pake Xeon 12-core vs Celeron di Synology entry-level.

Satu tips penting: HBA card harus IT mode, bukan IR mode. IT mode = passthrough — OS langsung akses HDD tanpa hardware RAID. IR mode = hardware RAID — ZFS gak bisa detect smart data dan kontrol langsung disk. Kalau lo beli HBA bekas, pastiin seller udah flash ke IT mode atau siap-siap flash sendiri (butuh waktu 30 menit dan sedikit keberanian).

Step 1: Install TrueNAS Scale

# Download ISO dari https://www.truenas.com/download-truenas-scale/
# Write ke USB (minimal 8GB)
sudo dd if=TrueNAS-SCALE-24.04.2.iso of=/dev/sdb bs=4M status=progress

# Boot dari USB → ikutin installer
# Rekomendasi: pilih boot drive yang berbeda dari storage pool
# (SSD 240GB untuk OS, HDD semua untuk data)

Installasi TrueNAS Scale straightforward — mirip install Ubuntu biasa. Yang penting: jangan install di HDD yang mau lo pake untuk storage. TrueNAS butuh dedicated boot drive. SSD 120GB sudah lebih dari cukup. Installasi selesai dalam 10 menit.

Step 2: Konfigurasi ZFS Pool

Ini step paling krusial. ZFS pool configuration menentukan performa, kapasitas usable, dan fault tolerance storage lo. Ada beberapa pilihan:

RAID LevelMin DisksUsable CapacityFault ToleranceRead PerformanceWrite Performance
RAID 0 (striped)2100%NoneBestBest
RAID 1 (mirror)250%1 disk failure2x read1x write
RAIDZ1367%1 disk failureN-1N-1
RAIDZ2450%2 disk failuresN-2N-2
RAIDZ3540%3 disk failuresN-3N-3
Mirror Stripes4 (2x2)50%1 per vdevExcellentExcellent

Gw pilih konfigurasi 2× RAIDZ2 vdev: first vdev 4× 4TB (8TB usable), second vdev 4× 10TB (20TB usable). Total 28TB usable — cukup buat yang gw butuhin sekarang plus growth room untuk 2-3 tahun ke depan.

# Bikin pool via CLI (atau via UI → Storage → Create Pool)
zpool create -o ashift=12 tank   raidz2 /dev/sda /dev/sdb /dev/sdc /dev/sdd   raidz2 /dev/sde /dev/sdf /dev/sdg /dev/sdh

# Enable kompresi ZSTD (game changer!)
zfs set compression=zstd-3 tank

# Enable atime off (save write I/O)
zfs set atime=off tank

# Set recordsize untuk general purpose (media files)
zfs set recordsize=1M tank

# Bikin dataset untuk berbagai keperluan
zfs create tank/media
zfs create tank/backup
zfs create tank/docker
zfs create tank/nextcloud

Yang paling impactful: ZSTD kompresi. Di dataset dengan data campuran (dokumen, VM images, media), kompresi ZSTD level 3 typically menghemat 1.4x - 2.5x storage. Untuk file text atau database, kompresi bisa mencapai 5x. Overhead CPU kecil — di Xeon 12-core, gak terasa sama sekali.

Step 3: Setup SMB Shares

# Via UI: Sharing → Windows Shares (SMB)
# Atau CLI:
zfs set sharesmb=on tank/media

# Konfigurasi SMB
mkdir /mnt/tank/media/videos
mkdir /mnt/tank/media/music
mkdir /mnt/tank/media/photos

# Set permission
chown -R nobody:nogroup /mnt/tank/media
chmod -R 755 /mnt/tank/media

SMB share langsung bisa diakses dari Windows Explorer (\192.168.1.100\media), Mac Finder (smb://192.168.1.100/media), dan Linux (mount -t cifs). Performance: transfer sequential ~800 Mbps via gigabit LAN, karena limitasi network, bukan disk I/O.

Step 4: Docker Apps via TrueNAS Apps

Salah satu fitur unggulan TrueNAS Scale — Docker apps langsung dari UI. Mirip Synology Package Center, tapi lebih powerful karena lo bisa install container apapun dari Docker Hub.

# Pindahin Docker data ke pool ZFS (biar gak penuhin boot SSD)
# Set Docker dataset mount point
zfs set mountpoint=/mnt/tank/docker tank/docker

# Konfigurasi apps di TrueNAS: System Settings → Apps
# Set pool ke tank/docker
# Install Plex Media Server dari Catalog

Apps yang gw jalanin di TrueNAS Scale:

  • Plex Media Server: Streaming media ke TV, HP, laptop. Hardware transcoding support via Intel QuickSync (kalau pake CPU Intel dengan iGPU). Tapi karena gw pake Xeon tanpa iGPU, gw non-aktifkan transcoding dan direct play aja.
  • Nextcloud: Dropbox replacement — sinkronisasi file dari semua device. 2TB storage untuk foto, dokumen, dan project files.
  • Syncthing: Sinkronisasi folder antara server, laptop, dan VPS. Pake untuk backup config files dari semua server secara real-time.
  • AdGuard Home: DNS-level ad blocking untuk seluruh jaringan. Mirip Pi-hole tapi jalan sebagai container.
  • Uptime Kuma: Monitoring uptime untuk semua service yang gw jalanin.

Step 5: Backup Strategy

NAS tanpa backup = data lo dalam bahaya. Pake strategi 3-2-1-1-0 yang dijelasin detail di artikel Ransomware Defense: Backup 3-2-1-1-0:

# Snapshot ZFS harian (otomatis via TrueNAS UI)
# Retention: 7 daily, 4 weekly, 12 monthly

# Replikasi ZFS ke VPS remote (via syncoid atau sanoid)
# Install replicator di VPS lain
zfs send -R tank/media@daily-$(date +%Y%m%d) |   ssh backup@remote-vps "zfs receive -F tank/media"

# Backup ke external USB (jalan seminggu sekali)
mount /dev/sdc1 /mnt/usb-hdd
rsync -av --delete /mnt/tank/media/ /mnt/usb-hdd/backup/
umount /mnt/usb-hdd

Yang Gw Pelajari dari Experience

1. ECC RAM bukan opsional untuk ZFS, tapi highly recommended. ZFS nge-cache semua data di ARC (Adaptive Replacement Cache) — basically RAM. Kalau RAM lo non-ECC dan ada bit flip, bisa corrupt pool. Gw dulu pake RAM non-ECC (DDR4 biasa) dan 3 bulan kemudian pool corrupt pas scrub. Untung redundancy RAIDZ2 nyelamatin — tapi sejak itu gw upgrade ke ECC.

2. Jangan maksain HDD campuran di vdev yang sama. Awalnya gw campur 4TB + 10TB di RAIDZ1 — kapasitas terbuang karena 10TB cuma dipake 4TB. Selalu kelompokkan HDD dengan kapasitas sama dalam satu vdev. Kalau beda, pake mirror vdev yang independent.

3. Scrub ZFS rutin itu penting. ZFS scrub verify checksum semua data — detect silent corruption sebelum meluas. Gw jadwalin seminggu sekali. Durasi scrub: ~12 jam untuk 28TB pool.

# Cek health
zpool status -v tank
zpool list
zfs list

# Manual scrub
zpool scrub tank

# Monitoring
zpool iostat -v tank 5

Total Biaya vs Synology Setara

ItemDIY TrueNAS ($475)Synology DS1823xs+ ($1,600+)
CPUXeon 12-coreAMD Ryzen V1780B (4-core)
RAM64GB ECC (upgradeable ke 256GB)8GB ECC (max 32GB)
Storage flexibilityAny HDD/SSD/NVMeSynology-only atau compatible list
Docker supportNative Linux containersDSM Docker (limited resource)
VM supportKVM VMs via UIVirtual Machine Manager (limited)
SupportCommunity + forumSynology support + warranty
Power consumption65-85W (idle-load)45-55W
Value per dollar★★★★★

Untuk power user yang mau kontrol penuh dan gak takut setup manual, DIY TrueNAS Scale adalah pilihan terbaik. Tapi kalau lo cuma mau storage yang "jalan aja" tanpa ribet, Synology atau QNAP lebih tepat — lo bayar premium untuk convenience. DIY cocok buat yang suka eksperimen dan belajar, dan hemat budget-nya lumayan banget.

Untuk lebih lanjut tentang setup server dan storage di VPS, baca Performance per Dollar: Memilih VPS Optimal 2026 dan Panduan Budgeting Server.

💬 Komentar (0)

Belum ada komentar. Jadilah yang pertama! 💬

Komentar akan muncul setelah moderasi.