Episode ini mengubah NAS menjadi server aplikasi: TrueNAS Apps, instalasi Docker, Portainer, dan Helm, serta deployment container Plex, Nextcloud, Vaultwarden, dan Gitea dengan resource limits. Kalian juga belajar plugin Docker, Compose, dan KVM di OpenMediaVault.

NAS modern tidak hanya menyimpan file. Episode 18 ini mengubah NAS kalian menjadi server aplikasi: menjalankan layanan self-hosted seperti Plex, Nextcloud, Vaultwarden, dan Gitea di atas storage yang sudah kalian bangun.
Kuncinya adalah containerization: aplikasi berjalan dalam container yang terisolasi, dengan mount ke dataset NAS untuk data persisten. Pendekatan ini membuat instalasi bersih, upgrade aman, dan keamanan lebih baik dibanding menjalankan aplikasi langsung di sistem utama.
Di akhir episode ini kalian akan bisa memakai TrueNAS Apps, menginstall Docker dengan Portainer dan Helm, men-deploy aplikasi container dengan resource limits, serta memanfaatkan plugin Docker, Compose, dan KVM di OpenMediaVault.
TrueNAS SCALE menyediakan katalog aplikasi yang bisa diinstall langsung dari Web UI. Aplikasi populer seperti Plex, Nextcloud, dan banyak lagi tersedia dengan konfigurasi terpandu. Setiap app berjalan dalam container dan menyimpan data di dataset yang kalian tentukan.
midclt call app.query | python3 -m json.toolPerintah midclt call app.query menampilkan aplikasi yang terpasang beserta statusnya. Gunakan ini untuk memverifikasi bahwa app berjalan dan sehat.
Saat menginstall app, tentukan dataset untuk data aplikasi — misalnya tank/apps/plex. Dengan memisahkan data aplikasi dari image, upgrade app tidak menghapus data, dan backup cukup dilakukan pada dataset tersebut.
Docker adalah standar container yang didukung luas. Di TrueNAS SCALE, Docker berjalan di bawah kapak Apps; di OpenMediaVault, Docker diinstall lewat plugin. Setelah aktif, perintah docker tersedia di shell.
docker version
docker psOutput docker version menampilkan versi client dan server, sedangkan docker ps menampilkan container yang berjalan. Pastikan server daemon merespons sebelum deploy.
Portainer memberi antarmuka grafis untuk mengelola container, stack, dan volume Docker. Banyak administrator NAS memakai Portainer sebagai lapisan manajemen di atas Docker CLI.
docker run -d --name portainer \
-p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer-ce:latestPerintah docker run di atas menjalankan Portainer di port 9000. Dengan Portainer, kalian bisa membuat stack Compose dari UI tanpa membuka terminal.
TrueNAS SCALE mendukung Helm untuk chart Kubernetes. App yang diinstall lewat katalog sebenarnya adalah chart Helm yang di-deploy ke cluster internal. Bagi yang sudah familier Kubernetes, Helm memberi fleksibilitas konfigurasi tingkat lanjut.
Plex mengubah NAS menjadi media server: film dan musik di dataset media disajikan ke TV, browser, dan perangkat mobile. Plex dikonfigurasi dengan mount dataset media sebagai volume.
docker run -d --name plex \
-p 32400:32400 \
-v tank-media:/data \
plexinc/pms-docker:latestPerintah docker run menjalankan Plex dengan data media di volume tank-media. Setelah aktif, konfigurasi library dilakukan lewat antarmuka Plex di port 32400.
Nextcloud menyediakan sinkronisasi file, kalender, kontak, dan kolaborasi ala cloud pribadi. Ini pengganti populer untuk layanan cloud publik. Data disimpan di dataset yang bisa di-backup bersama snapshot ZFS.
Vaultwarden adalah implementasi kompatibel Bitwarden untuk password manager self-hosted. Karena berisi semua kredensial, pastikan instance ini berjalan di jaringan yang aman dan data-nya dicadangkan rajin.
Gitea adalah git server ringan untuk self-hosting repository. Cocok untuk tim kecil yang ingin kontrol penuh atas kode tanpa bergantung layanan publik. Data repository disimpan di dataset dan bisa direplikasi dengan ZFS.
Container tanpa batas bisa menghabiskan seluruh RAM dan CPU NAS, mengganggu layanan storage. Selalu pasang resource limits: batas CPU, memori, dan swap.
docker run -d --name app \
--memory=512m --cpus=1.0 \
--restart unless-stopped \
contoh/app:1.0Perintah docker run di atas membatasi container ke 512 megabyte RAM dan 1 CPU. Di Portainer atau Helm, limit serupa diatur lewat field resources pada manifest.
services:
app:
image: contoh/app:1.0
deploy:
resources:
limits:
memory: 512M
cpus: "1.0"Manifest di atas menetapkan limit lewat Compose. Pola resources.limits ini wajib untuk setiap aplikasi yang dijalankan bersama layanan storage.
OpenMediaVault mengelola container lewat plugin Docker dan Compose. Plugin ini menyediakan antarmuka untuk menjalankan stack Compose, mempermudah deployment yang sebelumnya harus lewat CLI.
docker, compose, kvm, nut, prometheus, omv-extraOpenMediaVault juga menawarkan plugin KVM untuk menjalankan virtual machine ringan di samping Docker. Kombinasi plugin ini menjadikan OMV sebagai platform homelab yang fleksibel meskipun konsumsi sumber dayanya kecil.
Tip
Pisahkan data aplikasi ke dataset terpisah dari image container. Snapshot ZFS pada dataset aplikasi memberikan backup konsisten tanpa menghentikan layanan, dan upgrade image tidak pernah mengancam data.
Di episode 18 ini kalian sudah mengubah NAS menjadi server aplikasi: memakai TrueNAS Apps, menginstall Docker dengan Portainer dan Helm, men-deploy Plex, Nextcloud, Vaultwarden, dan Gitea, memasang resource limits, serta memanfaatkan plugin Docker, Compose, dan KVM di OpenMediaVault.
Inti yang harus dibawa pulang:
Di episode 19 selanjutnya kita akan membahas virtualization di NAS — dari VM di TrueNAS SCALE berbasis KVM dan QEMU, nested virtualization, passthrough GPU, hingga penyimpanan zvol untuk VM, disk passthrough, dan backup VM yang konsisten dengan snapshot. Container sudah jalan, sekarang saatnya menambahkan virtual machine penuh.