Upgrade Kerjaya Dengan Homelab

Mukaddimah

Cara Guna Ebook Ini

Sebelum kita mula, jom saya kongsikan cara terbaik untuk guna ebook ini supaya anda dapat manfaat maksimum.

  • Kalau ini homelab pertama anda, ikut bab mengikut urutan dari Bab 1 hingga Bab 12. Jangan lompat-lompat dulu β€” setiap bab dibina atas asas bab sebelumnya.
  • Jangan rasa perlu faham semua istilah sekaligus. Jujurnya, saya sendiri pun ambil masa bertahun-tahun nak faham semua ni. Fokus satu konsep pada satu masa, dan anda akan nampak semuanya mula bersambung nanti.
  • Untuk bahagian praktikal, buat perubahan sedikit demi sedikit. Dan satu tip penting β€” simpan nota anda sendiri. Tulis apa yang anda buat, apa yang jadi, apa yang tak jadi. Nota peribadi ni akan jadi rujukan paling berharga anda satu hari nanti.

Nota Beginner: Tak perlu baca semua dalam satu hari. Setiap bab boleh jadi projek hujung minggu. Ambil masa anda, yang penting konsisten.

Kata-kata Penulis

Assalamualaikum dan salam sejahtera.

Alhamdulillah, buku digital ini akhirnya berjaya disiapkan selepas bertahun-tahun pengalaman saya membina dan menguruskan homelab sendiri. Perjalanan saya bermula dengan sebuah Raspberry Pi kecil β€” masa tu saya cuma nak cuba pasang Pi-hole untuk sekat iklan je. Tapi dari situ, satu demi satu service ditambah, satu demi satu skill dipelajari, sampailah ke rak pelayan penuh yang saya guna hari ini.

Saya menulis buku ini kerana percaya bahawa kemahiran praktikal adalah kunci untuk meningkatkan kerjaya dalam bidang IT. Tak kira sama ada anda seorang System Administrator, Network Engineer, DevOps Engineer, Cloud Engineer, atau seorang programmer β€” homelab adalah platform terbaik untuk mempertajam kemahiran anda.

Dari pengalaman saya, benda yang paling mengubah kerjaya IT saya bukan sijil atau kursus β€” tapi apa yang saya bina dan pecahkan sendiri kat homelab. Bila interview, majikan nampak yang saya bukan sekadar tahu teori, tapi dah biasa hands-on.

Buku ini merangkumi 12 bab utama yang akan membimbing anda langkah demi langkah, dari memahami apa itu homelab sehinggalah kepada projek-projek menarik yang boleh anda laksanakan. Beberapa bab turut mempunyai bahagian lanjutan, tetapi ia masih berada di bawah nombor bab yang sama supaya alirannya lebih mudah diikuti. Setiap bab dilengkapi dengan diagram, contoh konfigurasi, dan panduan praktikal yang boleh terus anda ikuti.

Apa Yang Anda Akan Dapat

Melalui buku ini, anda akan mempelajari:

  • Asas homelab dan mengapa ia penting untuk kerjaya IT anda
  • Perancangan yang teliti untuk mengelakkan pembaziran wang dan masa
  • Pemilihan perkakasan yang tepat mengikut bajet dan keperluan
  • Konfigurasi rangkaian yang selamat dan profesional
  • Virtualisasi dan Docker untuk memaksimumkan sumber perkakasan
  • Keselamatan berlapis untuk melindungi data dan perkhidmatan
  • Automasi dan pemantauan supaya homelab berjalan sendiri
  • 33 idea projek yang boleh terus anda laksanakan

Saya cadangkan anda bookmark halaman ini supaya senang nak rujuk balik bila-bila masa.

Ucapan Terima Kasih

Terima kasih kepada semua yang telah menyokong penulisan buku ini. Kepada komuniti homelab di Malaysia dan seluruh dunia, terima kasih kerana berkongsi ilmu dan pengalaman. Tanpa komuniti ni, homelab saya takkan jadi macam sekarang.

Dan kepada anda yang sedang baca ni β€” terima kasih sebab ambil langkah pertama. Selamat membina homelab anda! Saya yakin perjalanan ini akan mengubah cara anda belajar IT.

Ts. Syafiyullah Yahya www.inframesia.com | www.bukuinfra.com

1 Rancang Bajet & Matlamat 2 Beli Perkakasan 3 Pasang OS & Rangkaian 4 Deploy VM & Docker 5 Selamat Keselamatan 6 Nikmati! Automasi & Pantau Perjalanan Membina Homelab πŸ“‹ πŸ–₯️ βš™οΈ 🐳 πŸ”’ πŸš€
Perjalanan Membina Homelab

Syarat dan Amaran

Panduan Penggunaan Ebook Ini Ringkasan hak penggunaan, batas pengedaran, dan tanggungjawab pembaca Penggunaan Sah Gunakan untuk belajar, rujukan, dan eksperimen peribadi Dibenarkan Cetak satu salinan dan guna untuk rujukan sendiri Perlu Berhati-hati Arahan perlu disesuaikan dengan persekitaran anda Tidak Dibenarkan Jual semula, edar semula, atau kongsi tanpa izin Sentiasa semak hak cipta, penafian, dan perubahan pautan luar
Panduan penggunaan ebook ini

Sebelum Anda Mula

Jom kita settle beberapa perkara penting dulu sebelum anda terjun ke dunia homelab.

  • Ebook ini ditulis supaya anda boleh terus praktik, tapi anda tetap perlu uji setiap konfigurasi dalam persekitaran sendiri. Setiap setup rumah lain-lain, jadi apa yang jalan kat sini mungkin perlu sedikit penyesuaian di situ.
  • Kalau anda perasan banyak istilah IT dalam English β€” ya, itu memang disengajakan. Sebabnya mudah: bila anda Google nanti atau baca dokumentasi rasmi, istilah yang sama akan muncul. Saya tak mahu anda keliru sebab istilah lain.
  • Untuk bahagian teknikal, saya akan selalu ingatkan soal keselamatan, backup, dan buat perubahan secara berperingkat. Jangan skip bahagian-bahagian tu ya.

Nota Beginner: Jangan risau kalau rasa macam banyak sangat benda baru. Ambil masa anda. Baca satu bab, faham, baru gerak ke bab seterusnya. Tak ada siapa yang kejar.

Hak Cipta Terpelihara

Β© 2026 Ts. Syafiyullah Yahya. Hak Cipta Terpelihara.

Tiada mana-mana bahagian daripada penerbitan ini boleh diterbitkan semula, disimpan dalam sistem simpanan, atau dipindahkan dalam apa-apa bentuk atau dengan apa-apa cara, sama ada elektronik, mekanikal, fotokopi, rakaman atau lain-lain, tanpa kebenaran bertulis terlebih dahulu daripada penerbit.

Penafian

Maklumat yang terkandung dalam buku elektronik ini adalah untuk tujuan pendidikan dan maklumat umum sahaja. Penulis dan penerbit tidak membuat sebarang jaminan mengenai kelengkapan, kebolehpercayaan, dan ketepatan maklumat ini.

Sebarang tindakan yang anda ambil berdasarkan maklumat dalam buku ini adalah atas risiko anda sendiri. Penulis dan penerbit tidak akan bertanggungjawab terhadap sebarang kerugian atau kerosakan yang berkaitan dengan penggunaan maklumat yang disediakan.

Nama produk dan perkhidmatan yang disebut dalam buku ini adalah tanda dagangan atau tanda dagangan berdaftar pemilik masing-masing. Penggunaan nama-nama ini tidak membayangkan sebarang sokongan atau gabungan.

Terma dan Syarat Penggunaan

  1. Buku elektronik ini adalah untuk kegunaan peribadi sahaja
  2. Anda tidak dibenarkan menjual semula, mengedar, atau berkongsi buku ini tanpa kebenaran
  3. Anda dibenarkan mencetak satu salinan untuk kegunaan peribadi
  4. Pautan dan rujukan luaran mungkin berubah dari masa ke masa
  5. Konfigurasi dan arahan dalam buku ini mungkin perlu disesuaikan mengikut persekitaran anda

Hubungi Kami

Ada soalan? Jumpa kesilapan? Atau sekadar nak bagi feedback? Saya sentiasa terbuka untuk dengar dari anda.

  • Laman Web: www.inframesia.com
  • Buku: www.bukuinfra.com

Diterbitkan secara digital oleh Ts. Syafiyullah Yahya, 2026

Bab 1: Pengenalan kepada Homelab

Bab ini adalah titik permulaan anda. Kita akan bincang apa sebenarnya homelab ni, kenapa ramai orang IT bina satu, dan macam mana ia boleh bantu anda β€” sama ada nak belajar, nak tingkatkan kerjaya, atau sekadar nak self-host service sendiri. Lepas bab ini, anda akan ada gambaran jelas tentang homelab yang paling sesuai untuk anda.

Peta Manfaat Homelab Mengapa homelab penting untuk pembelajaran, kerjaya, privasi, dan pengurangan kos HOMELAB Makmal IT peribadi untuk belajar dan membina Pembelajaran Praktikal Belajar dengan memasang, memecahkan, dan membaiki sendiri Kerjaya IT Portfolio, hands-on, persediaan persijilan, DevOps Self-Hosting Nextcloud, VPN, media server, dan aplikasi peribadi Privasi dan Kawalan Kawal data sendiri tanpa bergantung pada cloud pihak ketiga Kos Jangka Panjang Kurangkan langganan bulanan dan guna semula perkakasan
Peta manfaat homelab

Apa yang anda akan belajar:

  • Apa itu homelab, diterangkan dengan bahasa yang mudah difahami
  • Kenapa homelab berguna untuk pembelajaran, kerjaya, dan self-hosting
  • Komponen asas yang diperlukan untuk bina homelab
  • Jenis-jenis homelab mengikut skala dan bajet
  • Komuniti yang boleh anda sertai untuk sokongan
  • Perkara penting yang perlu dipertimbangkan sebelum mula

Cara Ikut Bab Ini

  1. Baca bab ini sampai habis dulu tanpa fikir soal beli hardware. Serius β€” jangan buka Shopee dulu.
  2. Pilih jenis homelab yang paling dekat dengan bajet dan masa anda.
  3. Simpan satu ayat matlamat peribadi anda sebelum masuk ke bab seterusnya.

Nota Beginner: Jika istilah seperti server, VM, Docker, atau VLAN masih rasa asing, jangan risau langsung. Bab-bab seterusnya akan pecahkan semua itu satu per satu. Buat masa ni, fokus pada gambaran besar dulu.

Laluan Paling Mudah untuk Beginner

  • Bayangkan homelab pertama anda sebagai satu mesin + satu rangkaian rumah + satu atau dua service sahaja. Itu dah cukup untuk mula.
  • Pilih satu sebab utama anda mahu bina homelab: belajar, self-hosting, atau portfolio kerjaya.
  • Lepas bab ini, terus ke bab perancangan dan elakkan buat pembelian mengejut. Saya pernah buat silap ni β€” beli dulu, merancang kemudian. Jangan jadi macam saya.

Langkah 1: Faham Apa Itu Homelab

Jadi, apa sebenarnya homelab ni?

Homelab, atau makmal rumah, adalah persekitaran IT peribadi yang anda bina dan urus di rumah sendiri. Tujuannya? Untuk belajar, bereksperimen, dan guna untuk kegunaan peribadi. Ia boleh jadi sesuatu yang semudah sebuah Raspberry Pi yang anda sorokkan belakang TV, sehinggalah ke rak pelayan penuh dengan infrastruktur rangkaian profesional.

Bayangkan macam ni: kalau anda belajar memasak, dapur rumah anda adalah β€œhomelab” anda. Tempat anda boleh cuba resepi baru, buat silap, dan belajar tanpa tekanan β€” tanpa perlu sewa restoran dulu.

Konsep homelab berkembang sangat pantas dalam beberapa tahun kebelakangan ini. Dulu, semua ni nampak macam β€œmainan orang enterprise” sahaja. Hari ini, dengan hardware terpakai, software open source, dan komuniti yang aktif, beginner pun sudah boleh bina setup yang betul-betul berguna di rumah.

Homelab = Perkakasan + Perisian + Rangkaian yang anda kawal sepenuhnya di rumah untuk tujuan pembelajaran dan penggunaan peribadi.

Langkah 2: Faham Mengapa Anda Perlukan Homelab

β€œOkay, tapi kenapa saya perlu buat semua ni kat rumah? Tak boleh ke belajar guna cloud je?”

Boleh. Tapi ada beza besar antara tekan butang kat cloud dashboard dengan betul-betul faham macam mana sesuatu tu berfungsi dari bawah. Jom tengok sebab-sebab utama.

1. Pembelajaran Praktikal

Teori sahaja memang tak cukup dalam dunia IT. Anda boleh baca 10 buku pasal networking, tapi bila kabel tak connect, anda kena tahu troubleshoot sendiri. Homelab memberi anda peluang untuk:

  • Memasang dan mengkonfigurasi sistem pengendalian pelayan
  • Menyediakan dan menguruskan rangkaian
  • Bereksperimen dengan teknologi baru tanpa risiko
  • Membuat kesilapan dan belajar daripadanya dalam persekitaran yang selamat

Nota Beginner: Buat silap kat homelab = belajar. Buat silap kat production server syarikat = kena marah boss. Jadi, lebih baik belajar kat homelab dulu, kan?

2. Pembangunan Kerjaya

Dari pengalaman saya, homelab adalah salah satu pelaburan terbaik untuk kerjaya IT. Ia bukan sekadar tempat main-main β€” ia adalah bukti kemahiran anda. Homelab berguna untuk:

  • Persediaan persijilan β€” Berlatih untuk peperiksaan seperti CompTIA, AWS, Azure, dan Cisco. Saya sendiri guna homelab untuk prep exam.
  • Portfolio kemahiran β€” Bila interview, anda boleh tunjuk apa yang anda dah bina. Majikan suka tengok orang yang ada inisiatif macam ni.
  • Kemahiran DevOps β€” Mempelajari automasi, CI/CD, dan pengurusan infrastruktur secara hands-on.
  • Pengalaman hands-on β€” Sesuatu yang tidak boleh digantikan oleh bacaan semata-mata.

3. Hosting Sendiri (Self-Hosting)

Ini bahagian yang ramai orang paling teruja. Dengan homelab, anda boleh menghos perkhidmatan anda sendiri β€” tak perlu bergantung pada syarikat lain, dan tak perlu bayar langganan bulanan yang makin mahal.

  • Storan awan peribadi β€” Nextcloud sebagai alternatif kepada Google Drive
  • Pengurus kata laluan β€” Vaultwarden untuk keselamatan kata laluan
  • Pelayan media β€” Plex atau Jellyfin untuk koleksi media anda
  • Automasi rumah β€” Home Assistant untuk rumah pintar
  • Pelayan VPN β€” WireGuard untuk akses selamat dari mana-mana

Nota Beginner: Anda tak perlu self-host semua benda sekaligus. Mula dengan satu atau dua service dulu. Saya cadangkan Pi-hole (sekat iklan) dan Nextcloud (storan awan) sebagai projek pertama β€” mudah nak setup dan anda akan nampak hasilnya terus.

4. Privasi dan Kawalan Data

Dalam era di mana data peribadi menjadi komoditi, homelab memberi anda kuasa balik:

  • Kawalan penuh ke atas data anda β€” data anda, kat mesin anda, bawah bumbung rumah anda
  • Kebebasan daripada perkhidmatan awan pihak ketiga
  • Keupayaan untuk menyekat iklan dan penjejak (tracker) di seluruh rangkaian rumah
  • Pematuhan kepada kehendak privasi anda sendiri

5. Penjimatan Kos Jangka Panjang

Walaupun memerlukan pelaburan awal, homelab boleh menjimatkan wang dalam jangka panjang. Tengok perbandingan ni:

Perkhidmatan Kos Awan/Bulan Kos Homelab/Bulan
Storan 1TB RM 40-80 RM 5-10 (elektrik)
VPN RM 30-50 Percuma
Pengurus Kata Laluan RM 15-40 Percuma
Pelayan Media RM 30-60 Percuma
Jumlah RM 115-230 RM 5-10

Nota: Kos homelab di atas hanya mengambil kira kos elektrik tambahan, tidak termasuk pelaburan awal perkakasan.

Nampak tak perbezaannya? Dalam masa setahun, anda dah boleh cover balik kos hardware awal. Lepas tu, semuanya β€œpercuma” β€” selain bil elektrik la.

Langkah 3: Kenal Pasti Komponen Asas Homelab

Okay, sekarang anda dah tahu kenapa homelab berguna. Tapi apa sebenarnya yang ada dalam sebuah homelab? Jom pecahkan kepada tiga bahagian utama.

Perkakasan (Hardware)

Ini adalah benda-benda fizikal yang anda boleh pegang:

  1. Pelayan atau Komputer β€” Mesin utama yang menjalankan perkhidmatan. Boleh jadi komputer lama, mini PC, atau pelayan sebenar.
  2. Peralatan Rangkaian β€” Switch, router, dan titik akses WiFi untuk sambungkan semua peranti.
  3. Storan β€” Hard disk atau SSD untuk menyimpan data anda.
  4. UPS (Bekalan Kuasa Tanpa Gangguan) β€” Perlindungan daripada gangguan bekalan elektrik. Macam β€œinsurance” untuk data anda.

Perisian (Software)

Ini pula bahagian yang tak nampak tapi buat semua benda jalan:

  1. Sistem Pengendalian β€” Linux (Ubuntu, Debian, Proxmox) β€” kebanyakan percuma!
  2. Hypervisor β€” Untuk virtualisasi (Proxmox VE, ESXi) β€” macam β€œkomputer dalam komputer”
  3. Kontena β€” Docker dan Docker Compose β€” cara paling popular nak jalankan service
  4. Aplikasi β€” Perkhidmatan yang ingin anda jalankan (Nextcloud, Pi-hole, dll.)

Rangkaian (Network)

Ini yang sambungkan semuanya bersama:

  1. Router/Firewall β€” pfSense atau OPNsense sebagai β€œpengawal pintu” rangkaian anda
  2. Switch β€” Untuk menyambungkan peranti secara fizikal
  3. VLAN β€” Pengasingan rangkaian untuk keselamatan (macam bilik berasingan dalam rumah)
  4. DNS β€” Pi-hole untuk penapisan DNS dan sekat iklan

Nota Beginner: Tak perlu pening dengan semua komponen ni sekarang. Untuk mula, anda cuma perlukan satu komputer dan sambungan internet. Serius, itu je. Yang lain boleh ditambah kemudian.

Langkah 4: Kenal Pasti Jenis-jenis Homelab

Homelab datang dalam pelbagai saiz. Pilih yang sesuai dengan tahap, bajet, dan matlamat anda.

Homelab Mini (Pemula)

  • Raspberry Pi atau komputer mini
  • Switch rangkaian asas
  • Satu atau dua perkhidmatan Docker
  • Bajet: RM 500 - RM 1,500

Sesuai untuk: Pemula yang ingin belajar asas. Ini adalah titik permulaan saya sendiri β€” sebuah Raspberry Pi 3 dengan Pi-hole. Simple, tapi dari situ semua bermula.

Homelab Sederhana (Pertengahan)

  • Komputer desktop terpakai (Dell OptiPlex, Lenovo ThinkCentre)
  • 16-32GB RAM
  • Switch rangkaian terurus (managed switch)
  • Beberapa mesin maya dan kontena
  • Bajet: RM 2,000 - RM 5,000

Sesuai untuk: Pengguna yang serius dan profesional IT. Saya cadangkan Dell OptiPlex terpakai β€” senang dapat, murah, dan cukup berkuasa untuk kebanyakan projek.

Homelab Penuh (Lanjutan)

  • Pelayan rak (Dell PowerEdge, HP ProLiant)
  • 64GB+ RAM ECC
  • NAS khusus
  • Peralatan rangkaian enterprise
  • Rak pelayan
  • Bajet: RM 5,000 - RM 15,000+

Sesuai untuk: Profesional IT berpengalaman dan peminat tegar. Kalau anda baru mula, jangan terus lompat ke sini. Serius.

Nota Beginner: Mula kecil, kembang perlahan-lahan. Homelab saya sendiri bermula dengan bajet bawah RM 500 dan berkembang selama beberapa tahun. Tak ada siapa yang bina rak penuh pada hari pertama.

Langkah 5: Komuniti Homelab

Satu benda yang saya nak tekankan β€” anda tidak bersendirian dalam perjalanan ini. Terdapat komuniti yang besar, aktif, dan sangat membantu:

  • Reddit r/homelab β€” Komuniti terbesar dengan lebih 1 juta ahli. Tempat terbaik untuk tanya soalan dan cari inspirasi.
  • Reddit r/selfhosted β€” Fokus pada hosting sendiri. Banyak cadangan software open source yang bagus.
  • ServeTheHome β€” Forum dan ulasan perkakasan pelayan. Bagus kalau nak buat research sebelum beli.
  • Discord β€” Pelbagai server Discord berkaitan homelab. Real-time chat kalau anda stuck.
  • YouTube β€” Saluran seperti NetworkChuck, TechnoTim, dan Jeff Geerling. Tengok video orang lain bina homelab sangat membantu untuk dapat idea.

Saya cadangkan anda join sekurang-kurangnya satu komuniti. Bila stuck, ada tempat nak tanya. Bila berjaya, ada tempat nak share.

Langkah 6: Semak Perkara Yang Perlu Dipertimbangkan

Sebelum anda teruja sangat dan terus beli barang, ada beberapa perkara praktikal yang perlu difikirkan dulu.

Ruang Fizikal

  • Di mana anda akan meletakkan peralatan? Bilik tidur? Stor? Bawah meja?
  • Adakah ruang itu mempunyai pengudaraan yang baik? Hardware yang panas = hardware yang pendek umur.
  • Bolehkah anda (dan ahli keluarga anda) mengendalikan bunyi bising dari kipas? Ini penting, percayalah.

Kos Elektrik

  • Pelayan 24/7 akan meningkatkan bil elektrik anda. Jangan terkejut kalau bil naik RM 20-50 sebulan.
  • Pilih perkakasan yang cekap tenaga β€” Raspberry Pi guna 5W, pelayan rak boleh guna 200W+.
  • Pertimbangkan penggunaan kuasa sebelum membeli. Kita akan bincang pengiraan kos elektrik dalam Bab 2.

Masa dan Komitmen

  • Homelab memerlukan penyelenggaraan berkala β€” update, patch, troubleshoot.
  • Kemas kini keselamatan perlu dilakukan secara konsisten.
  • Backup perlu dirancang dan dilaksanakan. Jangan jadi orang yang buat backup lepas data hilang.

Kesan kepada Rangkaian Rumah

  • Homelab mungkin mempengaruhi prestasi internet rumah kalau tak dikonfigurasi dengan betul.
  • Konfigurasi rangkaian yang salah boleh menjejaskan peranti lain di rumah β€” dan ahli keluarga anda takkan happy.
  • Pertimbangkan pengasingan rangkaian menggunakan VLAN supaya homelab dan rangkaian rumah tak kacau satu sama lain.

Checklist Siap Bab Ini

Ringkasan

Dalam bab ini, kita telah belajar:

  • Homelab adalah makmal IT peribadi yang anda kawal sepenuhnya di rumah
  • Ada banyak sebab kukuh untuk bina homelab β€” belajar, kerjaya, self-hosting, privasi, dan jimat kos
  • Komponen asas homelab terdiri daripada perkakasan, perisian, dan rangkaian
  • Anda boleh mula dari setup mini (RM 500) sampai setup penuh (RM 15,000+)
  • Komuniti homelab sangat aktif dan sentiasa sedia membantu
  • Ada perkara praktikal yang perlu difikirkan: ruang, kos elektrik, masa, dan kesan pada rangkaian rumah

Tahniah sebab dah habiskan bab pertama! Sekarang anda dah ada gambaran besar tentang apa itu homelab dan kenapa ia berbaloi. Dalam bab seterusnya, kita akan mula merancang homelab anda secara terperinci β€” dari matlamat, bajet, sampai topologi rangkaian. Jom teruskan!

Bab 2: Merancang Homelab Anda

Bab ini adalah bab yang paling penting sebelum anda keluarkan duit. Kita akan duduk dan rancang betul-betul apa yang anda perlukan, berapa bajet yang realistik, dan macam mana nak susun semuanya supaya tak jadi huru-hara kemudian. Percayalah, 1 jam merancang boleh jimat anda berpuluh jam troubleshoot nanti.

Apa yang anda akan belajar:

  • Cara tentukan matlamat homelab yang jelas dan realistik
  • Perancangan bajet mengikut tahap (pemula, pertengahan, lanjutan)
  • Asas topologi rangkaian dan perancangan alamat IP
  • Strategi storan yang betul
  • Pengiraan kos elektrik bulanan
  • Senarai semak lengkap sebelum mula beli apa-apa

Cara Ikut Bab Ini

  1. Lengkapkan bahagian matlamat dahulu sebelum tengok senarai hardware. Ini penting β€” jangan skip.
  2. Tulis bajet maksimum anda, bukan bajet ideal. Realistik lebih baik dari optimistik.
  3. Anggap bab ini sebagai pelan kerja supaya anda tidak membeli barang secara impulsif.

Nota Beginner: Ramai orang (termasuk saya dulu) tersilap beli hardware terlalu awal. Nampak deal bagus kat Shopee, terus checkout. Lepas tu baru sedar tak compatible, atau tak cukup RAM, atau tak perlu pun benda tu. Untuk beginner, homelab yang kecil tetapi siap digunakan jauh lebih baik daripada setup besar yang separuh jalan.

Laluan Paling Mudah untuk Beginner

  • Tulis satu matlamat utama, contohnya: Saya mahu belajar Docker dan self-host 3 service asas.
  • Hadkan bajet permulaan kepada bawah RM 1,500 supaya anda tidak overbuild.
  • Sediakan senarai service minimum sahaja untuk fasa pertama. Anda boleh tambah lagi nanti.

Langkah 1: Faham Kenapa Perancangan Itu Penting

Membina homelab tanpa perancangan adalah macam masak tanpa resepi β€” mungkin jadi, tapi kemungkinan besar anda akan buang banyak bahan (baca: duit) dalam proses tu.

Dari pengalaman saya, kesilapan paling mahal dalam homelab bukan beli hardware salah β€” tapi beli hardware yang anda tak perlukan lagi. Perancangan yang baik akan jimatkan masa, wang, dan tekanan anda.

Jadi sebelum anda buka tab browser untuk cari hardware, jom settle bahagian perancangan ni dulu.

Langkah 2: Tentukan Matlamat Anda

Ini langkah paling kritikal. Tanpa matlamat yang jelas, anda akan terus beli barang tanpa hala tuju. Ambil masa 10-15 minit dan jawab soalan-soalan di bawah. Tulis betul-betul, jangan main fikir je.

Soalan Penting

  1. Apa tujuan utama homelab saya?
    • Pembelajaran dan latihan persijilan?
    • Hosting perkhidmatan peribadi?
    • Pembangunan dan pengujian perisian?
    • Automasi rumah pintar?
  2. Apakah perkhidmatan yang ingin saya jalankan?
    • Senaraikan semua perkhidmatan yang diingini
    • Kategorikan mengikut keutamaan (wajib, penting, bonus)
  3. Berapa besar bajet saya?
    • Bajet awal untuk pembelian perkakasan
    • Bajet bulanan untuk kos elektrik
    • Bajet untuk penyelenggaraan dan naik taraf
  4. Berapa banyak masa yang boleh saya luangkan?
    • Masa untuk persediaan awal
    • Masa untuk penyelenggaraan berkala
    • Masa untuk pembelajaran dan eksperimen

Nota Beginner: Tak perlu jawab semua soalan dengan sempurna. Yang penting, anda ada idea kasar. Matlamat anda akan berubah dan berkembang seiring masa β€” itu normal.

Contoh Senarai Matlamat

Ini contoh bagaimana anda boleh susun matlamat anda. Saya cadangkan anda buat jadual macam ni juga:

Keutamaan Perkhidmatan Tujuan Sumber Diperlukan
Wajib Pi-hole DNS & Sekat Iklan Ringan (256MB RAM)
Wajib Nextcloud Storan Awan Sederhana (2GB RAM)
Wajib Vaultwarden Kata Laluan Ringan (256MB RAM)
Penting Plex/Jellyfin Media Streaming Sederhana (2GB RAM)
Penting Home Assistant Automasi Rumah Ringan (1GB RAM)
Penting WireGuard VPN Ringan (256MB RAM)
Bonus Gitea Git Hosting Sederhana (1GB RAM)
Bonus Grafana + Prometheus Pemantauan Sederhana (2GB RAM)

Tengok β€” semua service β€œWajib” tu hanya perlukan lebih kurang 2.5GB RAM. Maknanya, untuk fasa pertama, sebuah mesin dengan 8GB RAM pun dah lebih dari cukup.

Langkah 3: Rancang Bajet Anda

Perbandingan Bajet Homelab Pemula RM 500 - RM 1,500 Raspberry Pi 4/5 SSD 256GB Suis 5-port Pertengahan RM 2,000 - RM 5,000 Dell OptiPlex / Lenovo ThinkCentre (Terpakai) 32GB RAM + SSD 500GB Suis terurus 8-port UPS Asas Lanjutan RM 5,000 - RM 15,000+ Pelayan Rak / Dell PowerEdge (Terpakai) 64-128GB RAM ECC + RAID SSD NAS Khusus (Synology/TrueNAS) Suis terurus 24-port + WiFi AP UPS 1500VA + Rak 12U Firewall Khusus Tips Penjimatan - Beli perkakasan terpakai enterprise - Mula kecil, kembang secara berperingkat - Guna perisian sumber terbuka - Pantau penggunaan elektrik
Perbandingan Bajet Homelab

Sekarang kita masuk bahagian yang semua orang nak tahu β€” berapa sebenarnya kos nak bina homelab? Saya pecahkan mengikut tiga tahap.

Bajet Pemula (RM 500 - RM 1,500)

Untuk pemula, anda boleh memulakan dengan kos yang sangat minimum. Ada dua pilihan popular:

Pilihan A: Raspberry Pi

Ini pilihan saya sendiri untuk mula. Kecil, senyap, jimat elektrik.

Komponen Anggaran Harga
Raspberry Pi 5 (8GB) RM 350 - RM 450
Casing + Kipas RM 40 - RM 80
Kad MicroSD 64GB RM 30 - RM 50
Bekalan Kuasa USB-C RM 50 - RM 80
Kabel Ethernet Cat6 RM 10 - RM 30
Jumlah RM 480 - RM 690

Pilihan B: Komputer Mini Terpakai

Kalau anda nak lebih kuasa dari Raspberry Pi, ini pilihan yang sangat berbaloi. Dell OptiPlex Micro terpakai sangat popular dalam komuniti homelab.

Komponen Anggaran Harga
Dell OptiPlex Micro (terpakai) RM 400 - RM 800
RAM tambahan (16GB) RM 100 - RM 200
SSD 256GB RM 80 - RM 150
Switch 5-port RM 50 - RM 100
Kabel Ethernet RM 10 - RM 30
Jumlah RM 640 - RM 1,280

Nota Beginner: Saya cadangkan Pilihan B kalau bajet anda cukup. Dengan 16GB RAM dan SSD, anda boleh jalankan Docker dan beberapa service sekaligus tanpa masalah. Raspberry Pi bagus untuk belajar, tapi agak terhad dari segi kuasa pemprosesan.

Bajet Pertengahan (RM 2,000 - RM 5,000)

Kalau anda dah serius dan mahu jalankan beberapa VM dan banyak kontena:

Komponen Anggaran Harga
PC Desktop Terpakai (i5/i7) RM 800 - RM 1,500
RAM 32GB DDR4 RM 200 - RM 400
SSD 500GB (Boot) RM 120 - RM 200
HDD 2TB x2 (Storan) RM 300 - RM 500
Switch Terurus 8-port RM 200 - RM 500
UPS 600VA RM 200 - RM 400
Kabel dan aksesori RM 50 - RM 100
Jumlah RM 1,870 - RM 3,600

Bajet Lanjutan (RM 5,000 - RM 15,000+)

Untuk yang betul-betul serius. Jujurnya, anda takkan perlukan setup macam ni pada permulaan. Tapi untuk rujukan:

Komponen Anggaran Harga
Pelayan Dell PowerEdge (terpakai) RM 1,500 - RM 4,000
RAM 64-128GB ECC RM 500 - RM 2,000
SSD Enterprise 1TB x2 RM 400 - RM 1,000
HDD 4TB x4 (NAS) RM 800 - RM 1,600
NAS Enclosure / Pelayan NAS RM 500 - RM 2,000
Switch Terurus 24-port RM 500 - RM 1,500
Firewall (Protectli/Netgate) RM 500 - RM 1,500
UPS 1500VA RM 500 - RM 1,000
Rak 12U RM 300 - RM 800
Kabel, patch panel, aksesori RM 200 - RM 500
Jumlah RM 5,700 - RM 15,900

Langkah 4: Rancang Topologi Rangkaian

Topologi rangkaian adalah pelan bagaimana semua peranti anda akan disambungkan. Anggaplah macam pelan lantai rumah β€” anda nak tahu apa kat mana sebelum mula bina.

Merancang ni dari awal akan mengelakkan banyak masalah di kemudian hari. Percayalah, reconfig rangkaian yang dah jalan tu memang menyakitkan.

Elemen Rangkaian Asas

  1. Sambungan Internet β€” Modem ISP anda (TM, Maxis, dll.)
  2. Router/Firewall β€” Titik kawalan utama rangkaian
  3. Switch β€” Menyambungkan semua peranti melalui kabel
  4. Titik Akses WiFi β€” Untuk peranti tanpa wayar
  5. Pelayan β€” Mesin yang menjalankan perkhidmatan
  6. NAS β€” Storan rangkaian

Nota Beginner: Untuk permulaan, anda mungkin hanya ada: Modem ISP -> Router rumah -> Switch -> Pelayan. Itu dah memadai. VLAN dan firewall boleh ditambah kemudian bila anda lebih selesa.

Perancangan Alamat IP

Merancang skim alamat IP dari awal adalah sangat penting. Macam nombor rumah dalam taman β€” kalau tak tersusun, susah nak cari nanti. Ini contoh yang anda boleh guna:

Rangkaian Utama:     10.0.0.0/24 (atau 192.168.1.0/24)

Gateway/Router:      10.0.0.1
DNS (Pi-hole):       10.0.0.2
NAS:                 10.0.0.10
Pelayan Utama:       10.0.0.20
Pelayan Kedua:       10.0.0.21

VLAN Pengurusan:     10.0.10.0/24
VLAN Pelayan:        10.0.20.0/24
VLAN IoT:            10.0.30.0/24
VLAN Tetamu:         10.0.40.0/24

Nota Beginner: Kalau anda tak faham apa itu /24 atau VLAN, tak apa langsung. Untuk sekarang, anda cuma perlu tahu yang setiap peranti dalam rangkaian anda perlukan alamat IP yang unik. Macam setiap rumah perlu nombor rumah yang berbeza. Kita akan belajar lebih mendalam tentang ni dalam bab rangkaian nanti.

Perancangan VLAN

VLAN (Virtual LAN) membolehkan anda mengasingkan rangkaian β€” macam dinding antara bilik dalam rumah. Peranti IoT tak boleh β€œnampak” pelayan anda, dan tetamu WiFi tak boleh akses data peribadi anda.

VLAN ID Nama Subnet Tujuan
1 Default 10.0.0.0/24 Peranti utama
10 Pengurusan 10.0.10.0/24 Antara muka pengurusan
20 Pelayan 10.0.20.0/24 VM dan kontena
30 IoT 10.0.30.0/24 Peranti pintar
40 Tetamu 10.0.40.0/24 WiFi tetamu

Langkah 5: Rancang Strategi Storan

Storan ni macam almari kat rumah β€” kena ada yang betul untuk tujuan yang betul. Jangan simpan baju dalam peti ais.

Jenis Storan

  1. SSD NVMe β€” Terpantas, untuk sistem pengendalian dan pangkalan data. Macam laci meja kerja β€” cepat nak capai.
  2. SSD SATA β€” Pantas, untuk aplikasi dan data aktif. Macam almari dalam bilik β€” dekat dan mudah diakses.
  3. HDD β€” Murah per GB, untuk backup dan arkib. Macam stor β€” besar dan murah, tapi tak sepantas yang lain.

Perancangan Kapasiti

Boot Drive (SSD):        256GB - 500GB
  └── Sistem pengendalian
  └── Mesin maya
  └── Imej kontena

Data Drive (HDD/SSD):   2TB - 8TB
  └── Data Nextcloud
  └── Fail media
  └── Repositori Git
  └── Sandaran pangkalan data

Sandaran (HDD):         4TB+
  └── Sandaran penuh
  └── Sandaran luar tapak (offsite)

Nota Beginner: Untuk permulaan, satu SSD 256GB sebagai boot drive sudah memadai. Anda boleh tambah HDD untuk data kemudian. Jangan beli storan berlebihan dulu β€” harga storan makin murah setiap tahun, jadi beli bila perlu sahaja.

Langkah 6: Rancang Penggunaan Tenaga

Ini bahagian yang ramai orang lupa β€” kos elektrik. Hardware murah tapi makan elektrik banyak = tak jimat jugak.

Anggaran Penggunaan Kuasa

Peranti Kuasa (Watt) Kos/Bulan (RM)*
Raspberry Pi 5 5-15W RM 2 - RM 6
Komputer Mini 20-50W RM 8 - RM 20
PC Desktop 50-150W RM 20 - RM 60
Pelayan Rak 1U 100-300W RM 40 - RM 120
NAS 4-bay 30-60W RM 12 - RM 24
Switch Rangkaian 10-30W RM 4 - RM 12
UPS (standby) 5-15W RM 2 - RM 6

Berdasarkan kadar RM 0.40/kWh, 24/7

Formula Pengiraan

Jom kira sama-sama supaya anda boleh buat anggaran sendiri:

Kos bulanan = Kuasa (Watt) Γ— 24 jam Γ— 30 hari Γ· 1000 Γ— Kadar/kWh

Contoh: PC Desktop 100W
= 100 Γ— 24 Γ— 30 Γ· 1000 Γ— RM 0.40
= 72,000 Γ· 1000 Γ— RM 0.40
= 72 kWh Γ— RM 0.40
= RM 28.80/bulan

Jadi kalau anda guna PC Desktop 100W 24/7, kosnya lebih kurang RM 29 sebulan. Tak banyak mana kan? Bandingkan dengan langganan cloud yang boleh cecah ratusan ringgit.

Nota Beginner: Nak jimat elektrik? Mula dengan Raspberry Pi atau komputer mini. Dua-dua ni guna bawah 50W β€” bil elektrik tambahan cuma RM 8-20 sebulan. Anda juga boleh set jadual untuk shutdown service yang tak guna waktu malam.

Langkah 7: Sediakan Senarai Semak

Okay, sekarang jom kumpulkan semua perancangan anda dalam senarai semak. Print atau save senarai ni, dan tick satu-satu sebelum anda mula beli apa-apa.

Senarai Semak Perkakasan

Senarai Semak Perisian

Senarai Semak Rangkaian

Senarai Semak Persekitaran

Checklist Siap Bab Ini

Ringkasan

Perancangan yang teliti adalah kunci kejayaan homelab. Dalam bab ini, kita telah:

  1. Menentukan matlamat dan keperluan β€” supaya setiap sen yang dibelanjakan ada tujuan
  2. Merancang bajet mengikut tahap β€” dari RM 500 sampai RM 15,000+
  3. Melakar topologi rangkaian β€” supaya semua peranti tersambung dengan betul
  4. Merancang strategi storan β€” jenis storan yang betul untuk tujuan yang betul
  5. Menganggarkan penggunaan tenaga β€” supaya bil elektrik tak bagi kejutan
  6. Menyediakan senarai semak lengkap β€” supaya tak ada yang tertinggal

Anda dah buat kerja yang paling penting β€” merancang. Ramai orang skip bab ni dan terus beli barang, lepas tu menyesal. Anda tak macam tu. Tahniah!

Dalam bab seterusnya, kita akan mula pilih perkakasan yang sesuai berdasarkan perancangan yang anda dah buat. Masa untuk window shopping β€” tapi kali ni, dengan pelan yang jelas. Jom!

Bab 3: Pemilihan Perkakasan β€” Pilih Yang Cukup, Bukan Yang Paling Mahal

Okay, mari kita bercakap pasal benda yang paling seronok (dan paling bahaya untuk dompet) β€” membeli perkakasan! Saya faham, bila mula explore homelab, memang gatal tangan nak terus beli server gah. Tapi jujurnya, saya pun bermula dengan sebuah Raspberry Pi je dulu. Tak perlu malu mulakan kecil.

Bab ini akan bantu anda buat pilihan yang bijak β€” bukan pilihan yang paling mahal.

Apa yang anda akan belajar:

  • Cara memilih CPU, RAM, storan, peralatan rangkaian, dan UPS yang sesuai
  • Bezakan antara apa yang wajib ada dan apa yang sekadar nice to have
  • Buat shortlist perkakasan yang masuk bajet anda tanpa sacrifice kualiti

Nota Beginner: Sasaran anda bukan beli perkakasan paling hebat di pasaran. Sasaran anda ialah beli perkakasan yang cukup stabil untuk belajar, dan boleh dinaik taraf kemudian bila anda dah lebih yakin. Ambil masa anda.

Laluan Paling Mudah untuk Beginner

  • Pilih satu mini PC atau desktop terpakai β€” jangan terus terjun ke server rack pada fasa awal
  • Sasarkan 16GB-32GB RAM, satu SSD untuk sistem, dan satu storan tambahan kalau perlu
  • Kalau anda masih ragu-ragu, pilih setup yang lebih jimat bunyi dan elektrik. Boleh upgrade nanti.

Langkah 1: Mulakan dengan Gambaran Besar

Bayangkan perkakasan homelab macam bahan masakan. Anda tak perlu beli semua bahan sekaligus β€” mulakan dengan yang asas, kemudian tambah bila dah mahir.

Pemilihan perkakasan yang tepat ialah asas kepada homelab yang sedap digunakan. Dalam bab ini, kita tak akan kejar spesifikasi paling tinggi. Kita akan fokus pada cara memilih perkakasan yang cukup, stabil, senyap kalau boleh, dan sesuai dengan bajet sebenar anda.

Peta Komponen Perkakasan Homelab Visual ringkas untuk memilih komponen utama sebelum mula membeli HOMELAB Prestasi + kebolehpercayaan + bajet Seimbangkan compute, storan, rangkaian, dan kuasa Kuasa & Penyejukan UPS untuk shutdown selamat Kipas dan aliran udara stabil CPU Bilangan cores ikut beban VM VT-x / AMD-V wajib untuk hypervisor Utamakan prestasi per watt RAM 16GB titik mula yang realistik 32GB hingga 64GB untuk growth ECC sesuai untuk kestabilan Storan NVMe untuk OS, VM, database SATA SSD untuk workload aktif HDD untuk media dan backup Rangkaian Switch terurus untuk VLAN 2+ NIC untuk firewall atau host 10GbE bila storan makin laju Platform Pelayan Mini PC untuk permulaan senyap Rack server bila perlu scale up
Peta Komponen Perkakasan Homelab

Langkah 2: Contoh Perkakasan Sebenar

Sebelum kita masuk teori, jom tengok rupa perkakasan yang ramai orang guna untuk homelab mereka.

Contoh mini PC kelas Intel NUC yang sesuai untuk homelab padat dan senyap.
Contoh mini PC kelas Intel NUC yang sesuai untuk homelab padat dan senyap.

Foto: Project Kei, Wikimedia Commons, CC BY-SA 4.0.

Mini PC macam Intel NUC ni kecil je β€” boleh letak atas meja tanpa sesiapa perasan anda ada β€œserver” di rumah!

Contoh single-board computer Raspberry Pi 5 untuk projek ringan dan pembelajaran.
Contoh single-board computer Raspberry Pi 5 untuk projek ringan dan pembelajaran.

Foto: RetroEditor, Wikimedia Commons, CC BY 4.0.

Raspberry Pi 5 β€” ini la kawan pertama saya dalam dunia homelab. Kecil macam dompet, tapi mampu buat banyak benda.

Langkah 3: Pemproses (CPU) β€” Otak Homelab Anda

Faktor Penting Pemproses

Pemproses adalah otak homelab anda. Kalau otak tak kuat, semua benda jadi slow. Tapi tak perlu pening β€” untuk pemilihan yang bijak, perhatikan empat benda ni je:

  1. Bilangan teras (cores) β€” Lebih banyak teras = lebih banyak VM/kontena boleh jalan serentak. Macam lebih banyak tangan, lebih banyak kerja boleh buat.
  2. Sokongan virtualisasi β€” Intel VT-x / AMD-V (wajib ada untuk hypervisor). Tanpa ni, tak boleh jalankan VM.
  3. Kecekapan tenaga β€” TDP (Thermal Design Power) yang rendah bermaksud bil elektrik yang rendah juga.
  4. Generasi β€” Pemproses lebih baru = lebih cekap tenaga. Tapi terpakai generasi lama pun dah memadai untuk belajar.

Cadangan Pemproses

Untuk Pemula (baru nak start): - Intel Core i3 generasi ke-8 atau lebih baru - AMD Ryzen 3 3200G atau lebih baru - Sesuai untuk 2-4 VM ringan β€” dah cukup untuk belajar!

Untuk Pertengahan (dah selesa, nak expand): - Intel Core i5/i7 generasi ke-8 hingga ke-12 - AMD Ryzen 5 3600 / Ryzen 7 3700X - Sesuai untuk 6-10 VM

Untuk Lanjutan (dah serious): - Intel Xeon E5-2680 v4 (terpakai, murah gila) - AMD EPYC 7302P - Sesuai untuk 20+ VM

Perbandingan Intel vs AMD untuk Homelab

Ciri Intel AMD
Ketersediaan terpakai Sangat banyak Sederhana
Harga terpakai Sangat murah Berpatutan
Kecekapan tenaga Baik (baru) Sangat baik
Sokongan ECC Xeon sahaja Kebanyakan Ryzen
iGPU (untuk transcoding) Ya (Quick Sync) Sesetengah sahaja

Nota Beginner: Jangan pening sangat pasal Intel vs AMD. Kedua-duanya boleh buat kerja. Pilih mana yang anda jumpa murah dan available. Dari pengalaman saya, Intel terpakai memang lebih mudah dijumpai di Malaysia.

Langkah 4: Memori (RAM) β€” Sumber Paling Berharga

Berapa Banyak RAM Diperlukan?

Jujurnya, RAM adalah sumber yang paling kritikal untuk virtualisasi. Anda boleh jimat kat CPU, boleh jimat kat storan, tapi kalau RAM tak cukup β€” semua benda jadi slow dan stress.

Jom kira sama-sama:

Pengiraan RAM:
  Hypervisor (Proxmox):     2GB
  + VM Ubuntu Docker:       4-8GB
  + VM Windows:             4-8GB
  + Kontena LXC (3-5):     2-4GB
  + Buffer/Cache:           2-4GB
  ─────────────────────────
  Minimum disyorkan:        16GB
  Ideal:                    32-64GB

Nampak? 16GB tu dah cukup ketat sebenarnya. Saya cadangkan kalau bajet mengizinkan, terus pergi 32GB. Anda akan terima kasih pada diri sendiri kemudian.

Jenis RAM

  • DDR4 Non-ECC β€” Standard, murah, sesuai untuk pemula. Ini yang kebanyakan desktop guna.
  • DDR4 ECC β€” Ada pembetulan ralat automatik, lebih stabil. Sesuai untuk pelayan yang jalan 24/7.
  • DDR4 ECC Registered (RDIMM) β€” Untuk pelayan enterprise, sokongan kapasiti besar. Harga terpakai? Murah sangat!

Nota Beginner: RAM DDR4 ECC terpakai dari pelayan enterprise sangat murah di pasaran terpakai. 32GB RDIMM boleh didapati pada harga RM 50-100 je kat Shopee atau Carousell. Serious murah.

Kapasiti Minimum Mengikut Penggunaan

Penggunaan RAM Minimum RAM Disyorkan
Docker sahaja 8GB 16GB
2-3 VM ringan 16GB 32GB
5-10 VM 32GB 64GB
Makmal penuh 64GB 128GB+

Langkah 5: Storan β€” Rumah untuk Data Anda

Jenis Pemacu Storan

Storan ni macam almari dalam rumah β€” ada yang laju nak access (laci meja), ada yang untuk simpan barang pukal (almari stor). Mari kita kenal setiap jenis:

SSD NVMe (M.2) - Kelajuan: 3,000-7,000 MB/s β€” laju gila! - Terbaik untuk: Boot drive, pangkalan data - Harga: Tinggi, tapi semakin turun - Cadangan: Samsung 970/980 EVO, WD Black SN770

SSD SATA (2.5”) - Kelajuan: 500-560 MB/s β€” masih laju untuk kebanyakan kerja - Terbaik untuk: Data aktif, storan VM - Harga: Sederhana - Cadangan: Samsung 870 EVO, Crucial MX500

HDD (3.5”) - Kelajuan: 100-250 MB/s β€” perlahan, tapi murah per GB - Terbaik untuk: Storan pukal, backup, media (filem, lagu) - Harga: Rendah per GB - Cadangan: WD Red Plus, Seagate IronWolf

Strategi Storan Disyorkan

Dari pengalaman saya, gabungan SSD + HDD adalah sweet spot terbaik:

Pelayan Utama:
β”œβ”€β”€ NVMe 500GB      β†’ Proxmox OS + ISO + VM Boot
β”œβ”€β”€ SSD SATA 1TB    β†’ Data VM + Kontena
└── HDD 4TB x2      β†’ Storan pukal (RAID 1)

NAS:
β”œβ”€β”€ SSD 256GB       β†’ Cache (ZFS SLOG/L2ARC)
└── HDD 4TB x4      β†’ Data (RAID-Z1 atau RAID-Z2)

Nota Beginner: Jangan risau kalau tak faham RAID atau ZFS lagi. Kita akan bincang nanti. Untuk sekarang, yang penting β€” guna SSD untuk OS dan HDD untuk simpan data besar. Itu dah cukup!

Langkah 6: Peralatan Rangkaian

Router/Firewall

Router/firewall adalah pengawal trafik homelab anda. Macam polis trafik β€” dia tentukan data mana boleh masuk, mana kena sekat.

Pilihan Perisian: - pfSense β€” Firewall sumber terbuka yang matang dan stabil. Komuniti besar. - OPNsense β€” Fork pfSense dengan antara muka lebih moden. Saya sendiri guna ni. - OpenWrt β€” Untuk router pengguna yang diubah suai. Bagus untuk router murah.

Pilihan Perkakasan: - Router biasa + firmware tersuai β€” Murah, tapi terhad - PC mini dengan 2+ NIC β€” Fleksibel, berkuasa. Pilihan popular untuk homelab. - Protectli Vault β€” Direka khas untuk firewall - Netgate β€” Perkakasan rasmi pfSense

Suis Rangkaian (Network Switch)

Switch ni macam satu palam extension untuk rangkaian. Tapi ada dua jenis utama:

Suis Tidak Terurus (Unmanaged): - Terus boleh digunakan β€” pasang dan jalan, takde konfigurasi - RM 50-200 - Sesuai untuk: Pemula yang baru nak start

Suis Terurus (Managed): - Sokongan VLAN, QoS, port mirroring β€” benda yang power - RM 200-1,500 - Sesuai untuk: Pertengahan dan lanjutan - Cadangan: TP-Link TL-SG108E, Netgear GS308T

Contoh switch gigabit 5-port untuk homelab kecil dan makmal rangkaian rumah.
Contoh switch gigabit 5-port untuk homelab kecil dan makmal rangkaian rumah.

Foto: Simon A. Eugster, Wikimedia Commons, CC BY-SA 3.0.

Suis 10GbE: - Untuk rangkaian berkelajuan tinggi β€” laju macam highway berbanding jalan kampung - RM 500-3,000 - Sesuai untuk: NAS berkelajuan tinggi, iSCSI - Cadangan: MikroTik CRS305-1G-4S+ (SFP+)

Titik Akses WiFi (Wireless Access Point)

Saya cadangkan pisahkan router dan WiFi untuk prestasi terbaik. Jangan guna WiFi dari router all-in-one β€” nanti coverage tak best.

  • TP-Link EAP245 β€” Kos efektif, boleh diurus melalui Omada. Popular di Malaysia.
  • Ubiquiti UniFi β€” Sangat popular dalam komuniti homelab. Tapi harga agak tinggi.
  • Serasi dengan OpenWrt β€” Untuk kawalan penuh, kalau anda jenis suka tinker.

Ni bahagian paling seronok β€” pilih mesin utama anda! Jom tengok pilihan yang ada.

Komputer Mini Terpakai (Pilihan Terbaik untuk Pemula!)

Ini pilihan kegemaran saya untuk orang yang baru mula. Senyap, jimat elektrik, dan murah kalau beli terpakai.

Dell OptiPlex Micro/SFF: - Kecil, senyap, cekap tenaga - 20-50W penggunaan kuasa β€” jimat bil TNB! - Mudah didapati terpakai di Malaysia - Harga: RM 400-1,000

Lenovo ThinkCentre Tiny: - Sangat kecil (1L) β€” serius, sekecil kotak tisu je - Boleh dipasang di belakang skrin - 15-35W penggunaan kuasa - Harga: RM 400-900

HP EliteDesk Mini: - Setara dengan Dell dan Lenovo - Boleh dipercayai β€” perkakasan enterprise memang tahan lama - 15-45W penggunaan kuasa - Harga: RM 400-900

Nota Beginner: Ketiga-tiga jenama ni (Dell, Lenovo, HP) adalah perkakasan enterprise yang dibuat untuk tahan lama. Beli terpakai pun masih boleh bertahan bertahun-tahun. Jangan risau.

Pelayan Rak Terpakai

Dell PowerEdge R720/R730: - 2 soket CPU (sehingga 44 teras) β€” power! - Sehingga 768GB RAM - 8-16 bay pemacu - Harga terpakai: RM 1,000-3,000 - Amaran: Bising macam jet engine dan guna banyak kuasa elektrik!

HP ProLiant DL380 Gen8/Gen9: - Setanding dengan Dell PowerEdge - Sokongan iLO untuk pengurusan jauh - Harga terpakai: RM 1,000-3,000

Nota Beginner: Pelayan rack enterprise memang power, tapi ia bising (50-70 dB β€” bayangkan bunyi vacuum cleaner) dan guna banyak kuasa (200-500W). Kalau homelab anda dalam bilik tidur atau apartment, mungkin tak sesuai. Mini PC jauh lebih praktikal untuk permulaan.

Raspberry Pi dan SBC (Single Board Computer)

Raspberry Pi 5: - 4 atau 8GB RAM - 2.4GHz Quad-core Arm Cortex-A76 - USB 3.0, PCIe, Gigabit Ethernet - 5-15W penggunaan kuasa β€” jimat gila! - Harga: RM 280-450

Penggunaan ideal: - Pelayan DNS Pi-hole - Home Assistant - VPN gateway - Projek pembelajaran

Dari pengalaman saya, Raspberry Pi sangat bagus untuk projek kecil dan belajar. Tapi untuk jadi pelayan utama homelab, ia agak terhad dari segi prestasi.

Langkah 8: Bekalan Kuasa Tanpa Gangguan (UPS)

Mengapa UPS Penting?

Bayangkan anda dah setup semua cantik-cantik, tiba-tiba blackout. Tanpa UPS, data boleh rosak, sistem fail boleh corrupt, dan perkakasan pun boleh terjejas. UPS adalah insurans untuk homelab anda.

UPS buat tiga benda penting: 1. Melindungi perkakasan daripada lonjakan kuasa (power surge) 2. Memberi masa untuk shutdown yang selamat kalau blackout 3. Mengelakkan kerosakan data dan sistem fail

Memilih UPS

Kapasiti Masa Sandaran* Sesuai Untuk
600VA 5-15 minit 1-2 peranti kecil
1000VA 10-25 minit PC + switch + NAS
1500VA 15-40 minit Pelayan + rangkaian
3000VA 30-60 minit Rak penuh

Masa bergantung pada beban sebenar

Cadangan UPS

  • APC Back-UPS 600VA β€” RM 200-350, asas tapi memadai
  • APC Smart-UPS 1000VA β€” RM 500-800, untuk pelayan
  • CyberPower CP1500PFCLCD β€” RM 600-900, sweet spot untuk homelab

Nota Beginner: Pilih UPS dengan sambungan USB supaya pelayan boleh menerima isyarat dan shutdown secara automatik apabila bateri rendah. NUT (Network UPS Tools) boleh buat benda ni β€” kita akan bincang dalam bab lanjutan nanti.

Langkah 9: Aksesori dan Peralatan Tambahan

Kabel Rangkaian

Jangan pandang rendah kat kabel! Kabel yang bagus = sambungan yang stabil.

  • Gunakan Cat6 atau Cat6a untuk semua sambungan baru
  • Pertimbangkan buat kabel sendiri kalau banyak sambungan diperlukan β€” jimat jangka panjang
  • Beli crimper dan penyambung RJ45 untuk fleksibiliti

KVM (Keyboard, Video, Mouse)

  • Crash cart β€” Skrin + papan kekunci mudah alih untuk kecemasan. Macam kit pertolongan cemas untuk server!
  • IP KVM β€” Akses konsol dari jauh (PiKVM adalah pilihan sumber terbuka yang sangat popular)
  • IPMI/iDRAC/iLO β€” Pengurusan jauh terbina dalam pelayan enterprise. Macam TeamViewer, tapi level hardware.

Penyejukan dan Pengudaraan

  • Pastikan aliran udara yang baik di kawasan homelab β€” jangan letak dalam almari tertutup!
  • Pertimbangkan kipas tambahan jika perlu
  • Suhu ideal: 18-27Β°C

Langkah 10: Panduan Pembelian Perkakasan Terpakai

Di Mana Membeli

Saya cadangkan mulakan dengan pasaran tempatan dulu β€” senang nak inspect barang sebelum bayar.

  1. Mudah.my / Carousell β€” Pasaran tempatan Malaysia. Boleh jumpa seller dan test barang.
  2. Shopee / Lazada β€” Penjual perkakasan terpakai. Banyak pilihan, harga competitive.
  3. eBay β€” Pilihan antarabangsa (termasuk penghantaran). Kadang-kadang ada barang yang tak jumpa kat Malaysia.
  4. Facebook Marketplace β€” Tawaran tempatan, kadang-kadang ada harga gila murah
  5. Kedai komputer terpakai β€” Lowyat Plaza, Digital Mall. Boleh pegang dan test sendiri.

Perkara Yang Perlu Diperiksa

Bila beli terpakai, jangan main belasah je. Check benda-benda ni:

  1. Ujian perkakasan β€” Minta penjual tunjukkan ia berfungsi. Kalau tak nak tunjuk, suspicious.
  2. Umur dan generasi β€” Elakkan perkakasan terlalu lama (lebih 10 tahun). Dah tak efficient.
  3. Penggunaan kuasa β€” Periksa TDP pemproses. Anda tak nak bil TNB naik mendadak.
  4. Kebolehnaiktarafan β€” Ada slot RAM kosong? Bay pemacu? Ini penting untuk masa depan.
  5. Bunyi bising β€” Terutamanya untuk pelayan enterprise. Minta seller hidupkan dan dengar sendiri.
  6. Waranti β€” Ada waranti penjual atau tidak? Biasanya 1-3 bulan untuk barang terpakai.

Tip Penjimatan

  • Beli RAM dan storan berasingan β€” selalunya lebih murah daripada beli sekali dengan mesin
  • Perkakasan generasi N-2 (dua generasi sebelum) menawarkan nilai terbaik
  • Tunggu jualan besar (11.11, 12.12, dll.) β€” harga boleh drop 20-30%
  • Sertai grup Facebook/Telegram homelab Malaysia β€” ahli selalu jual perkakasan dengan harga kawan

Checklist Siap Bab Ini

Ringkasan

Tahniah, anda dah habis bab perkakasan! Dalam bab ini, kita dah bincangkan:

  • Cara memilih pemproses, RAM, dan storan yang sesuai dengan bajet
  • Jenis-jenis peralatan rangkaian dan cadangan produk sebenar
  • Platform pelayan popular β€” dari mini PC sampai server rack dan Raspberry Pi
  • Kepentingan UPS dan cara memilihnya
  • Panduan membeli perkakasan terpakai di Malaysia

Jangan stress kalau belum beli apa-apa lagi. Buat research dulu, compare harga, dan beli bila dah yakin. Ingat β€” homelab yang terbaik bukan yang paling mahal, tapi yang paling kerap digunakan untuk belajar. Saya pun bermula dengan Raspberry Pi je, dan sekarang dah ada full rack. Ambil masa anda!

Dengan perkakasan yang dipilih, langkah seterusnya adalah menyediakan rangkaian homelab anda. Jom terus ke bab seterusnya!

Bab 3A: Panduan Perkakasan Lanjutan β€” Level Up Bila Dah Ready

Pelan Susun Atur Rak Homelab Contoh susunan perkakasan lanjutan dari bahagian atas hingga bawah rak Patch Panel / Cable Management Switch 1GbE / 10GbE Firewall / Router + Host Proxmox Peranti panas diletakkan di zon pengudaraan baik NAS / Storage Shelf Berat sederhana untuk keseimbangan rak UPS / PDU Peranti paling berat diletakkan di bahagian bawah rak Atas rak: mudah capai kabel Bawah rak: stabilkan berat dan kuasa
Pelan susun atur rak homelab

Okay, kalau anda dah baca Bab 3 dan dah ada setup asas yang berjalan, tahniah! Sekarang bab ni untuk orang yang dah mula rasa β€œhmm, macam tak cukup ni” atau β€œnak try benda baru.” Tapi jujurnya β€” kalau homelab pertama anda masih berjalan okay dengan satu mini PC, bab ni boleh jadi bookmark dulu. Takde siapa yang rush anda.

Apa yang anda akan belajar:

  • Bila patut bina custom server dan bila patut elakkan
  • Asas rangkaian 10GbE, UPS lanjutan, rak, dan pengurusan kabel
  • Cara urus bunyi dan haba supaya homelab tak jadi ketuhar di bilik anda

Nota Beginner: Tak semua homelab perlukan rack, 10GbE, atau dual PSU. Banyak homelab yang sangat berguna bermula dengan satu mesin sahaja. Bab ini sesuai dibaca sebagai rujukan β€” bukan checklist yang wajib diikut hari ini.

Laluan Paling Mudah untuk Beginner

  • Kalau ini homelab pertama anda, baca bab ini sebagai rujukan sahaja. Bookmark dan move on.
  • Tangguhkan 10GbE, rack, dan custom server sehingga anda benar-benar tahu apa bottleneck sebenar anda.
  • Hanya upgrade bila ada masalah nyata β€” storan tak cukup, suhu tinggi, atau bunyi tak terkawal.

Langkah 1: Membina Pelayan Tersuai (Custom Server)

Kadang-kadang, beli pre-built tak cukup. Mungkin anda nak spec tertentu, atau nak control setiap komponen. Membina pelayan tersuai macam bina PC gaming β€” tapi fokus pada kestabilan, bukan frame rate.

Memilih Papan Induk (Motherboard)

Papan induk pelayan berbeza daripada papan induk desktop biasa. Ia macam tulang belakang β€” semua komponen bergantung padanya.

Ciri papan induk pelayan: - Sokongan RAM ECC (Error Correcting Code) β€” data lebih selamat - Berbilang slot PCIe untuk kad rangkaian dan storan - IPMI/BMC untuk pengurusan jauh tanpa OS β€” boleh control server walaupun OS crash - Sokongan berbilang CPU (dual socket) β€” untuk workload berat - Kualiti komponen yang lebih tinggi β€” dibuat untuk jalan 24/7

Cadangan untuk Homelab:

Kategori Papan Induk Soket Ciri Utama
Bajet ASRock Rack X470D4U AM4 ECC, IPMI, murah
Pertengahan Supermicro X11SCH-F LGA1151 Xeon E, IPMI, kompak
Lanjutan Supermicro X11DPH-T Dual LGA3647 Dual Xeon, 10GbE

ASRock Rack X470D4U/X570D4U sangat popular dalam komuniti homelab kerana gabungan uniknya: - Menyokong pemproses AMD Ryzen pengguna biasa β€” tak perlu beli Xeon mahal - Sokongan RAM ECC (tak biasa pada platform AM4/AM5 β€” ini rare!) - IPMI terbina dalam untuk pengurusan jauh - Harga yang berpatutan berbanding papan induk pelayan lain - Faktor bentuk Micro-ATX β€” sesuai untuk casing kecil

Nota Beginner: Kalau anda baru pertama kali bina server sendiri, saya cadangkan papan induk ASRock Rack. Ia macam β€œbest of both worlds” β€” feature pelayan tapi guna CPU desktop yang murah dan mudah didapati.

Memilih Casing Pelayan

Casing Menara (Tower): - Paling senyap β€” jirannya pun tak tahu anda ada server - Mudah dicapai komponen - Sesuai untuk persekitaran kediaman - Cadangan: Fractal Design Define, Silverstone DS380

Casing Rak (Rackmount): - 1U, 2U, atau 4U - Memerlukan rak pelayan - Lebih kompak tetapi lebih bising (kipas kecil kena berputar laju untuk penyejukan) - Cadangan: Rosewill RSV-L4412, iStarUSA D-400

Casing NAS/Storan: - Direka khas untuk banyak cakera keras - Akses mudah ke bay cakera β€” macam laci, tarik keluar masuk - Penyejukan yang baik untuk cakera - Cadangan: Fractal Design Node 804, Silverstone CS381

Contoh rak server sebenar yang biasa digunakan untuk susun atur homelab lanjutan.
Contoh rak server sebenar yang biasa digunakan untuk susun atur homelab lanjutan.

Foto: Jfreyre, Wikimedia Commons, CC BY-SA 3.0.

Pertimbangan Penyejukan

Penyejukan ni penting. Server yang panas = server yang tak happy. Macam manusia jugak β€” panas sangat, performance drop.

Penyejukan Udara: - Lebih mudah dan murah β€” pilihan paling praktikal - Sesuai untuk kebanyakan homelab - Kipas casing besar (120mm-140mm) lebih senyap daripada kipas kecil - Cadangan: Noctua NH-D15 (CPU), Noctua NF-A14 (casing) β€” Noctua memang king of silence!

Penyejukan Cecair: - Lebih senyap dan cekap - Lebih mahal dan kompleks - Ada risiko kebocoran β€” air + elektronik = nightmare - Biasanya tak diperlukan untuk homelab

Tips Penyejukan:

Aliran udara yang betul:
  Hadapan: Kipas masuk (intake) β€” udara sejuk masuk
  Belakang: Kipas keluar (exhaust) β€” udara panas keluar
  Atas: Kipas keluar (pilihan)

  Tekanan positif (lebih banyak udara masuk daripada keluar)
  mengurangkan habuk.

Bayangkan macam aircond β€” udara sejuk masuk dari depan, udara panas keluar dari belakang. Simple je konsepnya.

Langkah 2: Rangkaian 10 Gigabit β€” Highway untuk Data

Bilakah Perlu 10GbE?

10GbE ni macam upgrade jalan kampung jadi highway. Laju 10x ganda dari Gigabit biasa! Tapi tak semua orang perlu highway. Anda perlu 10GbE kalau:

  • Memindahkan fail besar antara pelayan dan NAS (video editing, backup besar)
  • Menggunakan iSCSI untuk storan VM
  • Menjalankan kluster Proxmox dengan live migration
  • Backup besar yang perlu disiapkan dengan pantas

Kalau anda cuma jalankan beberapa Docker container dan browse web β€” Gigabit biasa dah lebih dari cukup.

Kos dan Pilihan

Suis 10GbE:

Suis Port Jenis Harga
MikroTik CRS305-1G-4S+ 4 SFP+ + 1 GbE Terurus RM 500-700
MikroTik CRS309-1G-8S+ 8 SFP+ + 1 GbE Terurus RM 800-1,200
TP-Link TL-SX3008F 8 SFP+ Terurus RM 1,200-1,800
Ubiquiti USW-Aggregation 8 SFP+ UniFi RM 1,500-2,000

Kad Rangkaian (NIC) 10GbE:

Kad Jenis Harga (Terpakai)
Mellanox ConnectX-3 SFP+ RM 50-100
Intel X520-DA2 Dual SFP+ RM 80-150
Intel X540-T2 Dual 10GBase-T RM 100-200

Kabel: - DAC (Direct Attach Copper) β€” Untuk jarak pendek (<7m), murah dan senang - SFP+ Transceiver + Fiber β€” Untuk jarak jauh, lebih mahal - Cat6a/Cat7 β€” Untuk 10GBase-T (sehingga 100m)

Nota Beginner: Nak try 10GbE tapi takut mahal? Ini combo paling jimat: Mellanox ConnectX-3 terpakai + MikroTik CRS305 + kabel DAC. Jumlah kos boleh kurang daripada RM 700 untuk sambungan 10G antara 2 peranti. Serius berbaloi!

Konfigurasi 10GbE

Linux:

# Periksa kad rangkaian dikesan
ip link show

# Konfigurasi alamat IP
sudo ip addr add 10.10.0.1/24 dev enp2s0f0

# Atau secara kekal di /etc/netplan/01-10gbe.yaml
network:
  version: 2
  ethernets:
    enp2s0f0:
      addresses:
        - 10.10.0.1/24
      mtu: 9000  # Jumbo frames

Jumbo Frames:

Jumbo frames (MTU 9000) meningkatkan prestasi rangkaian 10GbE. Bayangkan macam hantar barang β€” daripada hantar banyak bungkusan kecil, lebih efisien hantar satu bungkusan besar.

# Tetapkan MTU pada semua peranti dalam rangkaian 10G
sudo ip link set dev enp2s0f0 mtu 9000

# Kekal selepas reboot (Netplan)
network:
  ethernets:
    enp2s0f0:
      mtu: 9000

Nota Beginner: Semua peranti dalam rangkaian (switch, NIC, pelayan) mesti menyokong dan dikonfigurasi dengan MTU yang sama. Kalau satu peranti tak menyokong, kurangkan kepada MTU lalai (1500). Kalau tak sama, paket akan β€œpecah” dan network jadi pelik.

Langkah 3: UPS dan Pengurusan Kuasa Lanjutan

Contoh UPS sebenar untuk perlindungan kuasa dan shutdown yang selamat.
Contoh UPS sebenar untuk perlindungan kuasa dan shutdown yang selamat.

Foto: Work With Sounds, Wikimedia Commons, CC BY-SA 4.0.

Dalam Bab 3, kita dah bincang asas UPS. Sekarang jom masuk lebih dalam β€” macam mana nak integrate UPS dengan server supaya shutdown automatik bila blackout.

NUT (Network UPS Tools)

NUT membolehkan pelayan β€œbercakap” dengan UPS. Bila UPS detect blackout, dia boleh suruh server shutdown dengan selamat. Tak perlu anda bangun tengah malam tekan power button!

# Pasang NUT
sudo apt install nut -y

# Konfigurasi /etc/nut/ups.conf
[myups]
    driver = usbhid-ups
    port = auto
    desc = "APC Back-UPS 1500"

# Konfigurasi /etc/nut/upsd.conf
LISTEN 0.0.0.0 3493

# Konfigurasi /etc/nut/upsd.users
[admin]
    password = kata_laluan_nut
    upsmon master

# Konfigurasi /etc/nut/upsmon.conf
MONITOR myups@localhost 1 admin kata_laluan_nut master
SHUTDOWNCMD "/sbin/shutdown -h now"
POWERDOWNFLAG /etc/killpower

# Konfigurasi /etc/nut/nut.conf
MODE=standalone

# Mulakan NUT
sudo systemctl enable nut-server nut-monitor
sudo systemctl start nut-server nut-monitor

# Periksa status UPS
upsc myups

Pemantauan UPS dalam Grafana:

Nak lagi power? Boleh monitor UPS dalam Grafana β€” nampak graf bateri, load, dan voltage. Guna nut_exporter untuk hantar data UPS ke Prometheus:

services:
  nut-exporter:
    image: hon95/prometheus-nut-exporter:latest
    container_name: nut-exporter
    ports:
      - "9199:9199"
    environment:
      NUT_EXPORTER_SERVER: "10.0.20.10"
      NUT_EXPORTER_USERNAME: "admin"
      NUT_EXPORTER_PASSWORD: "kata_laluan_nut"
    restart: unless-stopped

Mengira Keperluan UPS

Jangan main agak je bila beli UPS. Jom kira:

Formula:
Kuasa UPS (VA) = Jumlah Kuasa Peranti (W) Γ— 1.6

Contoh:
  Pelayan:        150W
  NAS:             60W
  Suis:            20W
  Router:          15W
  ──────────────────
  Jumlah:         245W
  UPS diperlukan: 245 Γ— 1.6 = 392VA (minimum)
  Disyorkan:      600VA atau lebih

Nota Beginner: Formula Γ— 1.6 tu untuk bagi buffer. UPS tak boleh jalan dekat maximum β€” nanti cepat habis bateri dan tak sempat shutdown. Lebih baik lebih besar sikit daripada terlalu kecil.

Langkah 4: Penyimpanan Fizikal dan Organisasi

Rak Pelayan

Dah sampai masanya nak susun semua benda ni dengan kemas? Jom tengok pilihan rak.

Jenis Rak:

Jenis Ketinggian Sesuai Untuk
Rak terbuka 12U ~60cm Homelab kecil-sederhana
Rak tertutup 12U ~60cm Persekitaran bising/berhabuk
Rak dinding 6U ~30cm Peralatan rangkaian sahaja
Rak penuh 42U ~200cm Homelab besar (jarang di rumah)

Aksesori Rak: - Patch panel β€” Menyusun kabel rangkaian dengan kemas - Pengurusan kabel β€” Panel kabel, klip Velcro - Shelf β€” Untuk peranti bukan rackmount (letak mini PC, NAS biasa) - Blank panel β€” Mengisi ruang kosong (penting untuk aliran udara!) - PDU (Power Distribution Unit) β€” Strip kuasa khas untuk rak

Tanpa Rak β€” Pun Boleh!

Jangan risau kalau tak nak beli rak. Banyak homelabber yang sukses tanpa rak. Cuba pilihan kreatif ni:

  • Rak IKEA LACK β€” Meja kopi RM 39 yang legendary dalam komuniti homelab! Serius, Google β€œIKEA LACK server rack” dan anda akan kagum.
  • Shelf unit β€” Rak buku biasa pun jadi. Yang penting ada aliran udara.
  • DIN rail β€” Untuk peranti kecil macam Raspberry Pi, switch mini

Pengurusan Kabel

Kabel yang kemas bukan sekadar cantik β€” ia memudahkan troubleshooting. Bila ada masalah, anda tak nak spend setengah jam cari kabel mana yang ke mana.

Tips Pengurusan Kabel:
1. Gunakan kabel warna berbeza untuk rangkaian berbeza
   - Biru: LAN biasa
   - Merah: WAN/Internet
   - Hijau: Pengurusan
   - Kuning: Pelayan

2. Label setiap kabel di kedua-dua hujung

3. Gunakan Velcro (bukan zip tie) untuk fleksibiliti

4. Tinggalkan ruang untuk kabel baru

5. Dokumentasikan sambungan port dalam wiki

Dari pengalaman saya, point nombor 2 tu paling penting. Label kabel. Percaya saya β€” future you akan berterima kasih.

Langkah 5: Pertimbangan Bunyi dan Haba

Tahap Bunyi

Ni benda yang ramai orang tak fikir sampai dah beli. Jangan jadi macam saya β€” dulu beli server rack enterprise, letak dalam bilik tidur. Satu malam tak boleh tidur!

Peranti Tahap Bunyi (dB) Perbandingan
Raspberry Pi ~0 dB Senyap total
Mini PC (Dell Micro) 15-25 dB Hampir senyap, macam bisikan
PC Desktop 25-35 dB Sedikit kedengaran
Pelayan Tower 30-40 dB Kedengaran macam kipas bilik
Pelayan Rak 1U 45-60 dB Bising macam vacuum cleaner!
Pelayan Rak 2U+ 40-55 dB Agak bising

Cara Mengurangkan Bunyi: - Tukar kipas kepada Noctua β€” ini investment terbaik untuk ketenangan - Gunakan casing dengan peredaman bunyi - Letakkan peralatan di bilik berasingan kalau boleh - Gunakan pelayan tower berbanding rack (lebih senyap) - Sesuaikan lengkung kipas (fan curve) dalam BIOS/IPMI

Pengurusan Haba

Suhu Ideal:
  Bilik pelayan:    18-27Β°C
  CPU:              < 80Β°C (beban)
  Cakera keras:     25-45Β°C
  SSD:              < 70Β°C

Amaran:
  CPU > 90Β°C:       Throttling bermula (CPU slow down sendiri)
  Cakera > 55Β°C:    Jangka hayat berkurangan
  Bilik > 35Β°C:     Pertimbangkan penyejukan tambahan

Nota Beginner: Kalau bilik homelab anda terasa macam sauna, itu tanda perlu tambah kipas atau pindahkan peralatan. Panas yang berlebihan bukan sahaja rosak perkakasan, tapi juga naikkan bil elektrik (aircond kena kerja lebih kuat!).

Checklist Siap Bab Ini

Ringkasan

Anda dah sampai penghujung bab perkakasan lanjutan! Dalam bab ini, kita dah bincangkan:

  • Membina pelayan tersuai β€” papan induk, casing, dan penyejukan
  • Rangkaian 10 Gigabit β€” switch, NIC, kabel, dan konfigurasi
  • Pengurusan kuasa lanjutan β€” NUT dan pengiraan UPS
  • Penyimpanan fizikal β€” rak, IKEA LACK hack, dan organisasi kabel
  • Pertimbangan bunyi dan haba β€” jangan sampai tak boleh tidur!

Ingat, bab ini adalah rujukan untuk masa depan. Anda tak perlu buat semua ni sekarang. Homelab yang terbaik adalah yang berkembang secara organik β€” upgrade bila ada keperluan, bukan kerana FOMO. Ambil masa anda, dan enjoy the journey!

Bab 4: Konfigurasi Rangkaian β€” Sambungkan Semua Benda

Kalau perkakasan adalah badan homelab, rangkaian adalah sistem saraf dia. Tanpa rangkaian yang kemas, semua service tak boleh bercakap antara satu sama lain, troubleshooting jadi memenatkan, dan akses dari laptop atau telefon pun jadi mengelirukan.

Jangan risau β€” kita akan bina rangkaian ni step by step, dari asas yang paling penting dahulu. Tak perlu jadi network engineer untuk faham bab ni.

Apa yang anda akan belajar:

  • Aliran rangkaian asas dari router ke server
  • Cara susun alamat IP, DHCP, DNS, VLAN, dan VPN pada tahap beginner
  • Komponen rangkaian minimum untuk homelab yang kemas dan selamat

Nota Beginner: Untuk homelab pertama, rangkaian yang mudah difahami lebih bernilai daripada rangkaian yang terlalu canggih tapi sukar di-debug. Simple is beautiful.

Laluan Paling Mudah untuk Beginner

  • Mulakan dengan satu subnet utama, satu DNS server, dan satu router/firewall yang stabil
  • Gunakan IP statik hanya untuk server penting dan DNS
  • Simpan VPN dan Reverse Proxy sebagai fasa kedua selepas semuanya stabil di LAN

Langkah 1: Mulakan dengan Gambaran Besar

Bayangkan rangkaian homelab anda macam sistem jalan raya. Router adalah persimpangan utama, switch adalah jalan yang bercabang, dan setiap server/peranti adalah destinasi. Kalau jalan tersusun, trafik lancar. Kalau jalan berserabut, semua orang sesat.

Topologi Rangkaian Homelab Asas Internet Modem Router/Firewall (pfSense/OPNsense) Suis Rangkaian (Switch) Pelayan (Proxmox/ESXi) NAS (TrueNAS/Synology) Peranti Lain (PC, IoT, WiFi AP) WiFi
Topologi Rangkaian Homelab Asas

Langkah 2: Faham Konsep Asas Rangkaian

Model OSI Ringkas untuk Homelab

Anda tak perlu menghafal kesemua 7 lapisan OSI β€” itu kerja untuk exam je. Tapi faham lapisan utama yang berkaitan dengan homelab memang sangat membantu:

Lapisan Nama Contoh dalam Homelab
7 Aplikasi HTTP, DNS, SSH
4 Pengangkutan TCP, UDP
3 Rangkaian Alamat IP, Routing
2 Pautan Data Alamat MAC, VLAN, Switch
1 Fizikal Kabel Ethernet, WiFi

Nota Beginner: Tak perlu hafal semua ni. Yang paling anda akan guna hari-hari ialah Layer 3 (IP address) dan Layer 7 (apps macam web server, DNS). Yang lain akan jadi lebih jelas bila anda mula hands-on nanti.

Alamat IP dan Subnet

Alamat IP ni macam alamat rumah β€” setiap peranti perlukan alamat unik supaya data tahu nak pergi mana.

Alamat IP Peribadi (Private):

Kelas A: 10.0.0.0    - 10.255.255.255   (/8)
Kelas B: 172.16.0.0  - 172.31.255.255   (/12)
Kelas C: 192.168.0.0 - 192.168.255.255  (/16)

Subnet Mask biasa:

/24 = 255.255.255.0   = 254 hos (paling biasa)
/16 = 255.255.0.0     = 65,534 hos
/8  = 255.0.0.0       = 16,777,214 hos

Untuk homelab, /24 biasanya sudah lebih dari cukup untuk setiap VLAN. Anda dapat 254 alamat β€” tu dah banyak!

DHCP dan IP Statik

  • DHCP β€” Alamat IP diberikan secara automatik oleh router. Macam ambil nombor giliran β€” sistem yang tentukan.
  • IP Statik β€” Alamat IP ditetapkan secara manual. Macam parking reserved β€” anda tentukan sendiri.

Amalan terbaik: - Pelayan dan perkhidmatan penting = IP Statik (supaya alamat tak berubah-ubah) - Peranti pengguna biasa (telefon, laptop) = DHCP (biar automatik) - Tetapkan julat DHCP supaya tidak bertindih dengan IP statik

Contoh skim IP:
  Julat statik:  10.0.0.1 - 10.0.0.99
  Julat DHCP:    10.0.0.100 - 10.0.0.254

Dari pengalaman saya, skim macam ni memang mudah nak urus. Server penting duduk kat bawah (1-99), peranti biasa duduk kat atas (100-254). Kemas dan jelas.

Langkah 3: Menyediakan Router/Firewall

Router/firewall adalah penjaga pintu homelab anda. Dia tentukan siapa boleh masuk, siapa kena sekat. Jom tengok pilihan yang ada.

Pilihan 1: pfSense

pfSense adalah firewall sumber terbuka yang paling popular untuk homelab. Komuniti dia besar, documentation banyak, dan kalau anda stuck β€” confirm ada orang pernah solve masalah yang sama.

Keperluan Minimum: - CPU: 64-bit, 600MHz+ - RAM: 1GB (2GB+ disyorkan) - Storan: 8GB SSD - NIC: Minimum 2 (WAN + LAN)

Langkah Pemasangan:

  1. Muat turun ISO pfSense dari laman web rasmi
  2. Cipta USB bootable menggunakan Rufus atau balenaEtcher
  3. Boot dari USB dan ikuti wizard pemasangan
  4. Konfigurasi antara muka WAN dan LAN

Konfigurasi Asas pfSense:

WAN Interface: igb0 (disambung ke modem ISP)
  - Jenis: DHCP (atau PPPoE mengikut ISP)

LAN Interface: igb1 (disambung ke suis rangkaian)
  - IP: 10.0.0.1/24
  - DHCP Server: Aktif
  - Julat DHCP: 10.0.0.100 - 10.0.0.254

Pilihan 2: OPNsense

OPNsense adalah alternatif kepada pfSense dengan antara muka yang lebih moden dan kemas:

  • Fork daripada pfSense β€” jadi banyak konsep yang sama
  • Kemas kini lebih kerap
  • Antara muka web yang lebih cantik dan mesra pengguna
  • Sokongan WireGuard terbina dalam β€” tak perlu install tambahan
  • Proses pemasangan serupa dengan pfSense

Nota Beginner: Saya cadangkan pilih satu je antara pfSense atau OPNsense. Kedua-duanya bagus. Kalau anda suka UI yang moden, pilih OPNsense. Kalau anda nak komuniti yang lebih besar dan documentation lebih banyak, pilih pfSense.

Peraturan Firewall Asas

Firewall rules ni macam peraturan rumah β€” siapa boleh pergi mana:

# Benarkan LAN ke Internet
Sumber: LAN net β†’ Destinasi: Mana-mana β†’ Tindakan: Benarkan

# Benarkan LAN ke pelayan
Sumber: LAN net β†’ Destinasi: 10.0.20.0/24 β†’ Tindakan: Benarkan

# Sekat IoT ke LAN (kecuali yang perlu)
Sumber: IoT net β†’ Destinasi: LAN net β†’ Tindakan: Sekat

# Benarkan IoT ke Internet
Sumber: IoT net β†’ Destinasi: Mana-mana β†’ Tindakan: Benarkan

Logiknya mudah β€” peranti IoT (smart bulb, kamera) boleh access internet, tapi tak boleh β€œnampak” komputer dan server anda. Selamat!

Langkah 4: Konfigurasi VLAN

Apa Itu VLAN?

VLAN (Virtual Local Area Network) ni macam bilik berasingan dalam satu rumah. Walaupun semua guna satu switch fizikal yang sama, setiap VLAN adalah rangkaian logik yang berasingan.

Kenapa penting? - Keselamatan β€” Mengasingkan peranti IoT daripada pelayan. Smart TV tak perlu β€œnampak” NAS anda. - Prestasi β€” Mengurangkan trafik siaran (broadcast). Kurang noise, lebih smooth. - Organisasi β€” Mengelompokkan peranti mengikut fungsi. Kemas!

Contoh Konfigurasi VLAN

Pada pfSense/OPNsense:

  1. Navigasi ke Interfaces β†’ VLANs
  2. Tambah VLAN baru:
    • Parent Interface: igb1 (LAN)
    • VLAN Tag: 20
    • Description: Pelayan
  3. Aktifkan antara muka VLAN di Interfaces β†’ Assignments
  4. Konfigurasi alamat IP untuk antara muka VLAN
  5. Cipta peraturan firewall untuk VLAN

Pada Suis Terurus (contoh: TP-Link):

Port 1-4:  VLAN 1  (LAN biasa) - Untagged
Port 5-6:  VLAN 20 (Pelayan)   - Untagged
Port 7:    VLAN 30 (IoT)       - Untagged
Port 8:    Trunk (ke router)   - Tagged: 1, 20, 30

Nota Beginner: VLAN memang nampak complicated pada awalnya. Tapi sebenarnya konsep dia simple β€” anda cuma β€œlabel” setiap port switch dengan nombor VLAN. Peranti pada VLAN yang sama boleh nampak sesama sendiri, peranti pada VLAN berbeza tak boleh (kecuali router benarkan). Itu sahaja!

Langkah 5: Konfigurasi DNS

Pi-hole sebagai DNS Server

Pi-hole ni macam pembantu rumah yang rajin β€” dia bukan sahaja sekat iklan (bye bye YouTube ads!), tapi juga jadi pelayan DNS tempatan yang power.

Dengan Pi-hole, anda boleh type nas.lab.local dalam browser instead of 10.0.0.10. Lebih senang nak ingat, kan?

Pemasangan Pi-hole dengan Docker:

# docker-compose.yml
version: "3"
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "8081:80/tcp"
    environment:
      TZ: 'Asia/Kuala_Lumpur'
      WEBPASSWORD: 'kata_laluan_selamat'
    volumes:
      - './etc-pihole:/etc/pihole'
      - './etc-dnsmasq.d:/etc/dnsmasq.d'
    restart: unless-stopped

Konfigurasi DNS Tempatan:

Tambah rekod DNS tempatan di Pi-hole supaya anda boleh guna nama instead of IP:

# Di Pi-hole β†’ Local DNS β†’ DNS Records
proxmox.lab.local     10.0.20.10
nas.lab.local         10.0.0.10
nextcloud.lab.local   10.0.20.20
grafana.lab.local     10.0.20.21
gitea.lab.local       10.0.20.22
homeassist.lab.local  10.0.20.23

Sekarang anda boleh buka browser dan taip grafana.lab.local β€” tak perlu ingat IP lagi!

DNS Lebih Selamat

Nak level up keselamatan DNS anda? Konfigurasi Pi-hole untuk guna DNS yang disulitkan (encrypted):

  • DNS over HTTPS (DoH) β€” Menggunakan Cloudflared
  • DNS over TLS (DoT) β€” Menggunakan Unbound
  • Upstream DNS β€” Cloudflare (1.1.1.1) atau Quad9 (9.9.9.9)

Pemasangan Unbound:

# Tambah ke docker-compose.yml
  unbound:
    container_name: unbound
    image: mvance/unbound:latest
    ports:
      - "5335:53/tcp"
      - "5335:53/udp"
    volumes:
      - './unbound:/opt/unbound/etc/unbound'
    restart: unless-stopped

Kemudian, tetapkan Pi-hole untuk menggunakan Unbound sebagai upstream DNS: 127.0.0.1#5335

Nota Beginner: DNS yang encrypted ni optional tapi bagus untuk privacy. Kalau anda baru mula, setup Pi-hole basic dulu β€” dah cukup power. Boleh tambah Unbound nanti bila dah selesa.

Langkah 6: Konfigurasi VPN

WireGuard β€” Akses Homelab dari Mana-Mana

Bayangkan anda kat kedai mamak, tiba-tiba nak check Grafana dashboard kat rumah. Tanpa VPN, tak boleh. Dengan VPN, telefon anda macam β€œduduk” dalam rangkaian rumah walaupun anda kat luar.

WireGuard adalah protokol VPN moden yang pantas, ringkas, dan selamat. Saya cadangkan WireGuard berbanding OpenVPN kerana ia jauh lebih mudah nak setup dan prestasi pun lebih baik.

Pemasangan WireGuard dengan Docker:

# docker-compose.yml
services:
  wireguard:
    image: lscr.io/linuxserver/wireguard:latest
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Kuala_Lumpur
      - SERVERURL=vpn.domain-anda.com
      - SERVERPORT=51820
      - PEERS=telefon,laptop,tablet
      - PEERDNS=10.0.0.2
      - INTERNAL_SUBNET=10.13.13.0
    volumes:
      - ./wireguard-config:/config
      - /lib/modules:/lib/modules
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    restart: unless-stopped

Konfigurasi Port Forwarding:

Pada router anda, buat Port Forward untuk port UDP 51820 ke pelayan WireGuard:

Protokol: UDP
Port Luaran: 51820
IP Destinasi: 10.0.20.20 (pelayan WireGuard)
Port Dalaman: 51820

Akses dari Telefon dan Laptop

Setup client pun senang je:

  1. Pasang aplikasi WireGuard di telefon/laptop (ada di App Store dan Play Store)
  2. Import fail konfigurasi atau imbas kod QR (Docker container dah auto-generate untuk anda!)
  3. Aktifkan sambungan VPN
  4. Selesai β€” anda kini boleh akses semua perkhidmatan homelab macam anda duduk depan server

Nota Beginner: WireGuard ni serius senang. Kalau anda boleh scan QR code, anda boleh setup VPN. Docker container tu dah generate semua config untuk anda.

Langkah 7: Reverse Proxy

Mengapa Perlukan Reverse Proxy?

Tanpa reverse proxy, anda kena ingat port setiap service β€” Grafana port 3000, Nextcloud port 8080, Gitea port 3001… pening kepala! Dengan reverse proxy:

  • Akses semua perkhidmatan melalui satu IP/port (port 443)
  • SSL/TLS automatik untuk setiap perkhidmatan β€” connection encrypted, lebih selamat
  • Penghalaan berdasarkan nama domain β€” grafana.lab.local, nextcloud.lab.local, etc.

Nginx Proxy Manager

Ini reverse proxy paling senang nak setup β€” ada GUI, tak perlu edit config file manual.

Pemasangan:

# docker-compose.yml
services:
  nginx-proxy-manager:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    ports:
      - '80:80'
      - '443:443'
      - '81:81'     # Panel admin
    volumes:
      - ./npm-data:/data
      - ./npm-letsencrypt:/etc/letsencrypt
    restart: unless-stopped

Konfigurasi Proxy Host:

  1. Log masuk ke panel admin (port 81) β€” default login: admin@example.com / changeme
  2. Tambah Proxy Host baru:
    • Domain: nextcloud.lab.local
    • Forward IP: 10.0.20.20
    • Forward Port: 8080
    • SSL: Aktifkan (Let’s Encrypt)

Selesai! Sekarang bila anda buka https://nextcloud.lab.local, Nginx Proxy Manager akan arahkan ke server yang betul secara automatik.

Langkah 8: Pemantauan Rangkaian

Alat Pemantauan Asas

Sebelum guna tool fancy, master dulu tool asas ni:

  • Ping β€” Uji ketersambungan. ping 10.0.0.1 β€” server hidup ke tak?
  • traceroute β€” Jejak laluan paket. Data anda lalu mana sebelum sampai destinasi?
  • nmap β€” Imbas port dan perkhidmatan. Apa yang jalan kat server tu?
  • iftop β€” Pantau trafik masa nyata. Siapa yang guna bandwidth paling banyak?

Uptime Kuma

Uptime Kuma adalah alat pemantauan yang ringan dan cantik. Dia akan ping semua service anda dan alert kalau ada yang down.

services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    volumes:
      - ./uptime-kuma-data:/app/data
    ports:
      - 3001:3001
    restart: unless-stopped

Dari pengalaman saya, Uptime Kuma ni salah satu tool pertama yang patut anda deploy. Bila ada service down tengah malam, anda akan tahu β€” bukan esok pagi baru perasan.

Checklist Siap Bab Ini

Ringkasan

Tahniah, anda dah habis bab rangkaian! Bab yang paling penting, kalau nak jujur. Kita dah bincangkan:

  • Konsep asas rangkaian β€” IP, subnet, DHCP
  • Konfigurasi router/firewall β€” pfSense dan OPNsense
  • VLAN β€” bilik berasingan dalam satu rumah rangkaian
  • DNS dengan Pi-hole β€” bye bye iklan, hello nama domain cantik
  • VPN dengan WireGuard β€” akses homelab dari kedai mamak
  • Reverse proxy dengan Nginx Proxy Manager β€” satu pintu masuk untuk semua service
  • Alat pemantauan rangkaian β€” tahu service mana yang down

Rangkaian yang kukuh adalah asas untuk semua yang kita akan bina seterusnya. Kalau ada benda yang tak faham, jangan risau β€” baca semula dan cuba hands-on. Networking ni memang kena practice baru click. Ambil masa anda!

Seterusnya, kita akan tengok sistem pengendalian yang sesuai untuk homelab. Jom!

Bab 4A: Rangkaian Lanjutan β€” Kuasai Network Macam Pro

Peta Zon VLAN dan Keselamatan Contoh segmentasi rangkaian menggunakan pfSense atau OPNsense Internet / WAN pfSense / OPNsense Firewall, NAT, DHCP, DNS forwarding, policy rules VLAN 20 - Pelayan Proxmox, NAS, Docker, Grafana Akses luas tetapi dikawal Boleh bercakap dengan internet VLAN 30 - IoT Kamera, sensor, peranti pintar Akses minimum ke pelayan tertentu Sekat RFC1918 lain secara lalai VLAN 40 - Tetamu Internet sahaja Client Isolation di WiFi Tiada akses ke LAN atau server
Peta zon VLAN dan keselamatan

Okay, kalau anda dah berjaya setup rangkaian asas dari Bab 4 β€” DNS jalan, DHCP stabil, peranti semua boleh online β€” tahniah! Sekarang kita masuk level seterusnya. Bab ini akan tunjuk macam mana nak fine-tune rangkaian anda supaya lebih selamat, lebih teratur, dan lebih professional.

Tapi macam biasa β€” jangan rush. Tambah satu benda pada satu masa, test, pastikan okay, baru tambah benda seterusnya.

Apa yang anda akan belajar:

  • Cara mendalami NAT, VLAN, managed switch, dan monitoring rangkaian
  • Bagaimana segmentasi rangkaian membantu keselamatan dan organisasi
  • Setup WiFi dengan VLAN, IPv6, dan tools untuk troubleshoot network

Nota Beginner: Bab ini sesuai dianggap sebagai β€œfasa 2”. Kalau DNS, DHCP, dan akses dalaman pun belum stabil, tangguhkan dulu bahagian lanjutan ni. Selesaikan asas dulu, baru level up.

Laluan Paling Mudah untuk Beginner

  • Jangan sentuh VLAN berbilang lapis kalau anda masih belum selesa dengan IP biasa dan DHCP
  • Kalau nak cuba segmentasi, mula dengan satu VLAN tambahan sahaja β€” contohnya untuk IoT
  • Selepas setiap perubahan switch atau firewall, uji akses internet dan DNS dahulu. Ini penting!

Langkah 1: Konfigurasi pfSense/OPNsense Mendalam

Antara Muka Web pfSense

Selepas pemasangan, akses antara muka web pfSense melalui https://10.0.0.1. Dari sini, anda boleh control semua benda β€” firewall rules, DHCP, DNS, VLAN, dan banyak lagi.

Wizard Persediaan Awal:

  1. General Information:
    • Hostname: pfsense
    • Domain: lab.local
    • DNS Servers: 1.1.1.1, 9.9.9.9
  2. Time Server:
    • Timezone: Asia/Kuala_Lumpur
    • NTP Server: my.pool.ntp.org
  3. WAN Configuration:
    • Jenis: DHCP (atau PPPoE untuk Unifi/TM)
    • Sekat rangkaian peribadi: Ya
    • Sekat rangkaian bogon: Ya
  4. LAN Configuration:
    • Alamat IP: 10.0.0.1/24

Nota Beginner: Wizard ni akan guide anda step by step. Kalau guna ISP Unifi atau TM, pilih PPPoE dan masukkan username/password yang ISP bagi. Kalau tak pasti, hubungi ISP anda.

NAT (Network Address Translation)

NAT ni macam receptionist di pejabat. Semua orang dalam pejabat (rangkaian peribadi) guna satu nombor telefon utama (IP awam) untuk call keluar. Receptionist (NAT) yang uruskan siapa call siapa.

Port Forwarding:

Kadang-kadang anda nak orang luar boleh access service tertentu. Port forwarding macam bagi extension number β€” call masuk ke nombor utama, tapi sambung ke orang yang betul.

Firewall β†’ NAT β†’ Port Forward β†’ Add

Interface:        WAN
Protocol:         TCP
Destination:      WAN address
Destination Port: 443
Redirect Target:  10.0.20.20
Redirect Port:    443
Description:      HTTPS ke Reverse Proxy

Contoh Port Forward yang Biasa:

Perkhidmatan Port Luaran IP Dalaman Port Dalaman
HTTPS (Reverse Proxy) 443 10.0.20.20 443
WireGuard VPN 51820/UDP 10.0.20.20 51820
SSH (pilihan) 22222 10.0.20.20 22

Nota Beginner: Minimumkan port yang dibuka melalui Port Forward. Setiap port yang terbuka adalah satu β€œpintu masuk” yang attacker boleh cuba. Gunakan VPN untuk akses perkhidmatan dalaman β€” jauh lebih selamat daripada buka banyak port.

DHCP Static Mappings

Ini cara elegant untuk pastikan peranti sentiasa dapat IP yang sama, tanpa perlu set IP statik pada peranti tu sendiri. Router yang uruskan.

Services β†’ DHCP Server β†’ LAN β†’ DHCP Static Mappings

Alamat MAC:    aa:bb:cc:dd:ee:ff
IP Address:     10.0.0.20
Hostname:       docker-host
Description:    Pelayan Docker Utama

Bagusnya cara ni β€” kalau anda format semula server, dia tetap dapat IP yang sama sebab router ingat MAC address dia. Tak perlu reconfigure.

DNS Resolver/Forwarder

pfSense boleh jadi DNS resolver atau forwarder. Apa bezanya?

DNS Resolver (Unbound): - Menyelesaikan pertanyaan DNS secara langsung β€” tanya terus ke root servers - Lebih peribadi (tiada pihak ketiga nampak pertanyaan anda) - Sedikit lebih perlahan untuk pertanyaan pertama

DNS Forwarder: - Majukan pertanyaan ke pelayan DNS lain (1.1.1.1, 8.8.8.8) - Lebih pantas untuk pertanyaan pertama - Kurang peribadi

Saya cadangkan: Gunakan Pi-hole sebagai DNS utama, dengan pfSense sebagai sandaran. Best of both worlds!

Services β†’ DNS Resolver β†’ General Settings

Aktifkan:           Ya
Port:               53
Interface:          LAN, VLAN20, VLAN30
DNS Query Forwarding: Aktifkan (ke Pi-hole 10.0.0.2)

Konfigurasi VLAN Mendalam pada pfSense

Jom setup VLAN step by step. Bayangkan anda nak buat tiga β€œbilik” dalam rangkaian β€” satu untuk server, satu untuk IoT, satu untuk tetamu.

Langkah 1: Cipta VLAN

Interfaces β†’ VLANs β†’ Add

Parent Interface: igb1 (LAN)
VLAN Tag:         20
Description:      Pelayan

(Ulang untuk VLAN 30, 40, dll.)

Langkah 2: Tetapkan Antara Muka

Interfaces β†’ Assignments β†’ Add

VLAN 20 β†’ Tetapkan sebagai OPT1
  β†’ Namakan semula ke "PELAYAN"
  β†’ Alamat IP: 10.0.20.1/24
  β†’ DHCP: Aktifkan (10.0.20.100 - 10.0.20.254)

VLAN 30 β†’ Tetapkan sebagai OPT2
  β†’ Namakan semula ke "IOT"
  β†’ Alamat IP: 10.0.30.1/24
  β†’ DHCP: Aktifkan (10.0.30.100 - 10.0.30.254)

Langkah 3: Peraturan Firewall VLAN

Ini bahagian yang paling penting β€” tentukan siapa boleh bercakap dengan siapa:

# VLAN PELAYAN (20)
Benarkan: PELAYAN net β†’ Mana-mana (Internet + LAN)
Benarkan: PELAYAN net β†’ PELAYAN net (inter-server)

# VLAN IoT (30)
Benarkan: IoT net β†’ IoT net (peranti IoT sesama)
Benarkan: IoT net β†’ 10.0.20.23:8123 (Home Assistant sahaja)
Benarkan: IoT net β†’ Mana-mana:53 (DNS)
Benarkan: IoT net β†’ Mana-mana:123 (NTP)
Sekat:    IoT net β†’ RFC1918 (sekat semua rangkaian peribadi lain)
Benarkan: IoT net β†’ Mana-mana (Internet)

# VLAN Tetamu (40)
Sekat:    Tetamu net β†’ RFC1918 (sekat semua rangkaian peribadi)
Benarkan: Tetamu net β†’ Mana-mana (Internet sahaja)

Perhatikan logiknya β€” IoT boleh access internet dan Home Assistant, tapi tak boleh nampak server atau PC anda. Tetamu pula hanya boleh guna internet. Simple dan selamat!

Langkah 2: Konfigurasi Suis Terurus

Sekarang kita dah buat VLAN kat firewall, kena setup switch pulak. Switch kena tahu port mana belong VLAN mana.

Konfigurasi VLAN pada Suis:

Port 1: Trunk (ke router)
  - VLAN 1: Tagged
  - VLAN 20: Tagged
  - VLAN 30: Tagged
  - VLAN 40: Tagged
  - PVID: 1

Port 2-3: Pelayan (VLAN 20)
  - VLAN 20: Untagged
  - PVID: 20

Port 4: NAS (VLAN 1 - LAN utama)
  - VLAN 1: Untagged
  - PVID: 1

Port 5-6: IoT (VLAN 30)
  - VLAN 30: Untagged
  - PVID: 30

Port 7: WiFi AP (Trunk)
  - VLAN 1: Tagged
  - VLAN 30: Tagged
  - VLAN 40: Tagged
  - PVID: 1

Port 8: Komputer Admin (VLAN 1)
  - VLAN 1: Untagged
  - PVID: 1

Penjelasan Tagged vs Untagged:

Ini konsep yang ramai orang pening. Saya jelaskan dengan analogi:

  • Tagged (Trunk): Macam surat dengan cop warna. Paket ada label VLAN, jadi switch/router tahu dia datang dari VLAN mana. Guna untuk sambungan antara switch, router, dan WiFi AP.
  • Untagged (Access): Macam surat biasa tanpa cop. Peranti biasa (server, PC, IoT) tak perlu tahu pasal VLAN β€” switch yang uruskan.
  • PVID (Port VLAN ID): VLAN default untuk surat tanpa cop yang masuk melalui port tu.

Nota Beginner: Kalau VLAN setup anda tak berfungsi, 90% masalah adalah salah satu daripada: (1) trunk port tak tagged semua VLAN yang perlu, (2) PVID salah, atau (3) firewall rule tak betul. Check tiga benda tu dulu.

MikroTik RouterOS

MikroTik sangat popular sebab harga murah tapi feature gila banyak. Saya cadangkan untuk orang yang tak takut CLI:

# Konfigurasi VLAN pada MikroTik (CLI)

# Cipta bridge
/interface bridge add name=bridge1

# Tambah port ke bridge
/interface bridge port add bridge=bridge1 interface=ether2
/interface bridge port add bridge=bridge1 interface=ether3

# Cipta VLAN
/interface vlan add interface=bridge1 name=vlan20 vlan-id=20
/interface vlan add interface=bridge1 name=vlan30 vlan-id=30

# Tetapkan alamat IP
/ip address add address=10.0.20.1/24 interface=vlan20
/ip address add address=10.0.30.1/24 interface=vlan30

# Konfigurasi DHCP untuk setiap VLAN
/ip pool add name=pool-vlan20 ranges=10.0.20.100-10.0.20.254
/ip dhcp-server add interface=vlan20 address-pool=pool-vlan20
/ip dhcp-server network add address=10.0.20.0/24 gateway=10.0.20.1 dns-server=10.0.0.2

Langkah 3: WiFi dan VLAN

Konfigurasi WiFi dengan VLAN

Ini benda yang sangat cool β€” satu WiFi AP boleh broadcast berbilang SSID, setiap satu dengan VLAN berbeza. Macam satu bangunan dengan pintu masuk berbeza.

Contoh Konfigurasi:

SSID VLAN Tujuan Keselamatan
HomeNet 1 Rangkaian utama WPA3 Personal
IoT-Devices 30 Peranti pintar WPA2 Personal
Guest-WiFi 40 Tetamu WPA2 Personal

Nampak? Tetamu connect ke Guest-WiFi, tapi mereka hanya boleh access internet β€” tak boleh nampak NAS atau server anda. Selamat!

Pada Ubiquiti UniFi: 1. Settings β†’ WiFi β†’ Create New 2. Nama: IoT-Devices 3. Security: WPA2 Personal 4. VLAN: 30 5. Band: 2.4 GHz sahaja (untuk peranti IoT lama yang tak support 5GHz)

Pada TP-Link Omada: 1. Wireless Networks β†’ Add 2. SSID: IoT-Devices 3. VLAN: 30 4. Security: WPA/WPA2-Personal 5. Schedule: Sentiasa aktif

Pengasingan Klien WiFi

Satu lagi feature penting β€” Client Isolation. Ini bermaksud peranti pada WiFi yang sama pun tak boleh nampak sesama sendiri. Sangat penting untuk rangkaian tetamu!

UniFi: WiFi β†’ Guest Network β†’ Client Isolation: ON
Omada: Wireless β†’ SSID β†’ Client Isolation: Enable

Nota Beginner: Bayangkan anda bagi WiFi kat tetamu. Tanpa Client Isolation, telefon tetamu A boleh β€œnampak” laptop tetamu B. Dengan Client Isolation, setiap tetamu isolated β€” lebih selamat.

Langkah 4: Pemantauan Rangkaian Mendalam

ntopng

Nak tahu siapa yang makan bandwidth paling banyak? ntopng boleh jawab. Ia macam CCTV untuk rangkaian anda β€” nampak semua trafik secara real-time.

services:
  ntopng:
    image: ntop/ntopng:stable
    container_name: ntopng
    network_mode: host
    environment:
      - NTOPNG_ARGS=-i eth0 -w 3000
    volumes:
      - ./ntopng/data:/var/lib/ntopng
    restart: unless-stopped

Ciri ntopng: - Papan pemuka trafik masa nyata β€” nampak siapa guna berapa bandwidth - Pengenalpastian aplikasi (Layer 7) β€” Netflix ke YouTube yang makan bandwidth? - Pengesanan ancaman β€” kalau ada traffic suspicious, ntopng alert - Sejarah trafik β€” boleh check traffic pattern semalam, minggu lepas - Amaran berdasarkan ambang β€” set alert kalau bandwidth exceed limit

Speedtest Berkala

Nak tahu kalau ISP deliver speed yang dijanjikan? Automate speedtest dan log hasilnya:

#!/bin/bash
# /usr/local/bin/speedtest-log.sh
RESULT=$(speedtest-cli --json)
echo "$RESULT" >> /var/log/speedtest.json
echo "$(date): $(echo $RESULT | jq -r '.download/1000000 | floor') Mbps down, $(echo $RESULT | jq -r '.upload/1000000 | floor') Mbps up"

Dari pengalaman saya, ini sangat berguna kalau anda nak complain ke ISP. Ada data concrete, bukan sekadar β€œinternet saya slow.”

Langkah 5: IPv6 dalam Homelab

Mengapa IPv6?

IPv6 ni macam upgrade dari nombor telefon 8 digit ke 12 digit β€” lebih banyak nombor, semua orang boleh dapat nombor sendiri.

  • ISP di Malaysia semakin menyokong IPv6 (Unifi, Maxis dah ada)
  • Setiap peranti boleh mempunyai alamat IP awam β€” tak perlu NAT lagi
  • Tiada lagi NAT yang kompleks
  • Ini masa depan internet β€” baik belajar sekarang

Konfigurasi Asas IPv6 pada pfSense

Interfaces β†’ WAN β†’ IPv6 Configuration Type: DHCPv6
  β†’ DHCPv6 Prefix Delegation Size: 56

Interfaces β†’ LAN β†’ IPv6 Configuration Type: Track Interface
  β†’ Track IPv6 Interface: WAN
  β†’ IPv6 Prefix ID: 0

Services β†’ DHCPv6 Server β†’ LAN β†’ Aktifkan
  β†’ Range: ::100 to ::ffff
  β†’ Router Advertisements: Managed

Nota Beginner: IPv6 memberikan alamat IP awam kepada setiap peranti. Ini bermaksud firewall rules anda jadi lebih penting! Pastikan peraturan firewall IPv6 dikonfigurasi dengan betul. Kalau tak pasti, disable IPv6 dulu dan enable kemudian bila dah lebih faham.

Langkah 6: Penyelesaian Masalah Rangkaian

Bila rangkaian tak berfungsi (dan ia akan berlaku β€” percayalah), anda perlu tahu cara troubleshoot. Ini skills yang sangat berharga, bukan sahaja untuk homelab tapi untuk kerjaya IT anda.

Alat Diagnostik dalam pfSense

pfSense dah siap sedia dengan tools troubleshooting:

Diagnostics β†’ Ping
  β†’ Ping peranti dari perspektif firewall

Diagnostics β†’ Traceroute
  β†’ Jejak laluan ke destinasi

Diagnostics β†’ DNS Lookup
  β†’ Uji resolusi DNS β€” domain resolve ke IP yang betul ke?

Diagnostics β†’ Packet Capture
  β†’ Tangkap paket pada mana-mana antara muka
  β†’ Sangat berguna untuk mengesan masalah VLAN

Menggunakan tcpdump

tcpdump ni macam stethoscope untuk network β€” anda boleh β€œdengar” apa yang berlaku pada kabel:

# Tangkap semua trafik pada antara muka
sudo tcpdump -i eth0

# Tangkap trafik DNS sahaja
sudo tcpdump -i eth0 port 53

# Tangkap trafik ke/dari IP tertentu
sudo tcpdump -i eth0 host 10.0.20.20

# Tangkap trafik VLAN
sudo tcpdump -i eth0 -e vlan

# Simpan tangkapan ke fail (untuk analisis Wireshark)
sudo tcpdump -i eth0 -w /tmp/capture.pcap

Nota Beginner: Jangan takut dengan tcpdump. Mulakan dengan command simple macam sudo tcpdump -i eth0 port 53 untuk tengok DNS traffic. Lama-lama anda akan makin selesa.

Ujian Lebar Jalur dengan iperf3

Nak tahu betul-betul berapa laju rangkaian antara dua peranti? iperf3 jawapannya:

# Pada pelayan (penerima)
iperf3 -s

# Pada klien (penghantar)
iperf3 -c 10.0.20.10

# Ujian dengan berbilang aliran
iperf3 -c 10.0.20.10 -P 4

# Ujian UDP
iperf3 -c 10.0.20.10 -u -b 1G

# Contoh output:
# [SUM]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec    sender
# [SUM]   0.00-10.00  sec  1.10 GBytes   940 Mbits/sec    receiver

941 Mbits/sec kat Gigabit link? Itu dah almost perfect. Kalau anda dapat jauh kurang dari tu, mungkin ada bottleneck β€” kabel rosak, switch issue, atau NIC problem.

Checklist Siap Bab Ini

Ringkasan

Anda dah sampai penghujung bab rangkaian lanjutan! Ini banyak content, tapi anda tak perlu master semua sekaligus. Kita dah bincangkan:

  • Konfigurasi mendalam pfSense β€” NAT, DHCP static mapping, DNS
  • Konfigurasi VLAN pada pelbagai switch β€” TP-Link, MikroTik
  • WiFi dengan VLAN β€” satu AP, berbilang rangkaian
  • Pemantauan rangkaian dengan ntopng β€” tahu siapa guna bandwidth
  • Asas IPv6 β€” persediaan untuk masa depan
  • Tools troubleshooting β€” tcpdump, iperf3, dan diagnostik pfSense

Rangkaian yang kukuh dan terurus adalah asas kepada homelab yang berjaya. Kalau bab ini rasa overwhelming, jangan risau. Bookmark bahagian yang anda belum perlukan dan fokus pada apa yang relevan sekarang. Dari pengalaman saya, networking skills ni akan develop secara natural bila anda guna homelab setiap hari. Sabar dan enjoy the process!

Bab 5: Sistem Pengendalian untuk Homelab

Okay, sekarang kita masuk bahagian yang ramai orang overthink β€” pilih OS. Saya faham, pilihan memang banyak dan setiap satu nampak bagus. Tapi jangan risau, saya akan bantu anda fokus pada apa yang benar-benar penting untuk homelab pertama anda. Kita pilih berdasarkan tujuan, bukan ikut hype.

Apa yang anda akan belajar:

  • OS mana yang sesuai untuk server, hypervisor, atau NAS
  • Platform mana yang paling masuk akal untuk tahap beginner
  • Asas pengurusan jauh seperti SSH dan Cockpit

Cara Ikut Bab Ini

  1. Pilih satu platform utama sahaja untuk bermula.
  2. Utamakan OS yang banyak dokumentasi dan komuniti, bukan yang paling β€œadvanced”.
  3. Pastikan akses jauh berfungsi sebelum anda pasang banyak service.

Nota Beginner: Untuk ramai orang, kombinasi paling mudah ialah Ubuntu Server untuk host biasa dan Proxmox VE jika anda mahu belajar virtualisasi dengan lebih serius. Tak perlu guna dua-dua sekali β€” pilih satu dulu, dan kembangkan bila dah selesa.

Laluan Paling Mudah untuk Beginner

  • Pilih satu platform sahaja untuk bermula: Ubuntu Server atau Proxmox VE.
  • Jika objektif anda ialah banyak service, Proxmox sangat sesuai. Jika anda mahu ringkas, pilih Ubuntu Server dahulu.
  • Pastikan SSH berfungsi sebelum anda teruskan ke bab Docker atau virtualisasi.

Langkah 1: Mulakan dengan Gambaran Besar

Pemilihan OS akan menentukan rupa pengalaman homelab anda setiap hari. Bayangkan macam ni β€” OS adalah β€œtapak rumah” homelab anda. Kalau tapak tu tak kukuh atau tak sesuai, semua benda di atas jadi susah.

Jika anda pilih platform yang terlalu sukar, proses belajar jadi perlahan. Jika anda pilih platform yang sesuai, semuanya terasa lebih teratur.

Saya cadangkan anda jangan terlalu lama fikir β€” pilih satu, cuba, dan belajar dari situ.

Perbandingan Sistem Pengendalian Homelab Proxmox VE Hypervisor Sumber Terbuka Kelebihan: βœ… VM + LXC dalam satu βœ… ZFS terbina dalam βœ… Antara muka web βœ… Kluster & HA βœ… Percuma Terbaik untuk: Homelab dengan VM dan kontena campuran ⭐ Disyorkan untuk Homelab Ubuntu Server Pelayan Linux Popular Kelebihan: βœ… Sangat mudah dipelajari βœ… Dokumentasi lengkap βœ… Komuniti besar βœ… LTS 5 tahun βœ… Docker mudah dipasang Terbaik untuk: Docker host, pelayan web, pemula Linux Terbaik untuk VM Guest TrueNAS SCALE OS Storan Khusus Kelebihan: βœ… ZFS enterprise-grade βœ… SMB/NFS/iSCSI βœ… Sokongan Docker βœ… Antara muka web βœ… Replikasi & Snapshot Terbaik untuk: NAS khusus, storan data, sandaran Terbaik untuk NAS
Perbandingan Sistem Pengendalian Homelab

Langkah 2: Linux untuk Server

Linux adalah pilihan utama untuk homelab kerana ia percuma, stabil, dan disokong oleh komuniti yang besar. Kebanyakan server di dunia pun guna Linux, jadi kemahiran ini memang bernilai untuk kerjaya anda.

Ubuntu Server

Ubuntu Server adalah pilihan paling popular untuk pemula β€” dan ada sebab kukuh kenapa.

Kelebihan: - Dokumentasi yang sangat lengkap - Komuniti besar dan aktif - Sokongan jangka panjang (LTS) 5 tahun - Repositori pakej yang luas - Mudah dipelajari

Versi Disyorkan: Ubuntu Server 24.04 LTS

Nota Beginner: LTS bermaksud Long Term Support. Versi ini akan dapat security update selama 5 tahun. Untuk homelab, sentiasa pilih versi LTS supaya anda tak perlu upgrade terlalu kerap.

Pemasangan Asas:

  1. Muat turun ISO dari ubuntu.com
  2. Cipta USB bootable
  3. Boot dan ikuti wizard pemasangan
  4. Pilihan penting semasa pemasangan:
Nama pelayan:    homelab-server
Nama pengguna:   admin
Profil storan:   Gunakan keseluruhan cakera (atau LVM)
Rangkaian:       Konfigurasi IP statik
Pakej tambahan:  OpenSSH Server βœ“

Konfigurasi Selepas Pemasangan:

Selepas install, jalankan arahan ini satu per satu. Tak perlu rush β€” faham apa setiap arahan buat lebih penting daripada speed.

# Kemas kini sistem
sudo apt update && sudo apt upgrade -y

# Pasang pakej asas
sudo apt install -y \
  curl wget git htop net-tools \
  ufw fail2ban unattended-upgrades

# Konfigurasi firewall
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable

# Konfigurasi kemas kini automatik
sudo dpkg-reconfigure -plow unattended-upgrades

Nota Beginner: ufw adalah firewall yang mudah diurus. Arahan di atas bermaksud: β€œBlock semua yang masuk kecuali SSH, benarkan semua yang keluar.” Ini setup keselamatan asas yang sangat penting.

Debian

Debian adalah asas kepada Ubuntu dan banyak distro lain. Kalau Ubuntu macam kereta yang dah siap pasang accessories, Debian macam kereta standard β€” lebih minimal tapi sangat boleh dipercayai.

Kelebihan: - Sangat stabil dan boleh dipercayai - Ringan dan minimal - Kitaran hayat sokongan yang panjang - Pilihan utama untuk server pengeluaran

Kekurangan: - Pakej agak lama (stabil = lama) - Kurang mesra pengguna berbanding Ubuntu

Bila guna Debian: Apabila kestabilan adalah keutamaan tertinggi dan anda tidak memerlukan pakej terkini. Dari pengalaman saya, Debian memang solid untuk service yang anda tak mahu usik selalu.

Alpine Linux

Alpine adalah distro yang sangat ringan β€” bayangkan macam kereta kancil berbanding kereta besar. Kecil tapi boleh buat kerja.

Saiz pemasangan: ~130MB (berbanding Ubuntu ~4GB)
RAM minimum:     256MB

Sesuai untuk: Container LXC, Docker host minimalis, persekitaran terhad sumber.

Nota Beginner: Alpine bukan untuk beginner sebagai OS utama. Tapi ia bagus untuk difahami kerana banyak Docker image guna Alpine sebagai base image.

Langkah 3: Hypervisor

Hypervisor adalah OS khusus yang direka untuk menjalankan mesin maya (VM). Anggaplah hypervisor sebagai β€œpengurus yang bahagikan sumber” β€” dia ambil satu komputer fizikal dan bahagikan kepada beberapa komputer maya.

Ini pilihan terbaik jika anda mahu jalankan pelbagai OS pada satu mesin fizikal.

Proxmox VE

Proxmox Virtual Environment (VE) adalah hypervisor sumber terbuka yang paling popular untuk homelab. Saya cadangkan ini sebagai pilihan utama kalau anda serius nak belajar virtualisasi.

Ciri-ciri Utama: - Berasaskan Debian Linux - Sokongan KVM (mesin maya penuh) dan LXC (container) - Antara muka web yang lengkap - Sokongan ZFS terbina dalam - Sandaran dan pemulihan terbina dalam - Cluster dan live migration - Percuma (langganan pilihan untuk sokongan enterprise)

Keperluan Minimum:

CPU:     64-bit dengan Intel VT-x / AMD-V
RAM:     2GB (8GB+ disyorkan)
Storan:  32GB (SSD disyorkan)
Rangkaian: Sekurang-kurangnya 1 NIC

Pemasangan Proxmox VE:

  1. Muat turun ISO dari proxmox.com
  2. Cipta USB bootable
  3. Boot dan ikuti wizard:
Target Hard Disk:  /dev/sda (SSD disyorkan)
Negara:            Malaysia
Zon Masa:          Asia/Kuala_Lumpur
Kata Laluan:       [kata laluan root]
E-mel:             admin@homelab.local
Nama Hos:          pve.lab.local
Alamat IP:         10.0.20.10/24
Gateway:           10.0.0.1
DNS Server:        10.0.0.2

Selepas Pemasangan:

Akses antara muka web: https://10.0.20.10:8006

# Buang amaran langganan enterprise (pilihan)
# Edit /etc/apt/sources.list.d/pve-enterprise.list
# Komen baris enterprise dan tambah repositori no-subscription

# Kemas kini
apt update && apt dist-upgrade -y

Nota Beginner: Jangan risau tentang amaran β€œno subscription” yang keluar setiap kali login Proxmox. Itu normal untuk pengguna percuma. Proxmox tetap berfungsi sepenuhnya tanpa langganan.

Mencipta VM Pertama:

  1. Muat naik ISO ke storan Proxmox
  2. Klik Create VM
  3. Konfigurasi:
    • Nama: ubuntu-docker
    • ISO: ubuntu-24.04-server.iso
    • CPU: 4 cores
    • RAM: 8192 MB
    • Storan: 50GB (VirtIO)
    • Rangkaian: vmbr0 (VirtIO)

Mencipta Container LXC:

  1. Muat turun template container (CT Templates)
  2. Klik Create CT
  3. Konfigurasi:
    • Nama: pihole
    • Template: debian-12-standard
    • CPU: 1 core
    • RAM: 512 MB
    • Storan: 8GB

VMware ESXi (vSphere)

ESXi adalah hypervisor enterprise yang masih digunakan dalam banyak homelab.

Kelebihan: - Standard industri - Prestasi yang sangat baik - Ekosistem alat pengurusan yang matang

Kekurangan: - Lesen percuma terhad (tidak lagi ditawarkan oleh Broadcom) - Perubahan dasar lesen selepas pengambilalihan Broadcom - Sokongan perkakasan lebih terhad

Status Semasa: Selepas pengambilalihan oleh Broadcom, ramai pengguna homelab beralih ke Proxmox VE. Tip dari saya β€” kalau anda baru bermula, terus je guna Proxmox. Jimat masa dan tenaga.

XCP-ng

XCP-ng adalah alternatif sumber terbuka kepada Citrix Hypervisor:

  • Berasaskan Xen hypervisor
  • Sepenuhnya sumber terbuka
  • Antara muka pengurusan: Xen Orchestra
  • Alternatif yang baik jika anda mahukan hypervisor enterprise sumber terbuka

Langkah 4: Sistem Pengendalian NAS

Kalau anda nak bina storan rangkaian (NAS) untuk simpan fail, media, atau backup β€” ada OS khusus untuk itu.

TrueNAS

TrueNAS (dahulunya FreeNAS) adalah OS khusus untuk storan rangkaian.

TrueNAS CORE (FreeBSD): - Matang dan stabil - ZFS sebagai sistem fail utama - Plugin dan jail untuk perkhidmatan tambahan

TrueNAS SCALE (Linux): - Berasaskan Debian Linux - Sokongan Docker/Kubernetes - ZFS + sokongan perkakasan Linux yang lebih luas - Disyorkan untuk homelab baru

Nota Beginner: Kalau anda baru nak bermula dengan NAS, pilih TrueNAS SCALE. Ia berasaskan Linux jadi lebih banyak perkakasan yang disokong, dan anda boleh jalankan Docker terus di atasnya.

Keperluan Minimum:

CPU:    64-bit
RAM:    8GB (16GB+ disyorkan untuk ZFS)
Storan: 16GB (boot) + cakera data berasingan
NIC:    Gigabit atau lebih

OpenMediaVault (OMV)

OMV adalah NAS berasaskan Debian yang lebih ringan. Sesuai kalau anda ada perkakasan lama atau Raspberry Pi yang nak dijadikan NAS.

  • Sesuai untuk perkakasan terhad (Raspberry Pi)
  • Antara muka web yang mudah
  • Sokongan plugin (Docker, dll.)
  • Kurang kompleks berbanding TrueNAS

Langkah 5: Pengurusan Jarak Jauh

Sekarang bahagian yang sangat penting β€” macam mana anda nak kawal server anda tanpa duduk depan dia? Jawapannya: pengurusan jarak jauh.

SSH (Secure Shell)

SSH adalah cara utama untuk menguruskan server Linux dari jauh. Anda akan guna ini setiap hari, jadi pastikan ia berfungsi dengan baik.

# Sambung ke server
ssh admin@10.0.20.10

# Konfigurasi pengesahan kunci SSH (lebih selamat)
ssh-keygen -t ed25519 -C "homelab-key"
ssh-copy-id admin@10.0.20.10

# Nyahaktifkan pengesahan kata laluan
# Edit /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes

Nota Beginner: SSH key adalah macam kunci rumah digital. Lebih selamat daripada password biasa sebab tak boleh diteka secara brute force. Saya cadangkan anda setup SSH key dari awal.

Fail ~/.ssh/config untuk kemudahan:

Fail ni macam phonebook untuk SSH. Daripada taip IP panjang setiap kali, anda boleh guna nama pendek.

Host proxmox
    HostName 10.0.20.10
    User root
    Port 22

Host docker-host
    HostName 10.0.20.20
    User admin
    Port 22

Host nas
    HostName 10.0.0.10
    User admin
    Port 22

Kini anda boleh sambung dengan: ssh proxmox β€” senang kan?

Cockpit

Cockpit adalah antara muka web untuk pengurusan server Linux. Kalau anda lebih selesa dengan GUI daripada terminal, ini pilihan yang bagus.

# Pemasangan pada Ubuntu/Debian
sudo apt install cockpit -y
sudo systemctl enable --now cockpit.socket

Akses melalui: https://pelayan-anda:9090

Ciri-ciri: - Pemantauan sumber (CPU, RAM, storan) - Pengurusan perkhidmatan - Terminal web - Pengurusan storan - Kemas kini sistem

Checklist Siap Bab Ini

Ringkasan

Dalam bab ini, kita telah belajar tentang:

  • Distro Linux popular untuk server (Ubuntu, Debian, Alpine)
  • Hypervisor (Proxmox VE, ESXi, XCP-ng) dan cara memilihnya
  • Sistem NAS (TrueNAS, OpenMediaVault)
  • Pengurusan jarak jauh (SSH, Cockpit)

Proxmox VE dengan Ubuntu/Debian sebagai VM adalah kombinasi yang paling popular dan disyorkan untuk kebanyakan homelab.

Jangan risau kalau anda rasa banyak sangat pilihan. Yang penting, pilih satu dan mula. Anda boleh tukar kemudian bila dah lebih faham apa yang anda perlukan. Seterusnya, kita akan mendalami dunia virtualisasi β€” satu langkah pada satu masa!

Bab 6: Virtualisasi

Sekarang kita masuk topik yang ramai orang rasa β€œadvanced” tapi sebenarnya sangat praktikal β€” virtualisasi. Bayangkan anda boleh jalankan beberapa komputer di dalam satu komputer fizikal. Tak perlu beli banyak mesin, tak perlu banyak kabel. Satu kotak, banyak OS. Menarik kan?

Apa yang anda akan belajar:

  • Beza antara VM, LXC, dan Hypervisor
  • Aliran kerja asas dalam Proxmox VE
  • Cara cipta persekitaran virtualisasi yang kemas untuk service pertama anda

Cara Ikut Bab Ini

  1. Faham konsep dulu sebelum klik terlalu banyak setting dalam Proxmox.
  2. Cuba bina satu VM mudah dan satu LXC mudah sebagai latihan.
  3. Buat snapshot sebelum sebarang eksperimen besar.

Nota Beginner: Anggap VM seperti satu komputer penuh di dalam komputer anda β€” ada OS sendiri, RAM sendiri, semuanya. Ia lebih berat, tetapi lebih fleksibel. LXC pula lebih ringan dan laju untuk banyak service Linux. Normal je kalau confuse antara dua ni pada awalnya!

Laluan Paling Mudah untuk Beginner

  • Bina satu Proxmox node sahaja dahulu.
  • Cipta satu VM Ubuntu Server untuk latihan dan satu LXC ringan seperti Pi-hole.
  • Biasakan diri dengan snapshot, restore, dan console access sebelum tambah banyak instance.

Langkah 1: Mulakan dengan Gambaran Besar

Virtualisasi membolehkan satu mesin fizikal menjalankan beberapa sistem atau persekitaran kerja pada masa yang sama.

Untuk beginner, ini sangat berguna kerana anda boleh belajar banyak benda tanpa perlu membeli banyak komputer. Satu PC sahaja dah cukup untuk jalankan server, NAS, Docker host, dan macam-macam lagi.

Dalam dunia kerja sebenar pula, kemahiran ini memang sangat bernilai. Hampir semua syarikat IT guna virtualisasi dalam infrastruktur mereka.

Seni Bina Virtualisasi Homelab Perkakasan Fizikal CPU | RAM | Storan | NIC Hypervisor (Lapisan Virtualisasi) Proxmox VE | VMware ESXi | KVM VM 1 Ubuntu Server Docker Host 4 vCPU | 8GB RAM Kontena: Nginx, Nextcloud, Gitea Portainer, Grafana VM 2 Windows Server Active Directory 2 vCPU | 4GB RAM Perkhidmatan: DNS, DHCP, GPO File Share VM 3 Debian Keselamatan 2 vCPU | 4GB RAM Perkhidmatan: Pi-hole, WireGuard Fail2ban, CrowdSec Kontena LXC LXC 1: Home Assistant 1 vCPU | 1GB RAM LXC 2: Plex Media 2 vCPU | 2GB RAM LXC 3: Jellyfin 2 vCPU | 2GB RAM + lebih banyak kontena...
Seni Bina Virtualisasi Homelab

Langkah 2: Faham Konsep Asas Virtualisasi

Apa Itu Virtualisasi?

Virtualisasi mencipta versi maya bagi sumber pengkomputeran fizikal β€” termasuk server, storan, rangkaian, dan OS. Satu mesin fizikal (host) boleh menjalankan banyak mesin maya (guest).

Analogi mudah: Bayangkan satu bangunan pejabat (mesin fizikal) yang dibahagikan kepada banyak bilik (VM). Setiap bilik ada penghuni sendiri, pintu sendiri, tapi semua berkongsi bangunan yang sama.

Jenis Virtualisasi

1. Virtualisasi Penuh (Full Virtualization) - Mesin maya mempunyai perkakasan maya yang lengkap - Boleh menjalankan mana-mana OS tanpa pengubahsuaian - Contoh: KVM, VMware ESXi - Penggunaan: VM Windows, VM Linux penuh

2. Paravirtualization - OS guest diubah suai untuk berkomunikasi dengan hypervisor - Prestasi lebih baik berbanding virtualisasi penuh - Contoh: Xen (PV mode) - Penggunaan: Server Linux berprestasi tinggi

3. Virtualisasi Container (OS-level) - Berkongsi kernel host - Sangat ringan dan pantas - Contoh: LXC, Docker - Penggunaan: Microservices, aplikasi tunggal

Nota Beginner: Untuk homelab, anda paling kerap jumpa jenis pertama (Full Virtualization melalui KVM) dan jenis ketiga (container melalui LXC/Docker). Jadi fokus pada dua ni dulu.

Hypervisor Jenis 1 vs Jenis 2

Ciri Jenis 1 (Bare Metal) Jenis 2 (Hosted)
Berjalan di atas Perkakasan terus Sistem pengendalian host
Prestasi Lebih baik Sedikit kurang
Contoh Proxmox, ESXi VirtualBox, VMware Workstation
Penggunaan Server, homelab Desktop, pembangunan

Untuk homelab, sentiasa gunakan Hypervisor Jenis 1. Ia dipasang terus atas perkakasan, jadi prestasi lebih baik dan overhead lebih rendah.

Langkah 3: Proxmox VE β€” Panduan Mendalam

Okay, sekarang bahagian yang paling hands-on. Saya akan tunjukkan langkah demi langkah macam mana nak guna Proxmox VE.

Antara Muka Web Proxmox

Setelah memasang Proxmox, antara muka web boleh diakses di https://IP-pelayan:8006. Antara muka ini menyediakan:

  • Datacenter β€” Pandangan keseluruhan cluster
  • Node β€” Server fizikal individu
  • VM/CT β€” Mesin maya dan container
  • Storage β€” Storan yang dikonfigurasi
  • Network β€” Konfigurasi rangkaian

Nota Beginner: Jangan terasa overwhelmed dengan banyaknya menu dan pilihan. Anda hanya perlu fokus pada bahagian VM/CT dan Storage untuk bermula. Yang lain tu untuk kemudian.

Menyediakan Storan di Proxmox

Storan Tempatan:

local          β†’ /var/lib/vz          (ISO, template, backup)
local-lvm      β†’ LVM thin pool        (VM disks, CT volumes)

Menambah storan NFS (dari NAS):

  1. Datacenter β†’ Storage β†’ Add β†’ NFS
  2. Konfigurasi:
    • ID: nas-backup
    • Server: 10.0.0.10
    • Export: /mnt/pool/backup
    • Content: VZDump backup file

Menambah storan ZFS:

Jika server mempunyai cakera tambahan:

# Cipta ZFS pool
zpool create -f datapool mirror /dev/sdb /dev/sdc

# Tambah di antara muka web:
# Datacenter β†’ Storage β†’ Add β†’ ZFS
# Pool: datapool
# Content: Disk image, Container

Mencipta dan Mengurus Mesin Maya

Ini bahagian yang paling best β€” cipta VM pertama anda!

Langkah Mencipta VM:

  1. Klik Create VM di bahagian atas kanan
  2. Tab General:
    • Node: pve
    • VM ID: 100
    • Name: ubuntu-docker
  3. Tab OS:
    • ISO Image: ubuntu-24.04-server.iso
    • Type: Linux, Version: 6.x - 2.6 Kernel
  4. Tab System:
    • BIOS: OVMF (UEFI)
    • Machine: q35
    • SCSI Controller: VirtIO SCSI single
  5. Tab Disks:
    • Bus: VirtIO Block
    • Size: 50GB
    • Discard: βœ“ (untuk SSD)
  6. Tab CPU:
    • Cores: 4
    • Type: host (prestasi terbaik)
  7. Tab Memory:
    • Memory: 8192 MB
    • Ballooning: βœ“
  8. Tab Network:
    • Bridge: vmbr0
    • Model: VirtIO

Nota Beginner: Kalau anda tak pasti nak letak berapa core atau RAM, mulakan dengan 2 core dan 4GB RAM dulu. Anda boleh tambah kemudian tanpa perlu buat VM baru. Satu langkah pada satu masa!

Amalan Terbaik VM:

Tip Prestasi:
βœ“ Gunakan VirtIO untuk cakera dan rangkaian
βœ“ CPU Type: host (bukan default kvm64)
βœ“ Aktifkan NUMA untuk server berbilang soket
βœ“ Gunakan SSD untuk storan VM
βœ“ Aktifkan ballooning untuk pengurusan RAM dinamik

Container LXC di Proxmox

LXC adalah alternatif yang lebih ringan kepada VM penuh. Ia berkongsi kernel host dan menggunakan sumber yang jauh lebih sedikit.

Tip dari saya β€” kalau service tu hanya perlu Linux dan tak perlu kernel khas, guna LXC. Ia jauh lebih cepat dan jimat resource.

Perbandingan VM vs LXC:

Ciri VM (KVM) Container (LXC)
Pengasingan Penuh Tahap OS
Overhead 500MB+ RAM 32MB+ RAM
Masa Boot 30-60 saat 1-3 saat
Kernel Sendiri Kongsi dengan host
OS Mana-mana Linux sahaja
Kes guna Windows, kernel khusus Perkhidmatan Linux

Mencipta Container LXC:

  1. Muat turun template: Datacenter β†’ Storage β†’ CT Templates β†’ Templates
  2. Klik Create CT
  3. Konfigurasi:
CT ID:        200
Hostname:     pihole
Password:     [kata laluan]
Template:     debian-12-standard
Root Disk:    8GB
CPU Cores:    1
Memory:       512MB
Network:      vmbr0, DHCP atau statik
DNS Domain:   lab.local
DNS Server:   10.0.0.1

Bila Guna VM vs LXC:

  • Guna VM untuk: Windows, Docker host (nested), kernel khusus, pengasingan penuh
  • Guna LXC untuk: Pi-hole, web server, pangkalan data, perkhidmatan Linux ringkas

Nota Beginner: Kalau anda tak pasti nak guna VM atau LXC, tanya diri sendiri: β€œService ni perlu Windows atau kernel khas?” Kalau tidak, LXC biasanya pilihan yang lebih baik.

Template dan Clone

Template membolehkan anda cipta VM baru dalam beberapa saat sahaja, tanpa perlu install dari awal setiap kali. Dari pengalaman saya, ini salah satu ciri yang paling jimat masa.

Mencipta Template VM:

  1. Pasang dan konfigurasi VM seperti yang dikehendaki

  2. Pasang cloud-init agent (pilihan):

    sudo apt install cloud-init qemu-guest-agent
  3. Bersihkan:

    sudo cloud-init clean
    sudo truncate -s 0 /etc/machine-id
  4. Shutdown VM

  5. Klik kanan β†’ Convert to Template

Clone dari Template:

  1. Klik kanan pada template β†’ Clone
  2. Pilih Full Clone atau Linked Clone
  3. Masukkan nama baru
  4. VM baru sedia dalam beberapa saat

Sandaran dan Pemulihan

Backup adalah perkara yang ramai orang abaikan sehingga terlambat. Saya cadangkan anda setup backup automatik dari awal. Tak susah pun, dan anda akan bersyukur kemudian.

Konfigurasi Sandaran Automatik:

  1. Datacenter β†’ Backup β†’ Add
  2. Konfigurasi:
Storage:    nas-backup
Schedule:   Harian pada 02:00
Mode:       Snapshot
Compress:   ZSTD
Retention:  Simpan 7 sandaran
Mail:       admin@homelab.local

Pemulihan:

  1. Pilih sandaran dari storan
  2. Klik Restore
  3. Pilih VM ID dan storan sasaran
  4. Mulakan VM

Pengurusan Sumber

Memantau Penggunaan:

Proxmox menyediakan graf masa nyata untuk: - Penggunaan CPU - Penggunaan memori - I/O rangkaian - I/O cakera

Resource Pool:

Kumpulkan VM/CT ke dalam Resource Pool untuk pengurusan yang lebih baik:

  1. Datacenter β†’ Permissions β†’ Pools β†’ Create
  2. Nama: production, development, testing
  3. Tetapkan VM/CT ke pool

Nota Beginner: Resource Pool hanya untuk organisasi β€” ia tak hadkan sumber secara automatik. Tapi ia sangat membantu bila anda dah ada banyak VM dan container, supaya tak serabut.

Langkah 4: Tips dan Amalan Terbaik Virtualisasi

1. Jangan Over-Commit

Salah satu kesilapan biasa ialah bagi terlalu banyak resource kepada VM sehingga host sendiri jadi lambat.

Panduan over-commit:
CPU:    Boleh over-commit sehingga 4:1 (4 vCPU per teras fizikal)
RAM:    Elakkan over-commit (atau gunakan ballooning dengan berhati-hati)
Storan: Thin provisioning OK, tetapi pantau penggunaan sebenar

2. Snapshot Sebelum Perubahan

Sentiasa ambil snapshot sebelum membuat perubahan besar. Ini macam β€œsave game” β€” kalau sesuatu tak kena, anda boleh revert.

# Melalui CLI
qm snapshot 100 before-upgrade --description "Sebelum naik taraf"

# Melalui antara muka web
VM β†’ Snapshots β†’ Take Snapshot

3. Automasi dengan Cloud-Init

Cloud-init membolehkan konfigurasi automatik VM baharu. Sangat berguna kalau anda selalu buat VM baru.

# cloud-init config
hostname: web-server
manage_etc_hosts: true
users:
  - name: admin
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh_authorized_keys:
      - ssh-ed25519 AAAA...kunci-anda
packages:
  - docker.io
  - docker-compose
runcmd:
  - systemctl enable docker
  - systemctl start docker

4. Gunakan Tags untuk Organisasi

Tetapkan tag kepada VM/CT untuk memudahkan pengurusan: - production, development, testing - linux, windows - docker, database, web

Tip dari saya β€” buat convention tag dari awal. Nanti bila dah ada 20+ VM/CT, anda akan sangat bersyukur.

Checklist Siap Bab Ini

Ringkasan

Dalam bab ini, kita telah belajar tentang:

  • Konsep dan jenis virtualisasi
  • Panduan mendalam Proxmox VE
  • Cara mencipta dan mengurus VM dan container LXC
  • Template, clone, dan sandaran
  • Amalan terbaik virtualisasi

Virtualisasi memberi anda fleksibiliti yang luar biasa. Dengan satu mesin fizikal, anda boleh bina keseluruhan lab IT yang lengkap. Jangan risau kalau bab ni rasa banyak β€” anda tak perlu kuasai semuanya sekaligus. Buat satu VM, buat satu LXC, dan belajar dari situ.

Seterusnya, kita akan meneroka teknologi container dengan Docker β€” satu lagi kemahiran yang sangat berharga untuk kerjaya IT anda!

Bab 6: Virtualisasi Lanjutan dan Pengoptimuman

Seni Bina Virtualisasi Lanjutan Gabungan kluster Proxmox, GPU passthrough, storan Ceph, dan Infrastructure as Code Rangkaian kluster terpencil, sebaiknya 10GbE untuk migrasi langsung dan Ceph pve1 VM berat, Docker host, GPU passthrough Node utama untuk workload intensif pve2 VM aplikasi, LXC utiliti, node failover Pastikan CPU family serasi untuk migration pve3 Quorum, backup compute, node HA Sesuai untuk maintenance dan rolling update Ceph Shared Storage OSD pada setiap node, replikasi automatik, self-healing, dan migrasi VM tanpa NFS luaran GPU Passthrough IOMMU + VFIO Untuk AI, transcoding, Frigate Terraform + Packer Provision template dan VM secara konsisten HA + Live Migration VM dipindahkan ketika maintenance Restart automatik jika node gagal
Seni Bina Virtualisasi Lanjutan

Tahniah sebab sampai ke bab lanjutan! Kalau anda dah selesa dengan Proxmox asas, VM, dan LXC β€” bab ni akan bawa anda ke tahap seterusnya. Tapi jangan risau, saya akan terangkan satu per satu dan anda boleh pilih topik yang relevan sahaja.

Apa yang anda akan belajar:

  • Konsep GPU Passthrough, cluster, Ceph, Terraform, dan tuning prestasi
  • Bila ciri-ciri ini berguna dan bila ia hanya menambah kompleksiti
  • Cara merancang upgrade virtualisasi tanpa gopoh

Cara Ikut Bab Ini

  1. Pastikan setup single node anda stabil sebelum cuba ciri lanjutan.
  2. Pilih satu topik lanjutan yang benar-benar ada keperluan, contohnya GPU Passthrough.
  3. Uji perubahan dalam skala kecil sebelum jadikan ia sebahagian daripada homelab utama.

Nota Beginner: Anda tidak rugi apa-apa jika belum sentuh cluster atau Ceph. Banyak homelab yang sangat matang masih berjalan dengan satu node yang diurus dengan baik. Bab ini adalah menu upgrade, bukan checklist wajib.

Laluan Paling Mudah untuk Beginner

  • Anggap bab ini sebagai menu upgrade, bukan checklist wajib.
  • Pilih satu topik sahaja bila anda benar-benar perlukan, contohnya GPU Passthrough untuk media transcoding.
  • Elakkan cluster dan Ceph jika anda belum ada sekurang-kurangnya dua atau tiga node yang stabil.

Langkah 1: GPU Passthrough

GPU Passthrough membolehkan VM menggunakan kad grafik fizikal secara langsung. Bayangkan macam ni β€” anda β€œserahkan” GPU fizikal kepada satu VM, dan VM tu boleh guna GPU tu macam ia dipasang terus.

Ini berguna untuk: - Transcoding media (Plex/Jellyfin) dalam VM - Menjalankan model AI/ML (Ollama) dalam VM - VM Windows dengan permainan atau aplikasi GPU - VM dengan pengawasan video (Frigate NVR)

Konfigurasi GPU Passthrough pada Proxmox

Proses ni ada beberapa langkah, tapi kalau ikut satu per satu, insyaAllah tak susah.

Langkah 1: Aktifkan IOMMU dalam BIOS

Intel: VT-d = Enabled
AMD:   IOMMU = Enabled / AMD-Vi = Enabled

Nota Beginner: IOMMU adalah ciri dalam CPU yang membolehkan peranti fizikal (seperti GPU) digunakan terus oleh VM. Tanpa ini, GPU Passthrough tak boleh berfungsi. Setting ni ada dalam BIOS/UEFI komputer anda.

Langkah 2: Konfigurasi GRUB

# Edit /etc/default/grub
# Untuk Intel:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

# Untuk AMD:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

# Kemas kini GRUB
update-grub

Langkah 3: Muat modul VFIO

# Edit /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

# Kenal pasti ID PCI GPU
lspci -nn | grep -i vga
# Contoh output:
# 01:00.0 VGA: NVIDIA Corporation [10de:2504]
# 01:00.1 Audio: NVIDIA Corporation [10de:228e]

# Edit /etc/modprobe.d/vfio.conf
options vfio-pci ids=10de:2504,10de:228e

# Kemas kini initramfs
update-initramfs -u -k all

# Reboot
reboot

Langkah 4: Tetapkan GPU kepada VM

  1. Di antara muka web Proxmox: VM β†’ Hardware β†’ Add β†’ PCI Device
  2. Pilih GPU dari senarai
  3. Tandakan: All Functions, ROM-Bar, PCI-Express
  4. Machine Type: q35
  5. BIOS: OVMF (UEFI)

Intel iGPU Passthrough untuk Transcoding

Intel Quick Sync sangat berguna untuk transcoding media. Dari pengalaman saya, ini salah satu GPU Passthrough yang paling mudah dan berbaloi untuk homelab.

# Periksa kumpulan IOMMU untuk iGPU
find /sys/kernel/iommu_groups/ -type l | sort -V | \
  grep "00:02.0"

# Pada Proxmox, tambah PCI Device:
# Device: 0000:00:02.0 (Intel UHD Graphics)
# All Functions: Ya
# Primary GPU: Tidak (melainkan untuk VM desktop)

Alternatif: Intel GVT-g (Split iGPU)

GVT-g membolehkan satu iGPU Intel dikongsi antara host dan berbilang VM. Macam satu GPU tapi boleh β€œdipecah” kepada beberapa bahagian.

# Periksa sokongan GVT-g
ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/

# Cipta vGPU
echo "uuid-yang-dijana" > \
  /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_4/create

Nota Beginner: Kalau anda hanya nak transcoding untuk Jellyfin atau Plex, Intel iGPU Passthrough sudah lebih dari cukup. Tak perlu GPU NVIDIA yang mahal untuk tujuan ini.

Langkah 2: Cluster Proxmox

Mengapa Cluster?

Cluster Proxmox menggabungkan berbilang node untuk: - Live Migration β€” Pindahkan VM tanpa downtime - High Availability (HA) β€” VM dimulakan semula pada node lain jika satu gagal - Pengurusan berpusat β€” Urus semua node dari satu antara muka

Tip dari saya β€” cluster best bila anda dah ada 3 node. Dengan 2 node pun boleh, tapi quorum jadi isu. Jangan rush ke sini kalau belum perlu.

Menyediakan Cluster

Keperluan: - Minimum 3 node untuk quorum yang betul - Rangkaian khusus untuk cluster (disyorkan) - Storan dikongsi untuk live migration (NFS, Ceph, iSCSI)

Langkah 1: Cipta Cluster pada Node 1

# Pada node pertama (pve1)
pvecm create homelab-cluster

# Periksa status
pvecm status

Langkah 2: Tambah Node

# Pada node kedua (pve2)
pvecm add 10.0.20.10

# Pada node ketiga (pve3)
pvecm add 10.0.20.10

Langkah 3: Konfigurasi Storan Dikongsi

# Tambah storan NFS yang boleh diakses oleh semua node
# Datacenter β†’ Storage β†’ Add β†’ NFS
# Server: 10.0.0.10 (NAS)
# Export: /mnt/pool/proxmox
# Content: Disk image, Container, ISO image, VZDump

Live Migration

Setelah cluster dikonfigurasi dengan storan dikongsi, anda boleh pindahkan VM antara node tanpa downtime. Ini macam β€œmagic” β€” VM terus berjalan semasa dipindahkan!

  1. Klik kanan pada VM β†’ Migrate
  2. Pilih node sasaran
  3. Pilih β€œOnline” (live migration)
  4. VM dipindahkan tanpa downtime!

Keperluan live migration: - CPU yang serasi antara node (atau gunakan cpu type: kvm64) - Storan dikongsi (NFS, Ceph, iSCSI) - Rangkaian antara node yang pantas (disyorkan 10GbE)

High Availability (HA)

# Tambah VM ke kumpulan HA
# Datacenter β†’ HA β†’ Resources β†’ Add
# VM/CT ID: 100
# Group: (pilih kumpulan)
# State: started
# Max Restart: 3
# Max Relocate: 3

Jika node yang menjalankan VM gagal, Proxmox HA akan: 1. Mengesan kegagalan node 2. Memulakan semula VM pada node lain yang tersedia 3. Menghantar pemberitahuan (jika dikonfigurasi)

Nota Beginner: HA memerlukan minimum 3 node untuk berfungsi dengan betul. Kalau anda hanya ada 1-2 node, fokus pada backup yang baik sahaja β€” itu sudah cukup selamat untuk homelab.

Langkah 3: Storan Ceph pada Proxmox

Apa Itu Ceph?

Ceph adalah sistem storan teragih. Bayangkan macam ni β€” daripada simpan data pada satu hard disk, Ceph β€œsebarkan” data merentasi banyak disk pada banyak node. Kalau satu disk rosak, data anda masih selamat.

Ceph menyediakan: - Storan yang dikongsi antara semua node cluster - Replikasi data automatik - Keupayaan self-healing (membaiki diri jika cakera gagal) - Tiada titik kegagalan tunggal

Menyediakan Ceph

Keperluan minimum: - 3 node Proxmox - Sekurang-kurangnya 1 OSD (cakera) per node - Rangkaian khusus untuk trafik Ceph (disyorkan 10GbE)

# Langkah 1: Pasang Ceph pada semua node
# Melalui antara muka web: Node β†’ Ceph β†’ Install

# Langkah 2: Cipta Monitor pada setiap node
# Node β†’ Ceph β†’ Monitor β†’ Create

# Langkah 3: Cipta OSD pada setiap node
# Node β†’ Ceph β†’ OSD β†’ Create OSD
# Disk: /dev/sdb (cakera data)
# DB Disk: /dev/nvme0n1 (SSD untuk metadata - pilihan)

# Langkah 4: Cipta Pool
# Node β†’ Ceph β†’ Pools β†’ Create
# Name: vm-pool
# Size: 3 (3 salinan)
# Min Size: 2

Penggunaan Ceph dalam Proxmox:

Setelah pool Ceph dicipta, ia boleh digunakan sebagai storan untuk: - Cakera VM (sangat disyorkan) - Volume container LXC - Imej ISO dan template

Kelebihan utama: VM yang menggunakan storan Ceph boleh dipindahkan antara node tanpa memerlukan storan NFS luaran. Semua data dah β€œada di mana-mana” secara automatik.

Nota Beginner: Ceph memerlukan perkakasan yang agak serius dan minimum 3 node. Untuk homelab dengan 1 node, guna storan tempatan (local-lvm) sahaja sudah memadai. Jangan rasa perlu setup Ceph kalau tak perlu.

Langkah 4: Terraform untuk Proxmox

Infrastructure as Code (IaC)

Terraform membolehkan anda mendefinisikan infrastruktur VM sebagai kod. Daripada klik satu-satu dalam GUI, anda tulis config file dan Terraform akan buat semuanya untuk anda.

Saya cadangkan topik ini kalau anda nak belajar DevOps atau dah mula ada banyak VM yang perlu diurus.

# Pasang Terraform
wget -O- https://apt.releases.hashicorp.com/gpg | \
  sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
  https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
  sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform

Contoh Konfigurasi Terraform

# main.tf
terraform {
  required_providers {
    proxmox = {
      source  = "telmate/proxmox"
      version = ">=2.9.0"
    }
  }
}

provider "proxmox" {
  pm_api_url      = "https://10.0.20.10:8006/api2/json"
  pm_user         = "terraform@pam"
  pm_password     = var.proxmox_password
  pm_tls_insecure = true
}

# VM Docker Host
resource "proxmox_vm_qemu" "docker_host" {
  name        = "docker-host-01"
  target_node = "pve"
  clone       = "ubuntu-template"

  cores   = 4
  memory  = 8192
  sockets = 1

  disk {
    size    = "50G"
    type    = "virtio"
    storage = "local-lvm"
  }

  network {
    model  = "virtio"
    bridge = "vmbr0"
    tag    = 20
  }

  os_type   = "cloud-init"
  ipconfig0 = "ip=10.0.20.20/24,gw=10.0.20.1"
  nameserver = "10.0.0.2"

  lifecycle {
    ignore_changes = [disk]
  }
}

# VM Pi-hole
resource "proxmox_vm_qemu" "pihole" {
  name        = "pihole-01"
  target_node = "pve"
  clone       = "debian-template"

  cores   = 1
  memory  = 1024
  sockets = 1

  disk {
    size    = "10G"
    type    = "virtio"
    storage = "local-lvm"
  }

  network {
    model  = "virtio"
    bridge = "vmbr0"
  }

  os_type   = "cloud-init"
  ipconfig0 = "ip=10.0.0.2/24,gw=10.0.0.1"
}
# Inisialisasi Terraform
terraform init

# Rancang perubahan
terraform plan

# Laksanakan
terraform apply

# Musnahkan semua sumber
terraform destroy

Kelebihan Terraform untuk Homelab

  1. Boleh diulang β€” Cipta semula keseluruhan infrastruktur dari kod
  2. Versi β€” Simpan dalam Git, jejak perubahan
  3. Dokumentasi β€” Kod IS dokumentasi infrastruktur anda
  4. Pembelajaran β€” Kemahiran yang sangat bernilai dalam industri

Nota Beginner: Terraform nampak complicated pada awalnya, tapi ia sebenarnya sangat berguna. Bayangkan anda boleh β€œdestroy” dan β€œrecreate” keseluruhan homelab anda dengan satu arahan. Untuk belajar, mulakan dengan satu VM sahaja dulu.

Langkah 5: Packer untuk Membina Template

Packer membina template VM secara automatik. Daripada install OS secara manual setiap kali nak buat template baru, Packer boleh buat semua tu untuk anda.

{
  "builders": [
    {
      "type": "proxmox-iso",
      "proxmox_url": "https://10.0.20.10:8006/api2/json",
      "username": "packer@pam",
      "password": "{{user `proxmox_password`}}",
      "node": "pve",
      "iso_file": "local:iso/ubuntu-24.04-server.iso",
      "vm_name": "ubuntu-template",
      "cores": 2,
      "memory": 2048,
      "os": "l26",
      "network_adapters": [
        {
          "bridge": "vmbr0",
          "model": "virtio"
        }
      ],
      "disks": [
        {
          "type": "virtio",
          "disk_size": "20G",
          "storage_pool": "local-lvm"
        }
      ],
      "ssh_username": "admin",
      "ssh_password": "packer",
      "ssh_timeout": "20m",
      "template_name": "ubuntu-2404-template",
      "template_description": "Ubuntu 24.04 Template"
    }
  ],
  "provisioners": [
    {
      "type": "shell",
      "inline": [
        "sudo apt update && sudo apt upgrade -y",
        "sudo apt install -y qemu-guest-agent cloud-init",
        "sudo cloud-init clean",
        "sudo truncate -s 0 /etc/machine-id"
      ]
    }
  ]
}

Langkah 6: Pengoptimuman Prestasi VM

Bahagian ni untuk anda yang nak β€œsqueeze” prestasi maksimum dari VM. Tak wajib untuk bermula, tapi bagus untuk difahami.

CPU Pinning

Tetapkan teras CPU fizikal tertentu kepada VM untuk prestasi yang konsisten. Macam β€œreserve” lane tertentu di highway untuk satu kereta sahaja.

# Di Proxmox, edit konfigurasi VM
# /etc/pve/qemu-server/100.conf
cpu: host
cores: 4
affinity: 0-3  # Pin ke teras 0,1,2,3

Huge Pages

Huge Pages meningkatkan prestasi RAM untuk VM besar. Secara default, OS urus memori dalam β€œpage” bersaiz 4KB. Huge Pages guna page bersaiz 2MB atau 1GB β€” kurang overhead untuk VM yang guna banyak RAM.

# Konfigurasi huge pages pada host
echo 4096 > /proc/sys/vm/nr_hugepages

# Atau secara kekal di /etc/sysctl.conf
vm.nr_hugepages = 4096

# Aktifkan dalam VM Proxmox
# Hardware β†’ Memory β†’ Enable Hugepages

VirtIO dan Prestasi I/O

Pemacu I/O terbaik untuk VM:
  Cakera:     VirtIO Block atau VirtIO SCSI
  Rangkaian:  VirtIO (paravirtualized)
  Display:    VirtIO GPU (untuk VM Linux)

Tetapan tambahan:
  Cache:      writeback (prestasi) atau none (keselamatan)
  IO Thread:  Aktifkan untuk I/O selari
  Discard:    Aktifkan untuk SSD (TRIM support)

Memori Ballooning

Ballooning membolehkan Proxmox menuntut semula RAM yang tidak digunakan oleh VM. Anggaplah macam β€œpinjam balik” RAM yang VM tak guna dan bagi kepada VM lain yang perlu.

Kelebihan:
  - Over-commit RAM dengan selamat
  - VM menggunakan hanya apa yang diperlukan
  - Lebih banyak VM pada RAM yang sama

Kekurangan:
  - Sedikit overhead prestasi
  - Kadangkala VM lambat apabila RAM dituntut

Cadangan:
  - Aktifkan untuk VM pembangunan/ujian
  - Nyahaktifkan untuk VM pengeluaran kritikal

Langkah 7: Pemantauan Prestasi Virtualisasi

Metrik Penting

Kalau anda nak tahu sama ada homelab anda berjalan dengan baik, pantau metrik ini:

CPU:
  - Penggunaan host vs VM
  - CPU steal time (menunjukkan over-commit)
  - Suhu CPU

RAM:
  - Penggunaan host (termasuk ZFS ARC)
  - Penggunaan setiap VM
  - Swap usage (sepatutnya 0)

Storan:
  - IOPS (operasi I/O per saat)
  - Latency (kependaman baca/tulis)
  - Throughput (MB/s)

Rangkaian:
  - Throughput per VM
  - Paket per saat
  - Ralat dan drop

Nota Beginner: Kalau swap usage bukan 0, itu tanda RAM anda tak cukup. Ini antara tanda pertama yang perlu anda perhatikan. Tambah RAM fizikal atau kurangkan VM yang berjalan.

Alat Pemantauan Proxmox

# CLI tools pada host Proxmox

# Penggunaan sumber keseluruhan
pvestatistics

# Maklumat VM tertentu
qm status 100 --verbose

# Penggunaan storan
pvesm status

# Log sistem
journalctl -u pve-cluster -f

Checklist Siap Bab Ini

Ringkasan

Dalam bab lanjutan virtualisasi ini, kita telah belajar tentang:

  • GPU Passthrough (NVIDIA, Intel iGPU, GVT-g)
  • Cluster Proxmox dan live migration
  • Storan Ceph teragih
  • Infrastructure as Code untuk automasi (Terraform, Packer)
  • Pengoptimuman prestasi (CPU pinning, huge pages, VirtIO)
  • Pemantauan prestasi virtualisasi

Kemahiran ini membawa homelab anda ke tahap yang lebih profesional dan memberi anda pengalaman berharga yang digunakan dalam persekitaran enterprise.

Tapi ingat β€” anda tak perlu kuasai semua ni sekaligus. Pilih satu topik yang benar-benar anda perlukan, kuasai ia, dan barulah move on ke topik seterusnya. Satu langkah pada satu masa!

Seterusnya, kita akan masuk ke dunia Docker β€” satu teknologi yang akan mengubah cara anda deploy dan urus service dalam homelab.

Bab 7: Docker dan Container

Okay, sekarang kita masuk bahagian yang saya rasa paling exciting dalam homelab β€” Docker! Kalau tadi kita belajar virtualisasi (komputer dalam komputer), Docker pula macam β€œkotak berasingan” untuk setiap aplikasi. Setiap kotak ada semua yang app tu perlukan, dan kotak-kotak ni tak kacau antara satu sama lain.

Apa yang anda akan belajar:

  • Konsep image, container, volume, dan network
  • Cara pasang Docker dan deploy service pertama menggunakan Docker Compose
  • Struktur folder yang kemas untuk mengurus banyak service

Cara Ikut Bab Ini

  1. Pasang Docker dahulu dan sahkan dengan hello-world.
  2. Deploy satu service mudah dahulu sebelum cuba satu stack besar.
  3. Biasakan diri dengan log, volume, dan port kerana tiga perkara ini paling kerap digunakan.

Nota Beginner: Cara paling mudah memahami Docker ialah anggap setiap service sebagai satu folder yang ada satu fail docker-compose.yml dan satu tempat simpan data. Itu sahaja. Jangan overthink.

Laluan Paling Mudah untuk Beginner

  • Pasang Docker, uji hello-world, kemudian deploy satu service mudah seperti Uptime Kuma atau Vaultwarden.
  • Gunakan satu folder per service supaya config dan data tidak bercampur.
  • Belajar tiga benda dulu: ports, volumes, dan logs.

Langkah 1: Mulakan dengan Gambaran Besar

Docker mengubah cara ramai orang memasang dan mengurus aplikasi. Dulu, nak install satu app kena install macam-macam dependency, configure banyak benda, dan kadang-kadang satu app boleh rosakkan app lain.

Dengan Docker, semua tu dah settle. Setiap app jalan dalam container sendiri, dengan dependency sendiri. Bersih, kemas, dan mudah diulang semula jika berlaku masalah.

Seni Bina Docker & Docker Compose Docker Host Traefik / Nginx Proxy Manager Port 80/443 - SSL Automatik Rangkaian Docker (docker-network) Nextcloud Storan Awan Volume: /data Port: 8080 Gitea Git Hosting Volume: /repos Port: 3000 Vaultwarden Pengurus Kata Laluan Volume: /data Port: 8000 Home Assistant Automasi Rumah Volume: /config Port: 8123 Grafana Pemantauan Volume: /grafana Port: 3000 Pi-hole DNS & Ad-block Volume: /pihole Port: 53, 8081 Portainer Pengurusan Docker Volume: /docker.sock Port: 9443 Watchtower Auto-Kemas Kini Volume: /docker.sock Jadual: Harian
Seni Bina Docker &amp; Docker Compose

Langkah 2: Faham Apa Itu Docker?

Docker adalah platform container yang membungkus aplikasi bersama semua kebergantungannya ke dalam unit yang dipanggil container. Setiap container berjalan secara terpencil tetapi berkongsi kernel OS host.

Perbezaan Docker vs Mesin Maya

Ini soalan yang ramai orang tanya. Mari kita tengok perbezaan dia:

Mesin Maya:                    Docker:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”
β”‚  Aplikasi A  β”‚               β”‚App A β”‚ β”‚App B β”‚ β”‚App C β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€               β”œβ”€β”€β”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”€β”€
β”‚   OS Penuh   β”‚               β”‚ Libs β”‚ β”‚ Libs β”‚ β”‚ Libs β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€               β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜
β”‚  Hypervisor  β”‚               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€               β”‚      Docker Engine       β”‚
β”‚   OS Hos     β”‚               β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€               β”‚        OS Hos           β”‚
β”‚  Perkakasan  β”‚               β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚      Perkakasan         β”‚
                               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Saiz: GB                       Saiz: MB
Boot: Minit                    Boot: Saat

Nampak tak perbezaan dia? VM perlu satu OS penuh untuk setiap instance. Docker hanya perlu app dan library dia sahaja. Sebab tu Docker jauh lebih ringan dan laju.

Konsep Utama Docker

Konsep Penerangan
Image Template baca sahaja untuk mencipta container
Container Instance berjalan daripada image
Dockerfile Skrip untuk membina image
Volume Storan berterusan untuk data container
Network Rangkaian maya untuk komunikasi antara container
Registry Repositori untuk menyimpan dan berkongsi image (Docker Hub)

Nota Beginner: Analogi mudah β€” Image macam resipi, Container macam masakan yang dah siap dimasak. Satu resipi boleh buat banyak masakan, dan setiap masakan berdiri sendiri.

Langkah 3: Pemasangan Docker

Pada Ubuntu/Debian

Ikut langkah ni satu per satu. Copy paste je arahan di bawah.

# Buang versi lama
sudo apt remove docker docker-engine docker.io containerd runc

# Pasang kebergantungan
sudo apt update
sudo apt install -y ca-certificates curl gnupg

# Tambah kunci GPG rasmi Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Tambah repositori
echo \
  "deb [arch=$(dpkg --print-architecture) \
  signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Pasang Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli \
  containerd.io docker-buildx-plugin docker-compose-plugin

# Tambah pengguna ke kumpulan docker
sudo usermod -aG docker $USER

Log keluar dan log masuk semula untuk perubahan kumpulan berkuat kuasa.

Nota Beginner: Arahan usermod -aG docker $USER membolehkan anda guna Docker tanpa sudo setiap kali. Penting untuk kemudahan. Tapi anda perlu log out dan log in balik (atau reboot) untuk ia berkuat kuasa.

Pengesahan Pemasangan

# Periksa versi
docker --version
docker compose version

# Jalankan container ujian
docker run hello-world

Kalau anda nampak mesej β€œHello from Docker!” β€” tahniah, Docker dah berjaya dipasang!

Langkah 4: Docker Compose

Docker Compose membolehkan anda mendefinisikan dan menjalankan aplikasi Docker berbilang container menggunakan fail YAML. Ini cara yang paling popular untuk deploy service dalam homelab.

Struktur Fail docker-compose.yml

# Contoh asas docker-compose.yml
services:
  nama-perkhidmatan:
    image: nama-image:tag
    container_name: nama-kontena
    ports:
      - "port-hos:port-kontena"
    volumes:
      - ./data-tempatan:/data-kontena
    environment:
      - VARIABLE=nilai
    restart: unless-stopped
    networks:
      - rangkaian-nama

networks:
  rangkaian-nama:
    driver: bridge

Tip dari saya β€” sentiasa guna restart: unless-stopped supaya container auto-start bila server reboot. Satu benda kecil tapi sangat penting.

Arahan Docker Compose Asas

Ini arahan yang anda akan guna setiap hari. Hafal je lima arahan pertama, yang lain boleh rujuk balik bila perlu.

# Mulakan semua perkhidmatan
docker compose up -d

# Hentikan semua perkhidmatan
docker compose down

# Lihat log
docker compose logs -f

# Lihat status
docker compose ps

# Mulakan semula perkhidmatan
docker compose restart nama-perkhidmatan

# Tarik imej terkini
docker compose pull

# Bina semula dan mulakan
docker compose up -d --build

Nota Beginner: Flag -d bermaksud β€œdetached” β€” container jalan di background. Flag -f pada logs bermaksud β€œfollow” β€” log keluar secara live. Tekan Ctrl+C untuk keluar dari mod follow.

Langkah 5: Bina Projek Docker untuk Homelab

Struktur Direktori Disyorkan

Ini struktur folder yang saya cadangkan. Ia kemas, mudah di-backup, dan mudah dipindahkan ke server lain.

/opt/docker/
β”œβ”€β”€ docker-compose.yml          # Fail utama
β”œβ”€β”€ .env                        # Pembolehubah persekitaran
β”œβ”€β”€ traefik/
β”‚   β”œβ”€β”€ traefik.yml
β”‚   └── acme.json
β”œβ”€β”€ nextcloud/
β”‚   └── data/
β”œβ”€β”€ vaultwarden/
β”‚   └── data/
β”œβ”€β”€ pihole/
β”‚   β”œβ”€β”€ etc-pihole/
β”‚   └── etc-dnsmasq.d/
β”œβ”€β”€ gitea/
β”‚   └── data/
β”œβ”€β”€ grafana/
β”‚   └── data/
β”œβ”€β”€ homeassistant/
β”‚   └── config/
└── portainer/
    └── data/

Fail .env

Fail .env simpan pembolehubah yang digunakan dalam docker-compose.yml. Guna satu tempat untuk semua setting supaya senang diubah.

# .env - Pembolehubah persekitaran
PUID=1000
PGID=1000
TZ=Asia/Kuala_Lumpur
DOMAIN=lab.local
DATA_DIR=/opt/docker

Docker Compose Lengkap untuk Homelab

Ini contoh stack homelab yang lengkap. Anda tak perlu deploy semua sekali β€” pilih mana yang anda perlukan dulu.

# docker-compose.yml - Stack Homelab Lengkap

services:
  # ============================================
  # Portainer - Pengurusan Docker
  # ============================================
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    ports:
      - "9443:9443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./portainer/data:/data
    restart: unless-stopped

  # ============================================
  # Nextcloud - Storan Awan Peribadi
  # ============================================
  nextcloud-db:
    image: mariadb:latest
    container_name: nextcloud-db
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS}
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: ${DB_PASS}
    volumes:
      - ./nextcloud/db:/var/lib/mysql
    restart: unless-stopped

  nextcloud:
    image: nextcloud:latest
    container_name: nextcloud
    ports:
      - "8080:80"
    environment:
      MYSQL_HOST: nextcloud-db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: ${DB_PASS}
      NEXTCLOUD_TRUSTED_DOMAINS: "nextcloud.${DOMAIN}"
    volumes:
      - ./nextcloud/data:/var/www/html
    depends_on:
      - nextcloud-db
    restart: unless-stopped

  # ============================================
  # Vaultwarden - Pengurus Kata Laluan
  # ============================================
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    ports:
      - "8000:80"
    environment:
      DOMAIN: "https://vault.${DOMAIN}"
      SIGNUPS_ALLOWED: "true"
    volumes:
      - ./vaultwarden/data:/data
    restart: unless-stopped

  # ============================================
  # Jellyfin - Server Media
  # ============================================
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    ports:
      - "8096:8096"
    volumes:
      - ./jellyfin/config:/config
      - ./jellyfin/cache:/cache
      - /path/to/media:/media:ro
    restart: unless-stopped

  # ============================================
  # Home Assistant - Automasi Rumah
  # ============================================
  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    container_name: homeassistant
    ports:
      - "8123:8123"
    volumes:
      - ./homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped

  # ============================================
  # Gitea - Git Hosting
  # ============================================
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    ports:
      - "3000:3000"
      - "2222:22"
    environment:
      USER_UID: ${PUID}
      USER_GID: ${PGID}
    volumes:
      - ./gitea/data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped

  # ============================================
  # Uptime Kuma - Pemantauan
  # ============================================
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    ports:
      - "3001:3001"
    volumes:
      - ./uptime-kuma/data:/app/data
    restart: unless-stopped

  # ============================================
  # Watchtower - Kemas Kini Automatik
  # ============================================
  watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      WATCHTOWER_CLEANUP: "true"
      WATCHTOWER_SCHEDULE: "0 0 4 * * *"
      TZ: ${TZ}
    restart: unless-stopped

Nota Beginner: Saya cadangkan mulakan dengan Portainer (untuk urus Docker secara visual) dan Uptime Kuma (untuk pantau service). Dua ni ringan dan sangat berguna dari awal lagi.

Langkah 6: Pengurusan Docker

Arahan Docker Berguna

Ini arahan harian yang anda perlu tahu. Tak perlu hafal semua β€” bookmark page ni dan rujuk bila perlu.

# Senarai container berjalan
docker ps

# Senarai semua container (termasuk berhenti)
docker ps -a

# Lihat log container
docker logs -f nama-kontena

# Masuk ke dalam container
docker exec -it nama-kontena /bin/bash

# Statistik sumber container
docker stats

# Buang container dan imej yang tidak digunakan
docker system prune -a

# Periksa penggunaan storan Docker
docker system df

Docker Networks

Rangkaian Docker membolehkan container berkomunikasi antara satu sama lain dengan selamat.

# Cipta rangkaian khusus
docker network create homelab-net

# Senarai rangkaian
docker network ls

# Periksa rangkaian
docker network inspect homelab-net

Konfigurasi rangkaian dalam docker-compose.yml:

services:
  app:
    networks:
      - frontend
      - backend

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge
    internal: true  # Tiada akses internet

Nota Beginner: Network internal: true bermaksud container dalam rangkaian tu tak boleh akses internet. Ini bagus untuk database β€” anda tak mahu database anda boleh β€œbercakap” dengan internet, kan?

Docker Volumes

Volume adalah cara Docker simpan data yang kekal walaupun container dihapuskan. Ini sangat penting β€” tanpa volume, semua data hilang bila container dibuang.

# Cipta volume bernama
docker volume create data-nextcloud

# Senarai volumes
docker volume ls

# Buang volume yang tidak digunakan
docker volume prune

Jenis mount:

volumes:
  # Bind mount (direktori host)
  - ./data:/app/data

  # Named volume (diuruskan Docker)
  - data-volume:/app/data

  # Read-only mount
  - ./config:/app/config:ro

Tip dari saya β€” guna bind mount (./data:/app/data) untuk homelab sebab senang di-backup. Anda nampak terus folder tu dalam filesystem host.

Langkah 7: Keselamatan Docker

Amalan Terbaik

Keselamatan penting walaupun dalam homelab. Biasakan amalan ni dari awal supaya bila anda kerja dalam production nanti, dah jadi habit.

  1. Jangan jalankan container sebagai root:
services:
  app:
    user: "1000:1000"
  1. Hadkan sumber:
services:
  app:
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 1G
  1. Gunakan imej rasmi dan dipercayai sahaja

  2. Kemas kini imej secara berkala:

docker compose pull && docker compose up -d
  1. Jangan dedahkan Docker socket tanpa perlu:
# ELAKKAN ini melainkan benar-benar perlu
volumes:
  - /var/run/docker.sock:/var/run/docker.sock
  1. Gunakan .env untuk rahsia:
# .env
DB_ROOT_PASS=kata_laluan_sangat_selamat
DB_PASS=kata_laluan_pangkalan_data

Nota Beginner: Docker socket (docker.sock) memberi akses penuh kepada Docker Engine. Hanya service yang memang perlu (seperti Portainer atau Watchtower) patut dapat akses ini. Jangan bagi semua container akses socket.

Langkah 8: Penyelesaian Masalah Docker

Jangan risau kalau container tak jalan. Ini normal, terutama pada awalnya. Saya pun masih troubleshoot Docker sampai sekarang. Berikut adalah masalah biasa dan cara selesaikannya.

Masalah Biasa dan Penyelesaian

Container tidak dapat bermula:

# Periksa log β€” ini SENTIASA langkah pertama
docker logs nama-kontena

# Periksa konfigurasi
docker inspect nama-kontena

Port sudah digunakan:

# Cari proses yang menggunakan port
sudo lsof -i :8080
sudo ss -tlnp | grep 8080

Kehabisan ruang storan:

# Periksa penggunaan
docker system df

# Bersihkan
docker system prune -a --volumes

Masalah kebenaran fail:

# Tetapkan pemilikan
sudo chown -R 1000:1000 ./data

# Atau gunakan PUID/PGID dalam environment

Nota Beginner: 90% masalah Docker boleh diselesaikan dengan membaca log (docker logs nama-kontena). Biasakan diri baca log β€” ia macam β€œdoktor” yang beritahu anda apa yang tak kena.

Checklist Siap Bab Ini

Ringkasan

Dalam bab ini, kita telah belajar tentang:

  • Konsep Docker dan perbezaannya dengan VM
  • Pemasangan Docker dan Docker Compose
  • Fail docker-compose.yml untuk stack homelab lengkap
  • Pengurusan container, rangkaian, dan volume
  • Keselamatan dan amalan terbaik Docker
  • Penyelesaian masalah biasa

Docker adalah salah satu kemahiran paling bernilai yang anda boleh belajar dalam homelab. Hampir semua syarikat IT moden guna container dalam satu bentuk atau yang lain.

Jangan rasa perlu kuasai semua sekali gus. Mulakan dengan satu service, fahamkan flow dia, dan tambah service lain bila dah selesa. Satu langkah pada satu masa!

Seterusnya, kita akan masuk bahagian Docker lanjutan β€” reverse proxy, health check, backup, dan macam-macam lagi yang akan buat setup anda lebih mantap.

Bab 7: Docker Lanjutan dan Orkestrasi

Aliran Rangkaian Docker Lanjutan Contoh visual untuk Traefik, rangkaian berbilang, pengesahan, dan lapisan database dalaman Internet HTTP, HTTPS, ACME Traefik TLS, routing, labels Docker Dashboard dan ACME resolver Authelia SSO dan 2FA untuk servis Middleware keselamatan Rangkaian Proxy / Frontend Nextcloud cloud.lab.local Gitea git.lab.local Vaultwarden vault.lab.local Rangkaian Backend / Internal MariaDB Redis Akses aplikasi melalui hostname dan labels Servis hanya melihat database yang diperlukan
Aliran Rangkaian Docker Lanjutan

Anda dah selesa dengan Docker Compose asas? Bagus! Sekarang kita naikkan level sedikit. Bab ni akan tunjukkan macam mana nak buat setup Docker anda lebih profesional β€” reverse proxy, health check, backup, dan pengurusan berbilang host.

Tapi ingat, semua ni optional. Guna bila ada keperluan sebenar, bukan sebab nampak cool.

Apa yang anda akan belajar:

  • Bila patut guna Traefik, Macvlan, Swarm, dan Health Check
  • Cara mengembangkan setup Docker tanpa jadi serabut
  • Cara merancang backup dan migrasi service dengan lebih yakin

Cara Ikut Bab Ini

  1. Pastikan anda benar-benar selesa dengan Docker Compose asas dahulu.
  2. Tambah komponen lanjutan satu demi satu, bukan serentak.
  3. Uji backup dan restore, bukan sekadar simpan fail config.

Nota Beginner: Anda tidak perlu Traefik, Macvlan, atau Swarm pada hari pertama. Guna bila ada masalah sebenar yang ia boleh selesaikan. Contohnya, Traefik berguna bila anda dah ada banyak service dan penat taip port number setiap kali.

Laluan Paling Mudah untuk Beginner

  • Jika Docker Compose asas pun belum selesa, belum perlu masuk bab ini terlalu dalam.
  • Mulakan dengan reverse proxy atau backup, bukan terus ke Swarm.
  • Pastikan anda tahu restore satu service sebelum anda cuba scale banyak service.

Langkah 1: Docker Networks Lanjutan

Memahami Jenis Rangkaian Docker

Docker menyokong beberapa pemacu rangkaian. Setiap satu ada tujuan tersendiri.

Bridge (Default):

Ini rangkaian yang paling biasa. Container dalam rangkaian bridge boleh bercakap antara satu sama lain menggunakan nama container sebagai hostname.

# Rangkaian bridge lalai
docker network create --driver bridge my-network

# Container dalam rangkaian bridge boleh berkomunikasi
# menggunakan nama container sebagai hostname

Host:

Container guna rangkaian host terus β€” macam app biasa yang jalan terus pada server.

# Container berkongsi rangkaian host terus
# Tiada pengasingan rangkaian, tetapi prestasi terbaik
docker run --network host nginx

Macvlan:

Setiap container dapat alamat MAC dan IP sendiri. Pada rangkaian, ia nampak macam peranti fizikal yang berasingan.

# Setiap container mendapat alamat MAC dan IP sendiri
# Kelihatan seperti peranti fizikal pada rangkaian
docker network create -d macvlan \
  --subnet=10.0.0.0/24 \
  --gateway=10.0.0.1 \
  -o parent=eth0 \
  my-macvlan

Macvlan sangat berguna untuk perkhidmatan yang memerlukan kehadiran pada rangkaian fizikal, seperti Pi-hole atau Home Assistant.

Nota Beginner: Untuk kebanyakan kes, rangkaian bridge sudah cukup. Guna Macvlan hanya bila service anda perlu IP tersendiri pada rangkaian rumah β€” contohnya Pi-hole yang perlu jadi DNS server untuk semua peranti.

IPvlan:

# Serupa dengan Macvlan tetapi berkongsi alamat MAC host
# Berguna apabila switch mengehadkan MAC per port
docker network create -d ipvlan \
  --subnet=10.0.0.0/24 \
  --gateway=10.0.0.1 \
  -o parent=eth0 \
  my-ipvlan

Rangkaian Berbilang dalam Docker Compose

Ini contoh yang sangat praktikal β€” asingkan traffic antara frontend, backend, dan database.

services:
  traefik:
    image: traefik:latest
    networks:
      - frontend
      - backend

  nextcloud:
    image: nextcloud:latest
    networks:
      - backend
      - database

  db:
    image: mariadb:latest
    networks:
      - database  # Hanya boleh diakses oleh nextcloud

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge
  database:
    driver: bridge
    internal: true  # Tiada akses ke internet

Dengan konfigurasi ini: - Traefik boleh berkomunikasi dengan Nextcloud (melalui backend) - Nextcloud boleh berkomunikasi dengan MariaDB (melalui database) - MariaDB TIDAK boleh diakses terus dari luar (rangkaian internal)

Tip dari saya β€” walaupun dalam homelab, asingkan database dari internet. Ini amalan keselamatan yang baik dan senang nak buat.

Langkah 2: Reverse Proxy dengan Traefik

Mengapa Traefik?

Bayangkan anda ada 10 service Docker. Tanpa reverse proxy, anda kena ingat port setiap satu β€” server:8080 untuk Nextcloud, server:3000 untuk Gitea, server:8096 untuk Jellyfin… penat kan?

Dengan Traefik, anda boleh guna nama domain: cloud.lab.local, git.lab.local, media.lab.local. Lebih kemas dan mudah diingat.

Traefik ialah reverse proxy moden yang menawarkan: - Pengesanan automatik container Docker (tiada konfigurasi manual) - Sijil SSL automatik (Let’s Encrypt) - Dashboard masa nyata - Middleware (pengesahan, rate limiting, dll.)

Konfigurasi Traefik Lengkap

# docker-compose.yml
services:
  traefik:
    image: traefik:latest
    container_name: traefik
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"  # Dashboard
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik/traefik.yml:/etc/traefik/traefik.yml
      - ./traefik/acme.json:/acme.json
    networks:
      - proxy
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dashboard.rule=Host(`traefik.lab.local`)"
      - "traefik.http.routers.dashboard.service=api@internal"

networks:
  proxy:
    external: true
# traefik/traefik.yml
api:
  dashboard: true
  insecure: true

entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
  websecure:
    address: ":443"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
    network: proxy

certificatesResolvers:
  letsencrypt:
    acme:
      email: admin@domain.com
      storage: /acme.json
      httpChallenge:
        entryPoint: web

Nota Beginner: Jangan risau kalau config Traefik nampak panjang. Anda hanya perlu setup sekali, dan selepas tu menambah service baru sangat mudah β€” cuma tambah beberapa baris label sahaja.

Menambah perkhidmatan ke Traefik:

Nampak tak betapa mudahnya? Cuma tambah labels pada service dan Traefik akan auto-detect.

services:
  nextcloud:
    image: nextcloud:latest
    container_name: nextcloud
    networks:
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nextcloud.rule=Host(`cloud.lab.local`)"
      - "traefik.http.routers.nextcloud.tls=true"
      - "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"
      - "traefik.http.services.nextcloud.loadbalancer.server.port=80"
    restart: unless-stopped

Middleware Traefik

Basic Auth:

labels:
  - "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$hash"
  - "traefik.http.routers.app.middlewares=auth"

Rate Limiting:

labels:
  - "traefik.http.middlewares.ratelimit.ratelimit.average=100"
  - "traefik.http.middlewares.ratelimit.ratelimit.burst=50"

Authelia β€” SSO untuk Homelab:

Authelia menyediakan Single Sign-On (SSO) dan pengesahan dua faktor untuk semua service anda. Satu login untuk semua β€” macam Google account tapi untuk homelab anda sendiri.

services:
  authelia:
    image: authelia/authelia:latest
    container_name: authelia
    volumes:
      - ./authelia/config:/config
    networks:
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.authelia.rule=Host(`auth.lab.local`)"
      - "traefik.http.routers.authelia.tls=true"
    restart: unless-stopped
# authelia/config/configuration.yml
server:
  address: 'tcp://0.0.0.0:9091/'

log:
  level: info

authentication_backend:
  file:
    path: /config/users_database.yml

access_control:
  default_policy: deny
  rules:
    - domain: "*.lab.local"
      policy: two_factor

session:
  name: authelia_session
  domain: lab.local
  expiration: 1h
  inactivity: 5m

storage:
  local:
    path: /config/db.sqlite3

notifier:
  filesystem:
    filename: /config/notification.txt

Langkah 3: Docker Health Checks

Health check memastikan container bukan sahaja berjalan, tetapi juga benar-benar berfungsi dengan betul. Ada perbezaan besar antara β€œcontainer is running” dan β€œservice is actually working”.

Dari pengalaman saya, health check sangat berguna untuk container yang kadang-kadang hang tapi masih nampak β€œup” dalam docker ps.

services:
  nextcloud:
    image: nextcloud:latest
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/status.php"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s

  mariadb:
    image: mariadb:latest
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 30s
      timeout: 10s
      retries: 3

Kebergantungan berdasarkan kesihatan:

Ini sangat berguna β€” pastikan database dah siap sebelum app cuba connect.

services:
  nextcloud:
    depends_on:
      mariadb:
        condition: service_healthy
      redis:
        condition: service_started

Nota Beginner: start_period memberi masa untuk container β€œwarm up” sebelum health check mula berjalan. Contohnya, database mungkin ambil 30-60 saat untuk sedia. Tanpa start_period, health check akan report β€œunhealthy” padahal container tu sedang start.

Langkah 4: Pengurusan Berbilang Host

Docker Swarm

Docker Swarm membolehkan anda menjalankan container merentasi berbilang server. Kalau satu server down, container boleh dipindahkan ke server lain secara automatik.

Saya cadangkan Swarm hanya kalau anda dah ada 2-3 server dan benar-benar perlu HA (High Availability). Untuk satu server, Docker Compose sahaja dah cukup.

# Inisialisasi Swarm pada node pengurus
docker swarm init --advertise-addr 10.0.20.20

# Tambah node pekerja
docker swarm join --token TOKEN 10.0.20.20:2377

# Deploy stack
docker stack deploy -c docker-compose.yml homelab

# Senarai perkhidmatan
docker service ls

Portainer untuk Pengurusan Visual

Portainer menyediakan antara muka web untuk mengurus Docker. Kalau anda lebih selesa dengan GUI, ini wajib ada.

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    ports:
      - "9443:9443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    restart: unless-stopped

volumes:
  portainer_data:

Ciri Portainer: - Pengurusan container visual - Melihat log dan statistik - Terminal web ke dalam container - Pengurusan imej dan rangkaian - Sokongan Docker Swarm dan Kubernetes - Template aplikasi (deploy 1 klik)

Nota Beginner: Portainer sangat membantu untuk visualize apa yang berlaku dalam Docker anda. Tapi belajar CLI juga ya β€” nanti dalam kerja sebenar, tak semua environment ada GUI.

Langkah 5: Membina Imej Docker Sendiri

Kadang-kadang, imej yang ada di Docker Hub tak cukup untuk keperluan anda. Jadi anda perlu bina sendiri.

Dockerfile Asas

# Contoh: Aplikasi Python
FROM python:3.12-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
  CMD curl -f http://localhost:8000/health || exit 1

USER 1000:1000

CMD ["python", "app.py"]

Amalan Terbaik Dockerfile

# 1. Gunakan imej asas yang kecil
FROM alpine:3.19    # ~5MB
# bukan
FROM ubuntu:24.04   # ~77MB

# 2. Gabungkan arahan RUN untuk kurangkan layer
RUN apt-get update && \
    apt-get install -y curl wget && \
    rm -rf /var/lib/apt/lists/*

# 3. Gunakan .dockerignore
# .dockerignore
.git
node_modules
*.md
docker-compose*.yml

# 4. Gunakan multi-stage build
FROM node:20 AS builder
WORKDIR /app
COPY . .
RUN npm ci && npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html

# 5. Jangan jalankan sebagai root
RUN adduser -D appuser
USER appuser

Tip dari saya β€” multi-stage build tu sangat berguna. Anda boleh build app dalam satu stage, dan copy hasil build sahaja ke stage akhir. Imej jadi sangat kecil.

Langkah 6: Sandaran Docker

Menyandaran Data Container

Backup adalah perkara yang ramai orang abaikan sehingga terlambat. Saya dah pernah kena, dan percayalah β€” rasa dia tak best. Jadi setup backup dari awal.

#!/bin/bash
# backup-docker.sh
BACKUP_DIR="/mnt/backup/docker"
DATE=$(date +%Y%m%d_%H%M%S)
COMPOSE_DIR="/opt/docker"

# Hentikan perkhidmatan (pilihan - untuk konsistensi)
# cd $COMPOSE_DIR && docker compose stop

# Sandaran volume dan konfigurasi
tar czf "$BACKUP_DIR/docker-backup-$DATE.tar.gz" \
  -C "$COMPOSE_DIR" \
  --exclude='*/cache/*' \
  --exclude='*/logs/*' \
  .

# Sandaran senarai imej
docker images --format "{{.Repository}}:{{.Tag}}" > \
  "$BACKUP_DIR/docker-images-$DATE.txt"

# Mulakan semula perkhidmatan
# cd $COMPOSE_DIR && docker compose up -d

# Buang sandaran lama (simpan 7 hari)
find "$BACKUP_DIR" -name "docker-backup-*.tar.gz" -mtime +7 -delete

echo "Sandaran Docker selesai: $DATE"

Nota Beginner: Script di atas boleh dijadualkan menggunakan cron supaya backup berjalan secara automatik setiap malam. Satu baris cron job, dan anda boleh tidur lena tanpa risau kehilangan data.

Migrasi Docker ke Server Baru

Salah satu kelebihan Docker ialah migrasi yang mudah. Kalau anda beli server baru, pindahkan service dalam beberapa minit sahaja.

# Pada server lama:
# 1. Eksport konfigurasi
cd /opt/docker
tar czf docker-configs.tar.gz .

# 2. Salin ke server baru
scp docker-configs.tar.gz admin@pelayan-baru:/opt/docker/

# Pada server baru:
# 3. Ekstrak
cd /opt/docker
tar xzf docker-configs.tar.gz

# 4. Mulakan perkhidmatan
docker compose pull
docker compose up -d

Nampak tak betapa mudahnya? Itulah keindahan Docker β€” semuanya portable.

Checklist Siap Bab Ini

Ringkasan

Dalam bab lanjutan ini, kita telah belajar tentang:

  • Jenis rangkaian Docker (bridge, host, macvlan, ipvlan)
  • Reverse proxy dengan Traefik untuk akses yang lebih kemas
  • Pengesahan SSO dengan Authelia
  • Health checks untuk meningkatkan kebolehpercayaan
  • Pengurusan berbilang host (Docker Swarm)
  • Portainer untuk pengurusan visual
  • Membina imej Docker sendiri
  • Sandaran dan migrasi Docker

Pengetahuan lanjutan ini membolehkan anda membina infrastruktur container yang lebih kukuh dan profesional. Tapi seperti biasa β€” anda tak perlu guna semua sekali gus. Pilih yang anda perlukan, kuasai ia, dan tambah yang lain bila tiba masanya.

Tahniah kerana sampai ke penghujung bahagian Docker! Anda sekarang ada asas yang kukuh untuk deploy dan urus service dalam homelab. Seterusnya, kita akan belajar tentang pengurusan storan dan NAS β€” satu langkah pada satu masa!

Bab 8: Pengurusan Storan dan NAS

Okay, saya nak jujur dengan anda β€” bab ini mungkin nampak β€œkering” pada pandangan pertama. Storan, RAID, ZFS… bunyi macam topik yang nak buat anda tertidur. Tapi percayalah, ini antara bab paling penting dalam keseluruhan buku ni.

Kenapa? Sebab data anda tak boleh diganti. Hardware rosak? Beli baru. Service down? Pasang semula. Tapi kalau gambar keluarga, projek kerja, atau konfigurasi homelab anda hilang tanpa backup… itu sakit yang lain macam.

Saya pernah kehilangan data penting sebab fikir β€œnanti la buat backup.” Jangan jadi macam saya.

Apa yang anda akan belajar:

  • Beza antara RAID, ZFS, snapshot, dan backup (ini semua benda berbeza!)
  • Cara pilih strategi storan yang sesuai dengan keperluan anda
  • Kenapa integriti data lebih penting daripada sekadar kapasiti besar
  • Cara setup NAS dan strategi backup 3-2-1

Nota Beginner: RAID bukan backup. Kalau anda ingat satu perkara sahaja daripada bab ini, ingat ayat itu. Saya akan ulang banyak kali sebab ia memang sepenting itu.

Laluan Paling Mudah untuk Beginner

Kalau anda baru bermula dan rasa overwhelmed, ikut je tiga langkah ni dulu:

  • Gunakan satu SSD untuk sistem dan satu storan berasingan untuk data.
  • Kalau data anda masih kecil, backup yang konsisten jauh lebih penting daripada setup storan yang kompleks.
  • Simpan satu salinan backup di luar mesin utama β€” walaupun hanya external hard drive, itu sudah cukup bagus untuk permulaan.

Langkah 1: Gambaran Besar β€” Kenapa Storan Penting?

Data ialah aset paling bernilai dalam homelab anda. Bayangkan kalau hard disk anda rosak tengah malam, dan semua data projek kerja anda hilang. Atau ransomware encrypt semua fail anda. Kalau tiada backup, habis cerita.

Jadi bab ini fokus pada tiga perkara utama: menyimpan, melindungi, dan memulihkan data dengan cara yang masuk akal untuk beginner.

Perbandingan Tahap RAID RAID 0 (Striping) Cakera 1 A1 B1 C1 D1 E1 F1 Cakera 2 A2 B2 C2 D2 E2 F2 Laju: Tinggi Redundansi: Tiada Kapasiti: 100% RAID 1 (Mirroring) Cakera 1 A B C D E F G H I Cakera 2 A B C D E F G H I = Laju: Sederhana Redundansi: Tinggi Kapasiti: 50% RAID 5 (Striping + Pariti) D1 A1 B1 P(C) A2 P(B) C1 D2 P(A) B2 C2 D3 Laju: Baik Redundansi: 1 cakera Kapasiti: (N-1)/N RAID 10 (Mirror + Stripe) A C E A C E B D F B D F Laju: Sangat Tinggi Redundansi: Tinggi Kapasiti: 50% Ringkasan Perbandingan Ciri RAID 0 RAID 1 RAID 5 RAID 10 Min. Cakera 2 2 3 4 Toleransi Gagal Tiada 1 cakera 1 cakera 1 per cermin Prestasi Baca Tinggi Tinggi Tinggi Sangat Tinggi Prestasi Tulis Tinggi Sederhana Sederhana Sederhana Terbaik Untuk Cache/Temp OS/Boot Data Umum Pangkalan Data
Perbandingan Tahap RAID

Langkah 2: Faham Konsep Asas Storan

Jom kita kenali dulu jenis-jenis sistem fail yang biasa dipakai. Ini mungkin nampak complicated, tapi sebenarnya mudah je bila anda faham tujuan setiap satu.

Jenis Sistem Fail

ext4 (Fourth Extended Filesystem) - Standard Linux β€” matang, stabil, dan boring (dalam konteks ni, boring tu bagus!) - Tiada perlindungan integriti data terbina dalam - Mudah dan boleh dipercayai - Terbaik untuk: boot drive, storan ringkas

ZFS (Zettabyte File System) - Sistem fail dan pengurus volume dalam satu pakej - Perlindungan integriti data melalui checksumming β€” dia check setiap data yang ditulis - Ada mampatan, deduplikasi, dan snapshot - Memerlukan RAM yang agak banyak (kira-kira 1GB per TB data) - Terbaik untuk: NAS, storan data penting

Btrfs (B-tree File System) - Alternatif kepada ZFS di Linux - Snapshot dan subvolume - RAID terbina dalam (tapi perlu diingat: RAID 5/6 untuk Btrfs masih tidak stabil β€” elakkan) - Terbaik untuk: Storan data dengan snapshot

Nota Beginner: Kalau anda baru mula, ext4 untuk boot drive dan ZFS untuk data penting adalah pilihan yang paling selamat. Jangan terlalu fikir, pilih je dua ni dulu.

RAID (Redundant Array of Independent Disks)

RAID menggabungkan beberapa cakera fizikal untuk meningkatkan prestasi, kapasiti, atau redundansi. Setiap tahap RAID ada kelebihan dan kelemahan masing-masing.

RAID 0 β€” Striping: - Data diagihkan merentasi semua cakera - Prestasi: Sangat tinggi (laju gila!) - Redundansi: TIADA β€” kalau satu cakera gagal, SEMUA data hilang - Kapasiti: 100% - Jangan gunakan untuk data penting. Serius. Jangan.

RAID 1 β€” Mirroring: - Data disalin sepenuhnya ke cakera kedua β€” macam cermin - Prestasi baca: Baik - Redundansi: Boleh bertahan 1 kegagalan cakera - Kapasiti: 50% (separuh ruang untuk salinan) - Sesuai untuk: Boot drive, data kritikal

RAID 5 β€” Striping dengan Pariti: - Data dan pariti diagihkan merentasi 3+ cakera - Boleh bertahan 1 kegagalan cakera - Kapasiti: (N-1)/N - Sesuai untuk: Storan am

RAID 6 β€” Striping dengan Pariti Berganda: - Seperti RAID 5, tetapi boleh bertahan 2 kegagalan serentak - Kapasiti: (N-2)/N - Sesuai untuk: Data sangat penting

RAID 10 β€” Mirror + Stripe: - Gabungan RAID 1 dan RAID 0 - Prestasi dan redundansi yang baik - Kapasiti: 50% - Sesuai untuk: Pangkalan data, beban kerja prestasi tinggi

Nota Beginner: Saya nak ulang sekali lagi β€” RAID BUKAN backup! RAID melindungi daripada kegagalan cakera, tetapi TIDAK melindungi daripada pemadaman tidak sengaja, ransomware, atau bencana fizikal macam kebakaran. Anda tetap perlukan backup yang berasingan.

Langkah 3: ZFS β€” Panduan Praktikal

Mengapa ZFS?

ZFS adalah sistem fail kegemaran ramai homelabber, dan ada sebab kukuh untuk itu:

  1. Integriti data β€” Checksum pada setiap blok data. ZFS tahu kalau data anda corrupt.
  2. Snapshot β€” Titik pemulihan segera tanpa kos storan tambahan. Macam β€œsave game” untuk data anda.
  3. RAID-Z β€” Pelaksanaan RAID yang lebih baik dan lebih selamat.
  4. Mampatan β€” Jimat ruang storan secara telus, anda tak perasan pun.
  5. Replikasi β€” Hantar snapshot ke pelayan lain. Sangat berguna untuk backup.

Terminologi ZFS

Jangan risau kalau terminologi ni nampak banyak. Anda akan biasa lama-lama:

Istilah Penerangan
vdev Peranti maya (satu atau beberapa cakera)
pool (zpool) Kumpulan vdev yang membentuk storan
dataset Sistem fail dalam pool
zvol Volume blok dalam pool
snapshot Salinan baca sahaja pada satu titik masa
scrub Pengesahan integriti semua data β€” macam health check

Mencipta ZFS Pool

Okay, jom buat secara praktikal. Ini command-command asas yang anda perlukan:

# RAID-Z1 (setara RAID 5) - 3 cakera
zpool create datapool raidz /dev/sdb /dev/sdc /dev/sdd

# RAID-Z2 (setara RAID 6) - 4 cakera
zpool create datapool raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde

# Mirror (setara RAID 1) - 2 cakera
zpool create datapool mirror /dev/sdb /dev/sdc

# Periksa status pool
zpool status
zpool list

Nota Beginner: Kalau anda baru ada 2 cakera, guna mirror. Kalau ada 3 atau lebih, pertimbangkan RAID-Z1. Jangan terlalu fikir β€” yang penting ada redundansi.

Dataset ZFS

Dataset ni macam folder, tapi dengan superpowers. Anda boleh tetapkan kuota, mampatan, dan lain-lain untuk setiap dataset secara berasingan:

# Cipta dataset
zfs create datapool/documents
zfs create datapool/media
zfs create datapool/backups

# Tetapkan kuota
zfs set quota=500G datapool/media

# Aktifkan mampatan
zfs set compression=lz4 datapool/documents

# Senarai dataset
zfs list

Snapshot ZFS

Snapshot adalah salah satu ciri paling best ZFS. Bayangkan anda boleh β€œrewind” data anda ke mana-mana titik masa. Terpadam fail penting? Rollback je.

# Cipta snapshot
zfs snapshot datapool/documents@2026-03-20

# Senarai snapshot
zfs list -t snapshot

# Pulihkan dari snapshot
zfs rollback datapool/documents@2026-03-20

# Padam snapshot
zfs destroy datapool/documents@2026-03-20

# Snapshot automatik (menggunakan sanoid)
# Pasang sanoid untuk pengurusan snapshot automatik

Penyelenggaraan ZFS

ZFS perlukan sedikit penyelenggaraan berkala. Yang paling penting ialah scrub β€” proses pengesahan integriti data. Saya cadangkan jalankan sebulan sekali:

# Scrub (pengesahan integriti) - jalankan bulanan
zpool scrub datapool

# Periksa status scrub
zpool status

# Periksa kesihatan pool
zpool status -v

Jadual scrub automatik supaya anda tak lupa:

# Tambah ke crontab
sudo crontab -e
# Scrub pada hari pertama setiap bulan jam 2 pagi
0 2 1 * * /sbin/zpool scrub datapool

Langkah 4: Menyediakan NAS

NAS (Network Attached Storage) adalah β€œstoran pusat” dalam homelab anda. Semua peranti boleh akses data dari satu tempat. Ada beberapa cara nak setup.

TrueNAS SCALE

TrueNAS SCALE adalah pilihan terbaik untuk NAS homelab kerana ia menggabungkan ZFS dengan Docker. Anda dapat storan yang kukuh DAN boleh jalankan aplikasi.

Pemasangan:

  1. Muat turun ISO TrueNAS SCALE
  2. Pasang pada SSD berasingan (jangan pasang pada cakera data β€” penting ni!)
  3. Konfigurasi awal melalui antara muka web

Konfigurasi Pool Storan:

Storage β†’ Create Pool
  Nama: main-pool
  Layout: RAID-Z1 (3+ cakera) atau Mirror (2 cakera)
  Cakera: Pilih cakera data

Dataset:
  main-pool/documents
  main-pool/media
  main-pool/backups
  main-pool/docker

Perkongsian SMB (untuk Windows/Mac):

Kalau anda guna Windows atau Mac, SMB adalah cara paling senang untuk akses fail dari NAS:

Shares β†’ SMB β†’ Add
  Path: /mnt/main-pool/documents
  Name: Documents
  Purpose: Default share parameters

Perkongsian NFS (untuk Linux):

Kalau anda guna Linux, NFS lebih sesuai dan biasanya lebih laju:

Shares β†’ NFS β†’ Add
  Path: /mnt/main-pool/media
  Networks: 10.0.0.0/24
  Hosts: *

Samba (SMB) pada Linux

Kalau anda tak mahu guna TrueNAS dan prefer Linux biasa sebagai NAS, anda boleh setup Samba. Ini cara yang lebih β€œDIY” tapi masih berkesan:

# Pasang Samba
sudo apt install samba -y

# Konfigurasi /etc/samba/smb.conf
[global]
   workgroup = HOMELAB
   server string = Homelab NAS
   security = user
   map to guest = Bad Password

[documents]
   path = /mnt/data/documents
   browseable = yes
   read only = no
   valid users = admin
   create mask = 0644
   directory mask = 0755

[media]
   path = /mnt/data/media
   browseable = yes
   read only = yes
   guest ok = yes
# Tambah pengguna Samba
sudo smbpasswd -a admin

# Mulakan semula Samba
sudo systemctl restart smbd

Langkah 5: Strategi Backup 3-2-1

Ni bahagian yang paling ramai orang skip tapi paling penting. Jangan jadi macam mereka!

Peraturan 3-2-1

Peraturan backup 3-2-1 adalah standard industri, dan ia mudah je nak difahami:

  • 3 salinan data anda
  • 2 jenis media storan yang berbeza
  • 1 salinan di lokasi berbeza (offsite)

Bayangkan kalau rumah anda kena banjir dan semua perkakasan rosak. Kalau backup anda pun ada di rumah yang sama, habis semua. Sebab tu salinan offsite tu penting sangat.

Strategi Sandaran 3-2-1 3 SALINAN πŸ’Ύ Data Asal NAS / Pelayan πŸ”„ Sandaran Tempatan HDD Luaran / NAS Kedua ☁️ Sandaran Luar Tapak Awan / Lokasi lain 2 JENIS MEDIA πŸ–΄ Media 1 SSD / HDD (Fizikal) ☁️ Media 2 Awan / Tape / USB 1 LUAR TAPAK 🏠 ➑️ 🌐 Pilihan: ☁️ Backblaze B2 🏠 Rumah keluarga πŸ–₯️ VPS jauh πŸ“¦ Peti deposit bank
Strategi Sandaran 3-2-1

Pelaksanaan untuk Homelab

Jom kita lihat macam mana nak laksanakan 3-2-1 dalam konteks homelab:

Salinan 1 (Utama):
└── NAS dengan RAID-Z1
    └── Data asal yang digunakan harian

Salinan 2 (Backup Tempatan):
└── Cakera keras USB luaran
    └── Backup mingguan menggunakan Restic/Borg
    └── Simpan di lokasi berbeza di rumah

Salinan 3 (Backup Luar Tapak):
└── Pilihan A: Backblaze B2 (awan) β€” paling senang
└── Pilihan B: Cakera keras di rumah keluarga β€” percuma!
└── Pilihan C: VPS dengan storan
    └── Backup bulanan atau berterusan

Nota Beginner: Kalau anda baru mula, Pilihan B (simpan external hard drive di rumah mak/abang/kawan) adalah cara paling murah dan berkesan untuk offsite backup. Tak perlu bayar cloud storage pun.

Alat Backup

Restic β€” ini alat backup kegemaran saya. Laju, selamat, dan mudah digunakan:

# Pasang Restic
sudo apt install restic -y

# Inisialisasi repositori backup
restic init --repo /mnt/backup/restic-repo

# Cipta backup
restic -r /mnt/backup/restic-repo backup /mnt/data/documents

# Senarai snapshot
restic -r /mnt/backup/restic-repo snapshots

# Pulihkan
restic -r /mnt/backup/restic-repo restore latest --target /mnt/restore

Backup automatik dengan cron β€” supaya anda tak perlu ingat:

#!/bin/bash
# /usr/local/bin/backup.sh
export RESTIC_REPOSITORY="/mnt/backup/restic-repo"
export RESTIC_PASSWORD_FILE="/root/.restic-password"

# Jalankan backup
restic backup /mnt/data/documents /mnt/data/media

# Buang backup lama
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

# Log
echo "Backup selesai: $(date)" >> /var/log/backup.log
# Crontab - backup harian jam 3 pagi
0 3 * * * /usr/local/bin/backup.sh

Backup ke Backblaze B2 (untuk offsite backup):

Kalau anda nak cloud backup yang murah, Backblaze B2 adalah pilihan terbaik. Harganya sangat berpatutan berbanding AWS S3:

# Konfigurasi Restic untuk B2
export B2_ACCOUNT_ID="id-akaun-anda"
export B2_ACCOUNT_KEY="kunci-akaun-anda"

restic init --repo b2:nama-bucket-anda:restic

# Backup ke B2
restic -r b2:nama-bucket-anda:restic backup /mnt/data/documents

Checklist Siap Bab Ini

Ringkasan

Tahniah, anda dah habis bab storan! Jom recap apa yang kita dah belajar:

  • Jenis sistem fail β€” ext4 untuk kesederhanaan, ZFS untuk perlindungan data, Btrfs sebagai alternatif
  • Tahap RAID β€” dari RAID 0 (jangan untuk data penting!) sampai RAID 10
  • ZFS secara mendalam β€” pool, dataset, snapshot, scrub
  • NAS β€” TrueNAS SCALE atau Samba, pilih yang sesuai dengan anda
  • Strategi backup 3-2-1 β€” tiga salinan, dua media, satu offsite

Data anda adalah aset paling berharga dalam homelab. Bukan hardware, bukan software β€” data. Jaga ia dengan baik, dan anda akan tidur lena walaupun hard disk rosak tengah malam.

Seterusnya, kita akan masuk ke topik keselamatan homelab. Jangan skip bab tu juga!

Bab 9: Keselamatan Homelab

Jangan skip bab ni. Serius.

Saya tahu, bila anda baru excited nak setup homelab, keselamatan bukan benda pertama yang anda fikir. β€œAla, homelab je, siapa nak hack?” Percayalah, internet tidak peduli sama ada server itu milik Google atau milik anda di bilik tidur. Bot-bot jahat scan IP secara automatik 24/7. Saya pernah setup server baru dan dalam masa 10 minit dah nampak percubaan brute force SSH dalam log.

Apa yang anda akan belajar:

  • Lapisan keselamatan asas yang WAJIB ada dalam homelab
  • Cara kuatkan firewall, host, aplikasi, dan akses jauh secara praktikal
  • Urutan keselamatan yang paling penting untuk beginner β€” apa yang patut buat dulu

Nota Beginner: Keselamatan yang baik tidak semestinya kompleks. Selalunya ia bermula dengan kurang buka port, kurang guna default setting, dan lebih disiplin dalam update. Empat perkara je dulu: update, firewall, kata laluan kuat, backup.

Laluan Paling Mudah untuk Beginner

Kalau anda rasa overwhelmed dengan semua maklumat keselamatan ni, fokus pada empat perkara ni dulu:

  • Update sistem secara konsisten
  • Guna kata laluan yang kuat (bukan admin123!)
  • Aktifkan firewall
  • Sediakan backup

Elakkan buka port ke internet kalau belum benar-benar faham kesannya. Kalau perlu akses dari luar, utamakan VPN berbanding Port Forward untuk banyak service.

Langkah 1: Gambaran Besar β€” Kenapa Keselamatan Penting?

Keselamatan bukan ciri tambahan yang boleh anda β€œpasang kemudian.” Ia adalah sebahagian daripada reka bentuk homelab dari hari pertama.

Bayangkan scenario ni: seseorang dapat akses ke homelab anda. Mereka boleh akses NAS anda (semua fail peribadi), guna server anda untuk mining crypto (bil elektrik naik mendadak), atau lebih teruk β€” guna rangkaian anda sebagai launching pad untuk serangan ke tempat lain.

Sebab itu, kita ambil pendekatan yang praktikal dan berlapis. Kalau satu lapisan gagal, lapisan lain masih melindungi.

Lapisan Keselamatan Homelab Lapisan 1: Perimeter Firewall, IDS/IPS, Geo-blocking Lapisan 2: Rangkaian VLAN, Segmentasi, VPN Lapisan 3: Hos Kemas kini, Fail2ban, SELinux Lapisan 4: Aplikasi Pengesahan 2FA / SSO Authelia/Keycloak Enkripsi SSL/TLS Let's Encrypt Kata Laluan Vaultwarden Pengurus Kata Laluan DNS Selamat Pi-hole + DoH Sekat Iklan/Malware Pemantauan CrowdSec Wazuh / OSSEC Sandaran 3-2-1 Backup Restic / Borg
Lapisan Keselamatan Homelab

Langkah 2: Bina Model Keselamatan Berlapis

Konsep ni dipanggil defense in depth β€” pertahanan secara mendalam. Macam rumah yang ada pagar, kunci pintu, alarm, DAN anjing. Kalau pencuri lepas pagar, masih ada kunci. Kalau lepas kunci, masih ada alarm.

Lapisan 1: Perimeter (Sempadan Rangkaian)

Firewall β€” Barisan Pertahanan Pertama:

Prinsip utama: Default deny β€” sekat semua, benarkan yang perlu sahaja. Jangan terbalik!

Peraturan Firewall Asas:
1. Sekat semua trafik masuk (default)
2. Benarkan trafik keluar yang diperlukan
3. Benarkan port tertentu sahaja (SSH, HTTP/S, VPN)
4. Sekat trafik dari negara yang tidak berkaitan (geo-blocking)

IDS/IPS (Intrusion Detection/Prevention System):

Ini macam β€œCCTV digital” untuk rangkaian anda. Dia detect kalau ada aktiviti mencurigakan:

# Suricata pada pfSense/OPNsense
# Navigasi ke: Services β†’ Suricata/Snort
# Aktifkan pada antara muka WAN
# Muat turun set peraturan (ET Open, Snort Community)

Nota Beginner: Kalau anda guna Unifi, router Unifi pun ada basic firewall. Pastikan anda dah configure peraturan asas di situ. Kalau anda guna pfSense atau OPNsense, lagi bagus β€” lebih banyak kawalan.

Lapisan 2: Rangkaian

Segmentasi VLAN β€” Asingkan Peranti Mengikut Tahap Kepercayaan:

Bayangkan smart TV anda kena hack. Kalau semua peranti dalam satu rangkaian yang sama, penyerang boleh terus β€œjump” ke NAS atau server anda. Tapi kalau anda guna VLAN, smart TV tu terkurung dalam segmen IoT dan tak boleh akses server.

VLAN 10 - Pengurusan:  Akses admin sahaja
VLAN 20 - Pelayan:     VM dan kontena
VLAN 30 - IoT:         Peranti pintar (terhad)
VLAN 40 - Tetamu:      WiFi tetamu (internet sahaja)

Peraturan antara VLAN:

IoT β†’ Pelayan:    SEKAT (kecuali port tertentu)
IoT β†’ Internet:   BENARKAN
Tetamu β†’ Semua:   SEKAT (kecuali internet)
Pengurusan β†’ Semua: BENARKAN

Lapisan 3: Host (Pelayan)

Kemas kini sistem β€” Ini benda paling basic tapi ramai yang lupa:

# Ubuntu/Debian - kemas kini automatik
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

# Konfigurasi /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    "${distro_id}:${distro_codename}-updates";
};
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

Fail2ban β€” Perlindungan brute force:

Fail2ban memantau log dan automatik ban IP yang cuba login berulang kali. Ini wajib ada kalau SSH anda terbuka:

# Pasang Fail2ban
sudo apt install fail2ban -y

# Konfigurasi /etc/fail2ban/jail.local
[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 24h
# Mulakan Fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Periksa status β€” anda akan nampak berapa IP yang dah kena ban
sudo fail2ban-client status sshd

CrowdSec β€” Alternatif moden kepada Fail2ban:

CrowdSec ni macam Fail2ban tapi dengan β€œkecerdasan kolektif.” Kalau satu IP jahat kena detect oleh pengguna CrowdSec lain di seluruh dunia, IP tu akan disekat untuk anda juga. Macam community-powered security:

# Pasang CrowdSec
curl -s https://install.crowdsec.net | sudo bash
sudo apt install crowdsec crowdsec-firewall-bouncer-iptables -y

# CrowdSec menggunakan kecerdasan kolektif -
# ia berkongsi IP berniat jahat dengan komuniti

Lapisan 4: Aplikasi

Pengesahan berbilang faktor (2FA/MFA):

2FA ni macam kunci tambahan. Walaupun seseorang tahu password anda, mereka masih tak boleh masuk tanpa kod dari telefon anda. Aktifkan 2FA di mana sahaja yang mungkin:

  • Proxmox (TOTP)
  • Nextcloud (TOTP)
  • Gitea (TOTP)
  • Vaultwarden (TOTP)
  • SSH (menggunakan Google Authenticator PAM)

Konfigurasi 2FA untuk SSH:

# Pasang Google Authenticator
sudo apt install libpam-google-authenticator -y

# Jalankan setup
google-authenticator

# Edit /etc/pam.d/sshd - tambah:
auth required pam_google_authenticator.so

# Edit /etc/ssh/sshd_config:
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

# Mulakan semula SSH
sudo systemctl restart sshd

Nota Beginner: Sebelum aktifkan 2FA untuk SSH, pastikan anda ada akses lain ke server (contoh: akses konsol Proxmox atau IPMI). Kalau tak, dan 2FA ada masalah, anda boleh terkunci dari server sendiri!

Langkah 3: Pengurusan Kata Laluan

Vaultwarden

β€œSaya guna password yang sama untuk semua service” β€” kalau ini anda, tolong berhenti sekarang.

Vaultwarden adalah pelaksanaan pelayan Bitwarden yang ringan. Ia membolehkan anda mengurus semua kata laluan dengan selamat, dan anda boleh host sendiri dalam homelab.

Amalan terbaik kata laluan:

  1. Gunakan kata laluan unik untuk setiap perkhidmatan β€” setiap satu!
  2. Minimum 16 aksara
  3. Gunakan penjana kata laluan (jangan cipta sendiri, manusia tak pandai buat random)
  4. Aktifkan 2FA untuk vault anda
  5. Backup vault secara berkala β€” kalau Vaultwarden down, anda masih ada akses

Langkah 4: Enkripsi

SSL/TLS untuk Semua Perkhidmatan

Jangan sesekali akses perkhidmatan homelab melalui HTTP biasa. Walaupun dalam rangkaian dalaman, biasakan guna HTTPS. Kenapa? Sebab data yang travel melalui HTTP boleh dibaca oleh sesiapa sahaja dalam rangkaian yang sama.

Let’s Encrypt dengan Nginx Proxy Manager (cara paling senang):

  1. Tambah Proxy Host di Nginx Proxy Manager
  2. Tab SSL β†’ Request new SSL certificate
  3. Pilih Let’s Encrypt
  4. Aktifkan Force SSL

Let’s Encrypt dengan Traefik (lebih automated):

# traefik.yml
certificatesResolvers:
  letsencrypt:
    acme:
      email: admin@domain-anda.com
      storage: /acme.json
      httpChallenge:
        entryPoint: web

entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
  websecure:
    address: ":443"

Enkripsi Storan

Kalau anda risau tentang data fizikal (contoh: laptop dicuri), enkripsi cakera penuh dengan LUKS:

# Enkripsi cakera penuh dengan LUKS
sudo cryptsetup luksFormat /dev/sdb
sudo cryptsetup open /dev/sdb encrypted-data
sudo mkfs.ext4 /dev/mapper/encrypted-data

Langkah 5: Pemantauan Keselamatan

Wazuh β€” SIEM Sumber Terbuka

Wazuh macam β€œsecurity guard digital” yang sentiasa memantau homelab anda. Ia boleh detect ancaman, pantau integriti fail (ada sesiapa ubah fail config?), dan banyak lagi:

  • Pengesanan ancaman
  • Pemantauan integriti fail
  • Penilaian kerentanan
  • Pematuhan peraturan
# docker-compose.yml untuk Wazuh
services:
  wazuh.manager:
    image: wazuh/wazuh-manager:latest
    container_name: wazuh-manager
    ports:
      - "1514:1514"
      - "1515:1515"
      - "514:514/udp"
      - "55000:55000"
    volumes:
      - ./wazuh-data:/var/ossec/data
    restart: unless-stopped

Log Berpusat

Ini tip yang saya rasa sangat berguna: kumpulkan log dari semua pelayan ke satu lokasi. Bila ada masalah, anda tak perlu SSH ke setiap server satu-satu untuk check log:

# Menggunakan rsyslog
# Pada pelayan log (/etc/rsyslog.conf):
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

# Pada pelayan klien (/etc/rsyslog.d/50-remote.conf):
*.* @@10.0.20.30:514

Langkah 6: DNS Selamat

Pi-hole + DNS Selamat

Pi-hole bukan sekadar ad blocker. Ia juga lapisan keselamatan yang berkesan. Dengan Pi-hole, anda boleh sekat:

  • Iklan dan penjejak (privacy!)
  • Domain malware yang diketahui
  • Telemetri yang tidak diingini

Senarai sekat tambahan untuk perlindungan lebih:

# Di Pi-hole β†’ Adlists, tambah:
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/pro.txt

Nota Beginner: Pi-hole ni salah satu projek homelab yang paling β€œworth it.” Setup sekali, semua peranti dalam rumah anda dilindungi. Malah keluarga anda pun akan perasan sebab iklan kurang.

Langkah 7: VPN dan Akses Jauh

Peraturan Akses Jauh

Ini peraturan emas yang saya cadangkan anda ikut:

  1. JANGAN dedahkan perkhidmatan terus ke internet β€” ini kesilapan yang paling biasa
  2. Gunakan VPN (WireGuard) untuk semua akses jauh
  3. Kalau memang perlu, gunakan reverse proxy dengan pengesahan
  4. Hadkan port yang dibuka melalui Port Forward ke tahap minimum

Cadangan Seni Bina Akses

Internet β†’ Firewall β†’ VPN (WireGuard)
                          ↓
                    Rangkaian Dalaman
                    ↓         ↓        ↓
                 Pelayan    NAS     Peranti

Dengan setup macam ni, semua akses dari luar mesti melalui VPN dulu. Lebih selamat, dan anda tak perlu buka banyak port.

Langkah 8: Senarai Semak Keselamatan

Keselamatan bukan benda yang anda β€œset and forget.” Ia perlu penyelenggaraan berkala. Ini jadual yang saya cadangkan:

Senarai semak mingguan:

Senarai semak bulanan:

Senarai semak suku tahunan:

Checklist Siap Bab Ini

Ringkasan

Bab keselamatan ni memang panjang, tapi setiap bahagian ada sebabnya. Jom recap:

  • Model keselamatan berlapis β€” defense in depth, jangan bergantung pada satu lapisan je
  • Firewall dan IDS/IPS β€” barisan pertahanan pertama
  • Segmentasi rangkaian dengan VLAN β€” asingkan peranti mengikut kepercayaan
  • Pengerasan host β€” Fail2ban/CrowdSec, kemas kini automatik, 2FA
  • Pengurusan kata laluan β€” Vaultwarden, kata laluan unik untuk setiap service
  • Enkripsi β€” SSL/TLS untuk semua, LUKS untuk storan
  • Pemantauan keselamatan β€” Wazuh, log berpusat
  • Senarai semak berkala β€” keselamatan adalah proses, bukan destinasi

Ingat, anda tak perlu buat semua sekaligus. Mulakan dengan asas (update, firewall, kata laluan kuat, backup), kemudian tambah lapisan demi lapisan. Yang penting, mulakan sekarang.

Seterusnya, kita akan masuk ke topik keselamatan lanjutan untuk anda yang nak pergi lebih jauh.

Bab 9: Keselamatan Lanjutan dan Amalan Terbaik

Kitaran Keselamatan Homelab Keselamatan ialah kitaran hardening, pemantauan, backup, dan respons insiden Hardening SSH, UFW, sysctl, AppArmor Pemantauan Lynis, Wazuh, log, alert Backup Restic, config backup, verify restore Respons Insiden Asingkan, nilai, pulih, dokumentasi Kurangkan risiko
Kitaran keselamatan homelab

Okay, kalau anda dah sampai bab ni, maknanya anda dah buat asas keselamatan dari bab sebelumnya. Bagus! Sekarang kita nak naik level satu tahap lagi.

Bab ni akan cover hardening yang lebih mendalam, audit keselamatan, SSL dalaman, dan yang paling penting β€” apa nak buat kalau homelab anda benar-benar kena hack. Saya harap anda tak perlukan bahagian incident response tu, tapi lebih baik sedia payung sebelum hujan.

Apa yang anda akan belajar:

  • Amalan Linux Hardening, audit, SSL dalaman, dan incident response
  • Cara naik taraf tahap keselamatan tanpa ganggu operasi homelab
  • Cara tambah kawalan keselamatan lanjutan secara terancang

Nota Beginner: Hardening yang terlalu agresif boleh menyebabkan anda lock diri sendiri. Dalam homelab, keselamatan perlu seimbang dengan kebolehselenggaraan. Jangan sampai server anda β€œterlalu selamat” sehingga anda sendiri tak boleh masuk!

Laluan Paling Mudah untuk Beginner

  • Hardening hanya berguna kalau anda masih boleh masuk semula ke server selepas ubah config.
  • WAJIB simpan akses konsol atau IPMI sebelum ubah SSH, firewall, atau user policy.
  • Pilih satu amalan hardening, uji, dokumentasikan, kemudian baru teruskan ke yang seterusnya. Satu masa satu perubahan.

Langkah 1: Pengerasan Linux (Linux Hardening)

Pengerasan SSH

SSH adalah sasaran utama penyerang. Saya pernah tengok log server yang baru online 5 minit β€” dah ada ratusan percubaan brute force. Jadi, pastikan SSH anda dikonfigurasikan dengan selamat:

# /etc/ssh/sshd_config - Konfigurasi disyorkan

# Lumpuhkan log masuk root
PermitRootLogin no

# Hanya benarkan pengesahan kunci
PasswordAuthentication no
PubkeyAuthentication yes

# Tukar port SSH (keselamatan melalui kekaburan)
Port 2222

# Hadkan pengguna yang boleh log masuk
AllowUsers admin

# Tetapkan masa tamat
ClientAliveInterval 300
ClientAliveCountMax 2

# Lumpuhkan pemajuan X11
X11Forwarding no

# Lumpuhkan pemajuan TCP (melainkan perlu)
AllowTcpForwarding no

# Gunakan protokol 2 sahaja
Protocol 2

# Hadkan percubaan pengesahan
MaxAuthTries 3

# Lumpuhkan kata laluan kosong
PermitEmptyPasswords no
# Mulakan semula SSH
sudo systemctl restart sshd

# PENTING: Pastikan anda mempunyai akses konsol (IPMI/KVM)
# sebelum menukar konfigurasi SSH, sekiranya anda terkunci!

Nota Beginner: Sebelum restart SSH, buka satu terminal lain dan pastikan anda boleh SSH dengan setting baru. Jangan tutup terminal lama dulu! Kalau setting baru ada masalah, anda masih ada terminal lama yang connected.

Konfigurasi Firewall Mendalam (UFW)

UFW (Uncomplicated Firewall) memang betul-betul uncomplicated. Tapi jangan pandang rendah β€” ia sangat berkesan:

# Tetapan lalai
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw default deny routed

# Benarkan perkhidmatan tertentu sahaja
sudo ufw allow from 10.0.0.0/24 to any port 22    # SSH dari LAN sahaja
sudo ufw allow from 10.0.0.0/24 to any port 8006  # Proxmox dari LAN sahaja
sudo ufw allow 80/tcp    # HTTP (untuk Let's Encrypt)
sudo ufw allow 443/tcp   # HTTPS

# Hadkan kadar (rate limiting) untuk SSH
sudo ufw limit ssh

# Aktifkan logging
sudo ufw logging on

# Aktifkan firewall
sudo ufw enable

# Semak status
sudo ufw status verbose

AppArmor dan SELinux

AppArmor (Ubuntu/Debian) β€” biasanya dah aktif secara default:

# Periksa status AppArmor
sudo apparmor_status

# Senarai profil
sudo aa-status

# AppArmor biasanya sudah aktif pada Ubuntu
# Ia mengehadkan keupayaan aplikasi individu

Pengerasan Kernel β€” Tambahan yang saya cadangkan:

Ini setting sysctl yang boleh kuatkan keselamatan di peringkat kernel. Copy paste je, tapi pastikan anda faham setiap baris:

# /etc/sysctl.conf - Pengerasan kernel

# Cegah serangan spoofing IP
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Abaikan permintaan ICMP broadcast
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Lumpuhkan pemajuan IP (melainkan sebagai router)
net.ipv4.ip_forward = 0

# Cegah serangan SYN flood
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048

# Log paket martian (paket dengan alamat sumber yang tak masuk akal)
net.ipv4.conf.all.log_martians = 1

# Lumpuhkan redirect ICMP
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

# Aplikasikan tetapan
sudo sysctl -p

Nota Beginner: Kalau anda guna server sebagai router atau VPN gateway, JANGAN lumpuhkan ip_forward. Anda perlukan ia untuk routing. Setting ni hanya untuk server biasa.

Pengurusan Pengguna dan Kebenaran

Jangan sesekali guna root untuk kerja harian. Cipta pengguna admin yang berasingan:

# Cipta pengguna bukan root untuk pengurusan
sudo adduser admin
sudo usermod -aG sudo admin

# Tetapkan dasar kata laluan
sudo apt install libpam-pwquality -y

# /etc/security/pwquality.conf
minlen = 12
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1

Langkah 2: Audit dan Pematuhan Keselamatan

Lynis β€” Audit Keselamatan

Anda dah buat semua hardening tadi, tapi macam mana nak tahu kalau cukup? Lynis akan scan sistem anda dan bagi skor:

# Pasang Lynis
sudo apt install lynis -y

# Jalankan audit penuh
sudo lynis audit system

# Contoh output:
# Hardening index : 72 [##############      ]
# Tests performed : 256
# Warnings        : 3
# Suggestions     : 15

Saya cadangkan sasarkan skor 70+ untuk permulaan. Jangan obsess nak dapat 100 β€” tu memang tak realistik untuk homelab.

Kategori yang diperiksa oleh Lynis: - Konfigurasi kernel - Pengurusan pengguna dan kumpulan - Sistem fail dan kebenaran - Perkhidmatan rangkaian - Konfigurasi firewall - Kemas kini perisian - Konfigurasi SSH - Dan banyak lagi

OpenVAS β€” Imbasan Kerentanan

OpenVAS (kini Greenbone) mengimbas rangkaian anda untuk kerentanan yang diketahui. Macam β€œpen test” automatik untuk homelab anda:

services:
  openvas:
    image: greenbone/openvas-scanner:latest
    container_name: openvas
    ports:
      - "9392:9392"
    volumes:
      - openvas-data:/var/lib/openvas
    restart: unless-stopped

volumes:
  openvas-data:

Nota Beginner: Jalankan imbasan kerentanan hanya pada rangkaian yang anda miliki. Mengimbas rangkaian tanpa kebenaran adalah menyalahi undang-undang. Dalam homelab, scan rangkaian sendiri je.

Langkah 3: Pengurusan Sijil SSL/TLS

Memahami Sijil SSL

Ini jenis-jenis sijil yang anda perlu tahu:

Jenis Sijil:
1. Self-signed    β€” Percuma, amaran pelayar, untuk dalaman sahaja
2. Let's Encrypt  β€” Percuma, dipercayai, perlu domain awam
3. Wildcard       β€” Satu sijil untuk *.domain.com
4. CA peribadi    β€” Untuk rangkaian dalaman tanpa amaran

Mencipta CA Peribadi

Untuk perkhidmatan dalaman yang tidak mempunyai domain awam, anda boleh jadi β€œCA” sendiri. Semua peranti yang install sijil CA anda akan trust sijil-sijil yang anda keluarkan:

# Cipta CA (Certificate Authority) peribadi
mkdir -p ~/ssl && cd ~/ssl

# Cipta kunci peribadi CA
openssl genrsa -out ca-key.pem 4096

# Cipta sijil CA
openssl req -new -x509 -sha256 -key ca-key.pem \
  -out ca-cert.pem -days 3650 \
  -subj "/CN=Homelab CA/O=Homelab/C=MY"

# Cipta sijil untuk perkhidmatan
openssl genrsa -out server-key.pem 2048

openssl req -new -key server-key.pem \
  -out server.csr \
  -subj "/CN=*.lab.local/O=Homelab/C=MY"

# Tanda sijil dengan CA
openssl x509 -req -sha256 \
  -in server.csr \
  -CA ca-cert.pem -CAkey ca-key.pem \
  -CAcreateserial -out server-cert.pem \
  -days 365 \
  -extfile <(printf "subjectAltName=DNS:*.lab.local,DNS:lab.local")

Pasang sijil CA pada peranti supaya tak ada amaran β€œNot Secure”: - Windows: Import ca-cert.pem ke Trusted Root CAs - macOS: Import ke Keychain β†’ System β†’ Always Trust - Linux: Salin ke /usr/local/share/ca-certificates/ β†’ update-ca-certificates - Android/iOS: Import melalui tetapan keselamatan

Nota Beginner: Proses ni nampak complicated, tapi anda hanya perlu buat sekali. Selepas tu, semua service dalaman anda boleh guna HTTPS tanpa amaran pelayar.

Langkah 4: Strategi Backup Keselamatan

Backup Disulitkan

Backup pun kena protect. Bayangkan kalau seseorang dapat akses ke backup drive anda β€” semua data anda terdedah. Restic menyulitkan backup secara lalai, jadi anda dah selamat:

# Restic menyulitkan backup secara lalai
# Pastikan kata laluan repositori disimpan dengan selamat

export RESTIC_REPOSITORY="/mnt/backup/encrypted"
export RESTIC_PASSWORD="kata_laluan_sangat_panjang_dan_rawak"

# Cipta repositori
restic init

# Backup
restic backup /data/penting

# Sahkan integriti backup
restic check

Backup Konfigurasi Keselamatan

Ini skrip yang saya guna untuk backup semua config keselamatan. Kalau perlu rebuild server, semua setting dah ada:

#!/bin/bash
# backup-security-configs.sh
BACKUP_DIR="/mnt/backup/security"
DATE=$(date +%Y%m%d)

mkdir -p "$BACKUP_DIR/$DATE"

# Backup konfigurasi penting
cp /etc/ssh/sshd_config "$BACKUP_DIR/$DATE/"
cp /etc/fail2ban/jail.local "$BACKUP_DIR/$DATE/"
cp -r /etc/ufw "$BACKUP_DIR/$DATE/"
cp /etc/sysctl.conf "$BACKUP_DIR/$DATE/"

# Senarai pengguna dan kumpulan
getent passwd > "$BACKUP_DIR/$DATE/passwd.bak"
getent group > "$BACKUP_DIR/$DATE/group.bak"

# Peraturan firewall
iptables-save > "$BACKUP_DIR/$DATE/iptables.rules"

echo "Backup keselamatan selesai: $DATE"

Langkah 5: Pelan Tindak Balas Insiden

Apabila Homelab Anda Dikompromi

Saya harap anda tak perlukan bahagian ni. Tapi kalau anda mengesyaki homelab anda telah dikompromi, ikut langkah-langkah ini. Jangan panik β€” panik buat keputusan jadi lebih teruk.

Langkah 1: Jangan Panik, Dokumentasikan - Tulis apa yang anda perhatikan - Catat masa dan tarikh - Screenshot kalau boleh

Langkah 2: Asingkan β€” Potong Akses Internet

# Putuskan sambungan dari internet (di firewall)
# JANGAN padamkan kuasa β€” bukti dalam RAM akan hilang

Langkah 3: Nilai Kerosakan

# Periksa pengguna yang log masuk
who
last
lastlog

# Periksa proses mencurigakan
ps auxf
netstat -tunapl

# Periksa fail yang baru diubah suai
find / -mtime -1 -type f 2>/dev/null

# Periksa crontab untuk semua pengguna
for user in $(cut -f1 -d: /etc/passwd); do
  crontab -l -u "$user" 2>/dev/null
done

# Periksa kunci SSH yang tidak dikenali
cat ~/.ssh/authorized_keys

Langkah 4: Bersihkan dan Pulihkan - Pulihkan dari backup yang bersih (sebab tu backup penting!) - Tukar SEMUA kata laluan β€” semua, tanpa pengecualian - Kemas kini semua perisian - Semak dan perketatkan peraturan firewall

Langkah 5: Belajar dari Insiden - Kenal pasti bagaimana pencerobohan berlaku - Perkuatkan kawalan keselamatan di bahagian yang lemah - Dokumentasikan insiden dan penyelesaian β€” supaya tak berulang

Nota Beginner: Kalau anda rasa homelab anda kena hack, perkara pertama yang perlu dibuat ialah cabut kabel internet dari router. Ini halang penyerang daripada terus akses dan halang data daripada terus bocor.

Langkah 6: Pemantauan Keselamatan Berterusan

Ini skrip yang anda boleh jalankan setiap hari secara automatik. Ia akan check beberapa perkara penting dan hantar laporan:

Skrip Semakan Harian (Automatik)

#!/bin/bash
# daily-security-check.sh
# Jalankan melalui cron setiap hari

REPORT=""

# Periksa kemas kini keselamatan
UPDATES=$(apt list --upgradable 2>/dev/null | grep -c security)
REPORT+="Kemas kini keselamatan tertunda: $UPDATES\n"

# Periksa log masuk gagal
FAILED=$(grep "Failed password" /var/log/auth.log | wc -l)
REPORT+="Percubaan log masuk gagal: $FAILED\n"

# Periksa penggunaan cakera
DISK=$(df / | awk 'NR==2 {print $5}')
REPORT+="Penggunaan cakera /: $DISK\n"

# Periksa perkhidmatan Docker
DOWN=$(docker ps --filter "status=exited" --format "{{.Names}}" | tr '\n' ', ')
REPORT+="Kontena tidak aktif: ${DOWN:-Tiada}\n"

# Periksa sijil SSL
EXPIRY=$(echo | openssl s_client -connect localhost:443 2>/dev/null | \
  openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)
REPORT+="Sijil SSL tamat: $EXPIRY\n"

# Hantar laporan
echo -e "$REPORT" | curl -d @- http://ntfy.lab.local/security-report

Langkah 7: Keselamatan Fizikal

Ramai orang lupa bab ni. Apa guna hardening SSH kalau seseorang boleh cabut hard disk anda dan bawa balik rumah?

Perlindungan Fizikal

1. Lokasi selamat
   - Bilik berkunci jika boleh
   - Jauh dari kawasan lalu lintas tinggi

2. BIOS/UEFI
   - Tetapkan kata laluan BIOS
   - Lumpuhkan boot dari USB/CD

3. Penyulitan cakera penuh
   - LUKS untuk Linux
   - BitLocker untuk Windows
   - Melindungi data jika perkakasan dicuri

4. Label dan inventori
   - Senarai semua perkakasan
   - Nombor siri dicatat
   - Foto setup untuk dokumentasi

Nota Beginner: Kalau homelab anda di bilik tidur, keselamatan fizikal mungkin bukan isu besar. Tapi kalau anda simpan data sensitif, sekurang-kurangnya pastikan cakera dienkripsi dengan LUKS.

Checklist Siap Bab Ini

Ringkasan

Bab keselamatan lanjutan ni memang berat sikit, tapi anda dah sampai penghujung. Tahniah! Jom recap:

  • Pengerasan SSH, firewall, dan kernel Linux β€” kuatkan barisan pertahanan
  • Audit keselamatan dengan Lynis dan OpenVAS β€” tahu di mana kelemahan anda
  • Pengurusan sijil SSL/TLS dan CA peribadi β€” HTTPS untuk semua, termasuk service dalaman
  • Backup disulitkan β€” lindungi data walaupun backup jatuh ke tangan salah
  • Pelan tindak balas insiden β€” sedia sebelum diperlukan
  • Pemantauan keselamatan berterusan β€” automatikkan semakan harian
  • Keselamatan fizikal β€” jangan lupa dunia nyata

Keselamatan adalah perjalanan, bukan destinasi. Tak ada satu hari pun anda boleh kata β€œdah selamat 100%.” Tapi dengan asas yang kukuh dan pemantauan yang konsisten, homelab anda akan jauh lebih selamat daripada kebanyakan setup di luar sana.

Seterusnya, kita akan masuk ke automasi dan pemantauan β€” bab yang akan buat hidup anda jauh lebih senang!

Bab 10: Automasi dan Pemantauan

Saya nak tanya anda satu soalan: berapa kali anda SSH ke server untuk buat benda yang sama? Update pakej, check disk space, restart service… Kalau jawapannya β€œbanyak kali,” maka bab ini untuk anda.

Homelab yang baik tidak patut bergantung pada ingatan anda semata-mata. Anda tak sepatutnya kena β€œcheck sana sini” secara manual setiap hari. Bila automasi dan monitoring disusun dengan betul, homelab jadi lebih tenang untuk diurus, dan bila masalah berlaku, anda lebih cepat tahu puncanya.

Apa yang anda akan belajar:

  • Cara guna Ansible untuk automasi kerja berulang
  • Cara setup Prometheus + Grafana untuk pemantauan
  • Cara configure alerting supaya anda tahu bila ada masalah
  • Pengurusan log dengan Loki

Nota Beginner: Tujuan automasi bukan untuk nampak canggih atau impress orang. Tujuannya ialah kurangkan kerja berulang dan kurangkan risiko anda terlupa langkah penting. Kalau anda boleh automate backup dan update, itu dah cukup bagus untuk permulaan.

Laluan Paling Mudah untuk Beginner

  • Automasi satu kerja berulang dahulu β€” contohnya update atau backup. Jangan cuba automate semua sekaligus.
  • Pantau uptime dan penggunaan resource asas sebelum masuk ke dashboard yang terlalu kompleks.
  • Pastikan alert dihantar ke saluran yang anda benar-benar semak setiap hari. Alert yang tak dibaca sama je macam takde.

Langkah 1: Gambaran Besar

Bayangkan scenario ni: tengah malam, cakera salah satu server anda dah 95% penuh. Tanpa monitoring, anda hanya akan tahu bila service mula crash esok pagi. Dengan monitoring, anda dapat alert malam tadi dan boleh selesaikan sebelum jadi masalah besar.

Itulah kuasa automasi dan pemantauan β€” anda tidur lena, homelab jaga diri sendiri.

Stack Pemantauan Homelab Sumber Data Pelayan Linux Kontena Docker Peranti Rangkaian Aplikasi Web Sensor IoT Pengumpulan Node Exporter Metrik Sistem cAdvisor Metrik Kontena Promtail Log Pengumpul Storan Prometheus Pangkalan Data Metrik Siri Masa (TSDB) Loki Pangkalan Data Log Agregasi Log Grafana Papan Pemuka Visualisasi Amaran (Alerting) Alertmanager Email | Telegram | Discord Ntfy | Gotify
Stack Pemantauan Homelab

Langkah 2: Mulakan Automasi dengan Ansible

Apa Itu Ansible?

Ansible adalah alat automasi IT yang membolehkan anda mengurus banyak pelayan dari satu tempat. Yang best tentang Ansible:

  • Guna SSH β€” tak perlu install apa-apa β€œagent” pada server yang diuruskan
  • Fail konfigurasi dalam format YAML β€” senang dibaca
  • Idempotent β€” jalankan berapa kali pun, hasilnya sama

Pemasangan Ansible

# Pasang Ansible
sudo apt install ansible -y

# Atau menggunakan pip
pip3 install ansible

Struktur Projek Ansible

Ini struktur folder yang saya cadangkan. Nampak banyak, tapi sebenarnya straightforward:

ansible/
β”œβ”€β”€ inventory/
β”‚   └── hosts.yml
β”œβ”€β”€ playbooks/
β”‚   β”œβ”€β”€ setup-common.yml
β”‚   β”œβ”€β”€ setup-docker.yml
β”‚   β”œβ”€β”€ update-all.yml
β”‚   └── backup.yml
β”œβ”€β”€ roles/
β”‚   β”œβ”€β”€ common/
β”‚   β”œβ”€β”€ docker/
β”‚   └── monitoring/
└── ansible.cfg

Fail Inventory

Inventory ni macam β€œsenarai telefon” server anda. Ansible perlu tahu server mana nak diuruskan:

# inventory/hosts.yml
all:
  children:
    proxmox:
      hosts:
        pve:
          ansible_host: 10.0.20.10
          ansible_user: root
    docker_hosts:
      hosts:
        docker1:
          ansible_host: 10.0.20.20
          ansible_user: admin
    nas:
      hosts:
        truenas:
          ansible_host: 10.0.0.10
          ansible_user: admin
  vars:
    ansible_python_interpreter: /usr/bin/python3

Playbook: Konfigurasi Asas

Playbook ni macam β€œresipi” β€” anda tulis sekali, jalankan berkali-kali. Ini contoh playbook untuk setup asas semua server:

# playbooks/setup-common.yml
---
- name: Konfigurasi asas untuk semua pelayan
  hosts: all
  become: yes
  tasks:
    - name: Kemas kini senarai pakej
      apt:
        update_cache: yes
        cache_valid_time: 3600

    - name: Naik taraf semua pakej
      apt:
        upgrade: dist

    - name: Pasang pakej asas
      apt:
        name:
          - curl
          - wget
          - git
          - htop
          - net-tools
          - ufw
          - fail2ban
          - unattended-upgrades
        state: present

    - name: Konfigurasi UFW - default deny
      ufw:
        direction: incoming
        policy: deny

    - name: Konfigurasi UFW - benarkan SSH
      ufw:
        rule: allow
        port: "22"
        proto: tcp

    - name: Aktifkan UFW
      ufw:
        state: enabled

    - name: Konfigurasi zon masa
      timezone:
        name: Asia/Kuala_Lumpur

    - name: Aktifkan kemas kini automatik
      apt:
        name: unattended-upgrades
        state: present

Nota Beginner: Perhatikan betapa mudahnya YAML dibaca. Setiap task ada name yang jelas. Kalau playbook ini gagal, anda boleh nampak terus task mana yang bermasalah.

Playbook: Kemas Kini Semua Pelayan

Ini playbook yang saya paling kerap guna. Satu command, semua server dikemas kini:

# playbooks/update-all.yml
---
- name: Kemas kini semua pelayan
  hosts: all
  become: yes
  serial: 1  # Kemas kini satu pelayan pada satu masa
  tasks:
    - name: Kemas kini senarai pakej
      apt:
        update_cache: yes

    - name: Naik taraf semua pakej
      apt:
        upgrade: dist
      register: upgrade_result

    - name: Periksa jika reboot diperlukan
      stat:
        path: /var/run/reboot-required
      register: reboot_required

    - name: Reboot jika perlu
      reboot:
        msg: "Reboot diperlukan selepas kemas kini"
        reboot_timeout: 300
      when: reboot_required.stat.exists

    - name: Kemas kini kontena Docker
      shell: |
        cd /opt/docker && \
        docker compose pull && \
        docker compose up -d
      when: "'docker_hosts' in group_names"

Menjalankan playbook:

# Jalankan playbook
ansible-playbook -i inventory/hosts.yml playbooks/update-all.yml

# Dry run (uji tanpa melaksanakan) β€” saya SANGAT cadangkan buat ni dulu
ansible-playbook -i inventory/hosts.yml playbooks/update-all.yml --check

# Untuk host tertentu sahaja
ansible-playbook -i inventory/hosts.yml playbooks/update-all.yml --limit docker1

Automasi dengan Cron + Ansible

Nak lagi automated? Schedule playbook dengan cron:

# Kemas kini mingguan automatik
# crontab -e
0 3 * * 0 ansible-playbook -i /opt/ansible/inventory/hosts.yml \
  /opt/ansible/playbooks/update-all.yml >> /var/log/ansible-update.log 2>&1

Langkah 3: Bina Stack Pemantauan

Okay, sekarang bahagian yang paling seronok β€” monitoring! Anda akan nampak graf-graf cantik tentang homelab anda.

Prometheus + Grafana

Ini combo yang paling popular untuk homelab monitoring:

  • Prometheus β€” Mengumpul dan menyimpan metrik (data angka macam CPU usage, disk space, dll.)
  • Grafana β€” Visualisasi data dalam papan pemuka yang cantik
# docker-compose.yml - Stack Pemantauan
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus-data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.retention.time=30d'
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana
    environment:
      GF_SECURITY_ADMIN_PASSWORD: kata_laluan_admin
      GF_INSTALL_PLUGINS: grafana-clock-panel,grafana-piechart-panel
    restart: unless-stopped

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    ports:
      - "9100:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--path.rootfs=/rootfs'
    restart: unless-stopped

  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    container_name: cadvisor
    ports:
      - "8082:8080"
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    restart: unless-stopped

volumes:
  prometheus-data:
  grafana-data:

Konfigurasi Prometheus:

# prometheus/prometheus.yml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node-exporter'
    static_configs:
      - targets:
          - 'node-exporter:9100'
          - '10.0.20.20:9100'
          - '10.0.20.21:9100'

  - job_name: 'cadvisor'
    static_configs:
      - targets: ['cadvisor:8080']

  - job_name: 'proxmox'
    static_configs:
      - targets: ['10.0.20.10:9221']

Nota Beginner: Jangan risau kalau konfigurasi ni nampak banyak. Copy paste je dulu, tukar IP address kepada IP server anda, dan jalankan. Anda boleh fine-tune kemudian.

Papan Pemuka Grafana

Setelah Grafana berjalan, anda tak perlu buat dashboard dari kosong. Import je yang dah sedia ada:

  1. Log masuk ke http://pelayan:3000
  2. Tambah Prometheus sebagai data source
  3. Import papan pemuka popular:
    • Node Exporter Full (ID: 1860) β€” papan pemuka server yang komprehensif
    • Docker Dashboard (ID: 893) β€” untuk pantau kontena
    • Proxmox VE (ID: 10347) β€” kalau anda guna Proxmox

Percayalah, pertama kali anda nampak graf CPU, RAM, dan network usage homelab anda, memang satisfying!

Sistem Amaran (Alerting)

Dashboard cantik tak berguna kalau anda tak tengok. Jadi, setup alerting supaya homelab beritahu anda bila ada masalah:

Alertmanager:

# Tambah ke docker-compose.yml
  alertmanager:
    image: prom/alertmanager:latest
    container_name: alertmanager
    ports:
      - "9093:9093"
    volumes:
      - ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
    restart: unless-stopped
# alertmanager/alertmanager.yml
global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'telegram'

receivers:
  - name: 'telegram'
    telegram_configs:
      - bot_token: 'TOKEN_BOT_ANDA'
        chat_id: 123456789
        message: |
          {{ range .Alerts }}
          *{{ .Labels.alertname }}*
          {{ .Annotations.description }}
          {{ end }}

Peraturan amaran Prometheus β€” beritahu anda bila ada masalah:

# prometheus/alert-rules.yml
groups:
  - name: homelab-alerts
    rules:
      - alert: HostHighCpuLoad
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          description: "CPU pada {{ $labels.instance }} melebihi 80% selama 5 minit"

      - alert: HostOutOfMemory
        expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10
        for: 2m
        labels:
          severity: critical
        annotations:
          description: "RAM pada {{ $labels.instance }} kurang daripada 10%"

      - alert: HostOutOfDiskSpace
        expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100) < 15
        for: 5m
        labels:
          severity: warning
        annotations:
          description: "Storan pada {{ $labels.instance }} kurang daripada 15%"

      - alert: ContainerDown
        expr: absent(container_last_seen{name=~".+"})
        for: 5m
        labels:
          severity: critical
        annotations:
          description: "Kontena {{ $labels.name }} telah berhenti"

Ntfy β€” Pemberitahuan Ringan

Kalau anda tak mahu setup Telegram bot, Ntfy adalah alternatif yang super simple. Install app Ntfy pada telefon, subscribe ke topic, dan anda akan dapat push notification:

services:
  ntfy:
    image: binwiederhier/ntfy:latest
    container_name: ntfy
    ports:
      - "8084:80"
    volumes:
      - ./ntfy/cache:/var/cache/ntfy
    command: serve
    restart: unless-stopped

Menghantar pemberitahuan semudah satu baris curl:

# Dari skrip backup
curl -d "Backup selesai pada $(date)" \
  http://ntfy.lab.local/homelab-alerts

Nota Beginner: Saya cadangkan mulakan dengan Ntfy sebab ia paling mudah. Nanti bila anda dah selesa, boleh upgrade ke Alertmanager + Telegram untuk alert yang lebih structured.

Langkah 4: Pengurusan Log

Log adalah β€œblack box” homelab anda. Bila ada masalah, log adalah tempat pertama anda cari jawapan.

Loki + Promtail

Loki adalah sistem agregasi log yang ringan oleh Grafana Labs. Ia collect log dari semua server dan anda boleh cari/filter dari satu tempat β€” Grafana:

services:
  loki:
    image: grafana/loki:latest
    container_name: loki
    ports:
      - "3100:3100"
    volumes:
      - loki-data:/loki
    restart: unless-stopped

  promtail:
    image: grafana/promtail:latest
    container_name: promtail
    volumes:
      - ./promtail/config.yml:/etc/promtail/config.yml
      - /var/log:/var/log:ro
      - /var/lib/docker/containers:/var/lib/docker/containers:ro
    restart: unless-stopped

volumes:
  loki-data:
# promtail/config.yml
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
  - job_name: system
    static_configs:
      - targets:
          - localhost
        labels:
          job: varlogs
          __path__: /var/log/*.log

  - job_name: docker
    static_configs:
      - targets:
          - localhost
        labels:
          job: docker
          __path__: /var/lib/docker/containers/*/*-json.log

Langkah 5: Homepage β€” Papan Pemuka Homelab

Last but not least, Homepage. Ini adalah β€œlanding page” cantik untuk homelab anda. Satu tempat untuk nampak semua service yang anda jalankan:

services:
  homepage:
    image: ghcr.io/gethomepage/homepage:latest
    container_name: homepage
    ports:
      - "3005:3000"
    volumes:
      - ./homepage/config:/app/config
    restart: unless-stopped
# homepage/config/services.yaml
- Infrastruktur:
    - Proxmox:
        href: https://pve.lab.local:8006
        icon: proxmox.png
        description: Hypervisor
        widget:
          type: proxmox
          url: https://10.0.20.10:8006
          username: api@pam!homepage
          password: token-api

    - Pi-hole:
        href: http://pihole.lab.local
        icon: pi-hole.png
        description: DNS & Sekat Iklan
        widget:
          type: pihole
          url: http://10.0.0.2

- Aplikasi:
    - Nextcloud:
        href: https://cloud.lab.local
        icon: nextcloud.png
        description: Storan Awan

    - Jellyfin:
        href: http://media.lab.local
        icon: jellyfin.png
        description: Pelayan Media

Checklist Siap Bab Ini

Ringkasan

Tahniah, anda dah habis bab automasi dan pemantauan! Bab ni memang banyak content, tapi setiap bahagian akan jimatkan masa anda dalam jangka panjang. Jom recap:

  • Ansible β€” automasi konfigurasi dan kemas kini merentasi semua server
  • Prometheus + Grafana β€” pantau CPU, RAM, disk, dan kontena dengan graf yang cantik
  • Alerting β€” Alertmanager dan Ntfy supaya homelab beritahu anda bila ada masalah
  • Loki + Promtail β€” kumpul log dari semua tempat ke satu lokasi
  • Homepage β€” papan pemuka cantik untuk semua service homelab

Ingat, anda tak perlu setup semua sekaligus. Mulakan dengan satu β€” mungkin Ansible untuk auto-update, atau Prometheus + Grafana untuk monitoring asas. Tambah satu-satu, dan sebelum anda sedar, homelab anda dah berjalan macam infrastruktur production!

Seterusnya, kita akan masuk ke automasi lanjutan dan CI/CD untuk anda yang nak bawa homelab ke level seterusnya.

Bab 10: Automasi Lanjutan dan CI/CD

Kalau anda dah sampai bab ni, tahniah β€” anda dah melepasi tahap beginner! Bab ini adalah untuk anda yang dah selesa dengan Ansible asas dan monitoring, dan nak naik satu level lagi.

Kita akan belajar tentang CI/CD (Continuous Integration/Continuous Deployment), Ansible Roles yang lebih teratur, skrip penyelenggaraan automatik, dan cara buat dokumentasi yang generate sendiri. Ini bukan benda wajib untuk homelab, tapi percayalah β€” bila anda dah biasa, anda tak akan mahu balik ke cara lama.

Apa yang anda akan belajar:

  • Cara setup CI/CD dengan Gitea Actions dalam homelab
  • Ansible Roles untuk pengurusan konfigurasi yang lebih kemas
  • Skrip automasi penyelenggaraan mingguan
  • Pemantauan lanjutan dengan Grafana
  • Strategi pemberitahuan pintar supaya anda tak kena alert fatigue

Nota Beginner: Bab ini ialah upgrade kepada asas yang sudah stabil. Kalau anda masih baru dengan Docker atau Ansible, tak mengapa untuk tangguhkan bahagian ini dahulu. Balik bila anda dah selesa dengan bab-bab sebelumnya.

Laluan Paling Mudah untuk Beginner

  • Bina satu Workflow deploy yang paling ringkas terlebih dahulu. Jangan terus buat pipeline 10 langkah.
  • Pastikan proses manual anda stabil sebelum diubah menjadi CI/CD. Kalau buat manual pun masih gagal, automate pun akan gagal.
  • Untuk beginner, objektif utama ialah kebolehulangan (repeatability), bukan pipeline yang canggih.

Langkah 1: Gitea Actions β€” CI/CD dalam Homelab

Kalau anda pernah guna GitHub Actions, Gitea Actions akan terasa sangat familiar. Bezanya, semua berjalan dalam homelab anda sendiri. Tiada bergantung pada cloud, tiada limit minutes.

Bayangkan: anda push code ke Gitea, dan secara automatik, code tu dibina, diuji, dan di-deploy ke server anda. Semua tanpa anda perlu SSH manual.

Aliran CI/CD dan Automasi Homelab Satu pipeline untuk deploy aplikasi, satu lagi untuk backup dan penyelenggaraan berkala Developer Push ke branch `main` Gitea Repo dan webhook Actions trigger Runner Build image Test dan lint Docker Host `docker compose up -d` Deploy aplikasi Ntfy + Grafana Status deploy Amaran dan anotasi Workflow Backup Jadual `cron` harian Dump DB + archive NAS / Backup rsync dan retention Repositori sandaran Penyelenggaraan Update sistem, log, semak disk dan ZFS Laluan deploy berterusan Laluan operasi berkala dan backup
Aliran CI/CD dan Automasi Homelab

Menyediakan Gitea Runner

# docker-compose.yml - Gitea dengan Runner
services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    ports:
      - "3000:3000"
      - "2222:22"
    environment:
      USER_UID: 1000
      USER_GID: 1000
      GITEA__actions__ENABLED: "true"
    volumes:
      - ./gitea/data:/data
    restart: unless-stopped

  gitea-runner:
    image: gitea/act_runner:latest
    container_name: gitea-runner
    environment:
      GITEA_INSTANCE_URL: "http://gitea:3000"
      GITEA_RUNNER_REGISTRATION_TOKEN: "token_pendaftaran_anda"
      GITEA_RUNNER_NAME: "homelab-runner"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./runner/data:/data
    depends_on:
      - gitea
    restart: unless-stopped

Contoh Workflow β€” Deploy Automatik

Ini contoh workflow yang paling asas. Bila anda push ke branch main, ia akan build Docker image dan deploy:

# .gitea/workflows/deploy.yml
name: Deploy ke Homelab
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout kod
        uses: actions/checkout@v4

      - name: Bina imej Docker
        run: |
          docker build -t app:latest .

      - name: Deploy ke pelayan
        run: |
          docker compose -f docker-compose.prod.yml up -d

      - name: Pemberitahuan
        run: |
          curl -d "Deploy berjaya: ${{ github.sha }}" \
            http://ntfy.lab.local/deployments

Nota Beginner: Perhatikan step terakhir β€” ia hantar notification bila deploy berjaya. Ini amalan yang baik supaya anda sentiasa tahu apa yang berlaku dalam homelab.

Workflow Backup Automatik

Ini contoh workflow yang lebih praktikal β€” backup harian yang berjalan secara automatik:

# .gitea/workflows/backup.yml
name: Backup Harian
on:
  schedule:
    - cron: '0 3 * * *'  # Setiap hari jam 3 pagi

jobs:
  backup:
    runs-on: ubuntu-latest
    steps:
      - name: Backup pangkalan data
        run: |
          docker exec nextcloud-db mysqldump \
            -u root -p$DB_ROOT_PASS nextcloud \
            > /backup/nextcloud-db-$(date +%Y%m%d).sql

      - name: Backup konfigurasi Docker
        run: |
          tar czf /backup/docker-config-$(date +%Y%m%d).tar.gz \
            /opt/docker/

      - name: Muat naik ke NAS
        run: |
          rsync -av /backup/ nas:/mnt/pool/backups/gitea-runner/

      - name: Bersihkan backup lama
        run: |
          find /backup/ -name "*.sql" -mtime +7 -delete
          find /backup/ -name "*.tar.gz" -mtime +7 -delete

Langkah 2: Ansible Roles Lanjutan

Dalam bab sebelumnya, kita guna playbook biasa. Sekarang, kita naik taraf ke Roles β€” cara yang lebih teratur untuk susun Ansible code. Macam susun baju dalam almari berbanding campak semua dalam satu laci.

Struktur Role

roles/
β”œβ”€β”€ common/
β”‚   β”œβ”€β”€ tasks/
β”‚   β”‚   └── main.yml
β”‚   β”œβ”€β”€ handlers/
β”‚   β”‚   └── main.yml
β”‚   β”œβ”€β”€ templates/
β”‚   β”‚   └── sshd_config.j2
β”‚   └── defaults/
β”‚       └── main.yml
β”œβ”€β”€ docker/
β”‚   β”œβ”€β”€ tasks/
β”‚   β”‚   └── main.yml
β”‚   β”œβ”€β”€ handlers/
β”‚   β”‚   └── main.yml
β”‚   └── templates/
β”‚       └── daemon.json.j2
└── monitoring/
    β”œβ”€β”€ tasks/
    β”‚   └── main.yml
    └── templates/
        └── prometheus.yml.j2

Role: Docker

Ini contoh role untuk install dan configure Docker. Tulis sekali, guna untuk semua server:

# roles/docker/tasks/main.yml
---
- name: Pasang kebergantungan Docker
  apt:
    name:
      - ca-certificates
      - curl
      - gnupg
    state: present
    update_cache: yes

- name: Tambah kunci GPG Docker
  apt_key:
    url: https://download.docker.com/linux/ubuntu/gpg
    state: present

- name: Tambah repositori Docker
  apt_repository:
    repo: "deb https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable"
    state: present

- name: Pasang Docker
  apt:
    name:
      - docker-ce
      - docker-ce-cli
      - containerd.io
      - docker-compose-plugin
    state: present
    update_cache: yes

- name: Tambah pengguna ke kumpulan docker
  user:
    name: "{{ ansible_user }}"
    groups: docker
    append: yes

- name: Konfigurasi Docker daemon
  template:
    src: daemon.json.j2
    dest: /etc/docker/daemon.json
  notify: restart docker

- name: Pastikan Docker berjalan
  service:
    name: docker
    state: started
    enabled: yes
// roles/docker/templates/daemon.json.j2
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "default-address-pools": [
    {
      "base": "172.17.0.0/12",
      "size": 24
    }
  ],
  "storage-driver": "overlay2",
  "live-restore": true
}
# roles/docker/handlers/main.yml
---
- name: restart docker
  service:
    name: docker
    state: restarted

Nota Beginner: Perhatikan notify: restart docker dalam task konfigurasi. Ini bermakna Docker hanya akan restart kalau config memang berubah. Kalau config sama, ia tak restart β€” jimat downtime.

Role: Monitoring (Node Exporter)

# roles/monitoring/tasks/main.yml
---
- name: Cipta pengguna node_exporter
  user:
    name: node_exporter
    shell: /bin/false
    system: yes
    create_home: no

- name: Muat turun Node Exporter
  get_url:
    url: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz"
    dest: /tmp/node_exporter.tar.gz

- name: Ekstrak Node Exporter
  unarchive:
    src: /tmp/node_exporter.tar.gz
    dest: /usr/local/bin/
    remote_src: yes
    extra_opts:
      - --strip-components=1
      - --wildcards
      - "*/node_exporter"

- name: Cipta perkhidmatan systemd
  copy:
    content: |
      [Unit]
      Description=Node Exporter
      After=network.target

      [Service]
      User=node_exporter
      ExecStart=/usr/local/bin/node_exporter
      Restart=always

      [Install]
      WantedBy=multi-user.target
    dest: /etc/systemd/system/node_exporter.service

- name: Aktifkan dan mulakan Node Exporter
  systemd:
    name: node_exporter
    state: started
    enabled: yes
    daemon_reload: yes

Playbook Utama

Semua role digabungkan dalam satu playbook utama. Satu command, semua server dikonfigurasikan:

# playbooks/site.yml - Playbook utama
---
- name: Konfigurasi semua pelayan
  hosts: all
  become: yes
  roles:
    - common
    - monitoring

- name: Konfigurasi host Docker
  hosts: docker_hosts
  become: yes
  roles:
    - docker

- name: Deploy stack Docker
  hosts: docker_hosts
  become: yes
  tasks:
    - name: Salin docker-compose.yml
      copy:
        src: ../docker/docker-compose.yml
        dest: /opt/docker/docker-compose.yml

    - name: Salin fail .env
      template:
        src: ../docker/.env.j2
        dest: /opt/docker/.env
        mode: '0600'

    - name: Mulakan stack Docker
      shell: |
        cd /opt/docker && docker compose pull && docker compose up -d

Langkah 3: Automasi Penyelenggaraan

Skrip Penyelenggaraan Mingguan

Ini skrip β€œall-in-one” yang saya jalankan setiap minggu. Ia update sistem, bersihkan Docker, check disk health, dan hantar laporan. Set and forget:

#!/bin/bash
# /usr/local/bin/weekly-maintenance.sh
# Jalankan setiap Ahad jam 4 pagi

LOG="/var/log/maintenance.log"
echo "=== Penyelenggaraan Mingguan: $(date) ===" >> "$LOG"

# 1. Kemas kini sistem
echo "Mengemas kini sistem..." >> "$LOG"
apt update && apt upgrade -y >> "$LOG" 2>&1

# 2. Kemas kini kontena Docker
echo "Mengemas kini kontena Docker..." >> "$LOG"
cd /opt/docker
docker compose pull >> "$LOG" 2>&1
docker compose up -d >> "$LOG" 2>&1

# 3. Bersihkan Docker
echo "Membersihkan Docker..." >> "$LOG"
docker system prune -af --volumes >> "$LOG" 2>&1

# 4. Bersihkan log lama
echo "Membersihkan log..." >> "$LOG"
journalctl --vacuum-time=30d >> "$LOG" 2>&1
find /var/log -name "*.gz" -mtime +30 -delete

# 5. Periksa kesihatan cakera
echo "Memeriksa kesihatan cakera..." >> "$LOG"
for disk in /dev/sd?; do
  smartctl -H "$disk" >> "$LOG" 2>&1
done

# 6. Periksa penggunaan storan
echo "Penggunaan storan:" >> "$LOG"
df -h >> "$LOG" 2>&1

# 7. Periksa ZFS (jika ada)
if command -v zpool &> /dev/null; then
  echo "Status ZFS:" >> "$LOG"
  zpool status >> "$LOG" 2>&1
fi

# 8. Hantar laporan
SUMMARY=$(tail -50 "$LOG")
curl -d "$SUMMARY" http://ntfy.lab.local/maintenance

echo "=== Penyelenggaraan selesai: $(date) ===" >> "$LOG"
# Tambah ke crontab
sudo crontab -e
0 4 * * 0 /usr/local/bin/weekly-maintenance.sh

Nota Beginner: Perhatikan docker system prune -af --volumes dalam skrip tu. Ini akan padam semua image, container, dan volume yang tak digunakan. Bagus untuk jimat disk space, tapi pastikan semua container penting anda memang running sebelum jalankan skrip ni.

Automasi Pembaharuan Sijil SSL

Ini skrip kecil tapi sangat berguna. Ia check semua sijil SSL anda dan alert kalau ada yang nak tamat:

#!/bin/bash
# /usr/local/bin/check-ssl-expiry.sh

DOMAINS=(
  "cloud.lab.local"
  "git.lab.local"
  "vault.lab.local"
  "grafana.lab.local"
)

for domain in "${DOMAINS[@]}"; do
  EXPIRY=$(echo | openssl s_client -servername "$domain" \
    -connect "$domain:443" 2>/dev/null | \
    openssl x509 -noout -enddate 2>/dev/null | \
    cut -d= -f2)

  if [ -n "$EXPIRY" ]; then
    DAYS_LEFT=$(( ($(date -d "$EXPIRY" +%s) - $(date +%s)) / 86400 ))

    if [ "$DAYS_LEFT" -lt 30 ]; then
      curl -d "Amaran: Sijil SSL untuk $domain tamat dalam $DAYS_LEFT hari!" \
        http://ntfy.lab.local/ssl-alerts
    fi
  fi
done

Langkah 4: Pemantauan Lanjutan dengan Grafana

Sekarang anda dah ada Grafana dari bab sebelumnya, jom buat dashboard yang lebih power.

Papan Pemuka Tersuai

Cipta papan pemuka Grafana yang menunjukkan keseluruhan homelab anda dalam satu pandangan:

Panel Disyorkan:

  1. Ringkasan Sistem:
    • Uptime semua pelayan
    • Bilangan kontena aktif
    • Penggunaan CPU keseluruhan
    • Penggunaan RAM keseluruhan
  2. Storan:
    • Penggunaan cakera setiap pelayan
    • IOPS dan throughput
    • Kesihatan ZFS/RAID
  3. Rangkaian:
    • Trafik masuk/keluar
    • Pertanyaan DNS (dari Pi-hole)
    • Sambungan VPN aktif
  4. Perkhidmatan:
    • Status kontena Docker
    • Masa tindak balas perkhidmatan web
    • Kadar ralat HTTP
  5. Persekitaran:
    • Suhu CPU
    • Status UPS (bateri, beban)
    • Kelajuan kipas

Grafana dengan Variabel

Nak buat dashboard yang lebih interaktif? Guna variabel supaya anda boleh tukar antara server dengan satu klik:

# Variabel 'host'
Type: Query
Data source: Prometheus
Query: label_values(node_uname_info, instance)

# Gunakan dalam panel:
node_cpu_seconds_total{instance="$host"}

Anotasi

Tandakan peristiwa penting pada graf Grafana. Contohnya, bila deploy berlaku, anda boleh nampak tepat pada graf kalau ada kesan ke prestasi:

# Hantar anotasi apabila deploy berlaku
curl -X POST http://grafana.lab.local/api/annotations \
  -H "Authorization: Bearer api-key-anda" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Deploy v1.2.3",
    "tags": ["deploy", "production"]
  }'

Langkah 5: Pemberitahuan Pintar

Mengelakkan Alert Fatigue

Ini perkara yang saya belajar dengan cara yang susah. Mula-mula setup monitoring, saya alert SEMUA benda. CPU naik sikit β€” alert. Disk usage naik 1% β€” alert. Hasilnya? Saya abaikan semua notification sebab terlalu banyak.

Jangan buat macam saya. Konfigurasi amaran dengan bijak:

# Tahap amaran:
# 1. Info     β€” Log sahaja, tiada pemberitahuan
# 2. Warning  β€” Pemberitahuan sekali, boleh ditunggu
# 3. Critical β€” Pemberitahuan segera, perlu tindakan

# Contoh peraturan:
rules:
  # CRITICAL: Pelayan tidak boleh diakses
  - alert: ServerDown
    expr: up == 0
    for: 2m
    severity: critical

  # WARNING: CPU tinggi (mungkin beban sementara)
  - alert: HighCPU
    expr: cpu_usage > 90
    for: 15m  # Tunggu 15 minit sebelum amaran
    severity: warning

  # INFO: Cakera hampir penuh (masih ada masa)
  - alert: DiskAlmostFull
    expr: disk_usage > 80
    for: 1h
    severity: info

Saluran Pemberitahuan

Setup saluran pemberitahuan mengikut keutamaan. Tak semua alert perlu bunyi telefon anda:

Kritikal  β†’ Telegram + Ntfy (push notification)
Amaran    β†’ Telegram sahaja
Info      β†’ Log ke Grafana sahaja

Jadual:
  Waktu kerja (8am-10pm): Semua pemberitahuan
  Malam (10pm-8am):        Kritikal sahaja

Nota Beginner: Rule of thumb saya β€” kalau alert tu tak memerlukan tindakan segera, ia sepatutnya warning atau info, bukan critical. Critical bermakna β€œbangun tidur sekarang dan fix.”

Langkah 6: Dokumentasi Automatik

Ansible CMDB

Pernah tak seseorang tanya β€œserver tu spec apa?” dan anda kena SSH satu-satu untuk check? Ansible CMDB selesaikan masalah tu:

# Pasang ansible-cmdb
pip install ansible-cmdb

# Kumpul fakta dari semua host
ansible -i inventory/hosts.yml all -m setup --tree /tmp/facts

# Jana laporan HTML
ansible-cmdb /tmp/facts > homelab-inventory.html

Laporan ini mengandungi: - Senarai semua pelayan dengan spesifikasi - Versi OS dan kernel - Alamat IP dan MAC - Saiz RAM dan storan - Perisian yang dipasang

Dokumentasi Rangkaian Automatik

Skrip ni scan rangkaian anda dan generate dokumen secara automatik. Jalankan sebulan sekali dan anda sentiasa ada dokumentasi terkini:

#!/bin/bash
# generate-network-doc.sh
echo "# Dokumentasi Rangkaian Homelab" > network-doc.md
echo "Dijana: $(date)" >> network-doc.md
echo "" >> network-doc.md

echo "## Peranti Aktif" >> network-doc.md
nmap -sn 10.0.0.0/24 | grep "report\|MAC" >> network-doc.md
echo "" >> network-doc.md

echo "## Port Terbuka (Pelayan Utama)" >> network-doc.md
nmap -sV 10.0.20.20 >> network-doc.md
echo "" >> network-doc.md

echo "## Rekod DNS" >> network-doc.md
dig axfr lab.local @10.0.0.2 >> network-doc.md 2>/dev/null
echo "" >> network-doc.md

echo "## Kontena Docker" >> network-doc.md
ssh admin@10.0.20.20 "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'" >> network-doc.md

Checklist Siap Bab Ini

Ringkasan

Wah, bab yang panjang! Tapi anda dah sampai penghujung. Jom recap apa yang kita dah cover:

  • CI/CD dengan Gitea Actions β€” push code, auto deploy. Macam magic, tapi anda yang buat.
  • Ansible Roles β€” pengurusan konfigurasi yang lebih teratur dan boleh diguna semula
  • Skrip automasi penyelenggaraan β€” update, bersihkan, check health, semua automatik
  • Papan pemuka Grafana lanjutan β€” variabel, anotasi, panel tersuai
  • Strategi pemberitahuan pintar β€” alert yang berguna, bukan yang menyusahkan
  • Dokumentasi automatik β€” tak perlu update manual lagi

Automasi yang baik membebaskan masa anda untuk belajar perkara baru dan menambah projek baru ke homelab. Daripada habiskan masa buat kerja berulang, anda boleh fokus pada eksperimen dan pembelajaran.

Percayalah, bila anda dah rasa nikmat automasi yang berjalan lancar, anda takkan mahu balik ke cara manual lagi. Selamat mengautomasikan!

Bab 11: Projek Homelab Popular β€” Benda Best Yang Boleh Anda Buat!

Matriks Projek Homelab Popular Pilih projek mengikut kategori penggunaan dan impak pembelajaran Media dan Kandungan Jellyfin Kavita / Calibre-Web Immich untuk gambar keluarga Produktiviti Nextcloud BookStack / Wiki.js Gitea untuk repositori sendiri Rangkaian dan Utiliti Pi-hole + Unbound Smokeping / Grafana Vaultwarden Rumah Pintar Home Assistant Integrasi sensor, WiFi, Zigbee Automasi notifikasi dan tindakan Foto dan Sandaran Immich, backup berkala, versioning Sesuai untuk keluarga dan self-hosting Belajar storage, DB, dan proxy
Matriks projek homelab popular

Sekarang kita sampai bahagian paling seronok! Anda dah siapkan infrastruktur, dah faham Docker, dah setup rangkaian β€” jadi sekarang masa untuk pasang service yang betul-betul berguna dalam hidup anda. Ini antara bahagian favourite saya sebab anda akan nampak homelab anda β€œhidup” dan jadi sesuatu yang anda guna setiap hari.

Apa yang anda akan belajar: - Pilih projek homelab yang benar-benar berguna untuk diri sendiri - Tahu urutan service mana yang paling sesuai dipasang dahulu - Deploy service tanpa menjadikan homelab terlalu kompleks

Nota Beginner: Jangan cuba pasang semua projek dalam satu hujung minggu. Homelab yang baik berkembang sedikit demi sedikit. Cuba satu projek dulu, pastikan stabil, baru tambah yang seterusnya. Tak perlu buat semua sekaligus!

Laluan Paling Mudah untuk Beginner

  • Pilih maksimum dua projek untuk fasa pertama
  • Pilih service yang segera berguna seperti Pi-hole, Vaultwarden, atau Jellyfin
  • Selepas satu service stabil, baru tambah service kedua

Projek 1: Pelayan Media β€” Jellyfin

Tahap kesukaran: Senang

Apa benda ni?

Jellyfin adalah pelayan media sumber terbuka. Bayangkan Netflix, tapi anda yang kontrol semua kandungan. Koleksi filem, rancangan TV, dan muzik anda boleh distream dari mana-mana peranti β€” telefon, TV, laptop, semuanya.

Kenapa anda nak guna?

Saya guna Jellyfin hampir setiap hari. Tak perlu lagi cari USB drive atau copy fail ke telefon. Semua media anda ada di satu tempat, boleh akses dari mana-mana. Dan yang best β€” tiada yuran langganan bulanan!

Cara setup

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    ports:
      - "8096:8096"
    volumes:
      - ./jellyfin/config:/config
      - ./jellyfin/cache:/cache
      - /mnt/media/movies:/data/movies:ro
      - /mnt/media/tvshows:/data/tvshows:ro
      - /mnt/media/music:/data/music:ro
    environment:
      - TZ=Asia/Kuala_Lumpur
    devices:
      - /dev/dri:/dev/dri  # Untuk transcoding perkakasan
    restart: unless-stopped

Konfigurasi

  1. Akses http://pelayan:8096
  2. Cipta akaun admin
  3. Tambah pustaka media:
    • Filem β†’ /data/movies
    • Rancangan TV β†’ /data/tvshows
    • Muzik β†’ /data/music
  4. Konfigurasi transcoding perkakasan (Intel Quick Sync / VAAPI)
  5. Pasang aplikasi Jellyfin di telefon, TV, atau pelayar

Nota Beginner: Kalau tak ada GPU untuk transcoding, jangan risau. Jellyfin boleh jalan tanpa itu β€” cuma transcoding akan guna CPU, yang mungkin lebih perlahan sikit.

Projek 2: Storan Awan Peribadi β€” Nextcloud

Tahap kesukaran: Sederhana

Apa benda ni?

Nextcloud adalah alternatif sumber terbuka kepada Google Drive dan Dropbox. Anda boleh simpan fail, sync merentas peranti, malah boleh edit dokumen secara online β€” semua di pelayan anda sendiri.

Kenapa anda nak guna?

Data anda, di pelayan anda. Tiada siapa yang scan fail anda untuk iklan. Tiada had storan melainkan saiz hard drive anda. Saya guna ni setiap hari untuk sync dokumen antara laptop dan telefon.

Apa yang boleh buat:

  • Penyimpanan dan perkongsian fail
  • Sinkronisasi merentas peranti
  • Penyuntingan dokumen dalam talian (OnlyOffice/Collabora)
  • Kalendar dan kenalan
  • Perbualan video (Nextcloud Talk)

Cara setup

services:
  nextcloud-db:
    image: mariadb:latest
    container_name: nextcloud-db
    environment:
      MYSQL_ROOT_PASSWORD: rootpass123
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: dbpass123
    volumes:
      - ./nextcloud/db:/var/lib/mysql
    restart: unless-stopped

  nextcloud-redis:
    image: redis:alpine
    container_name: nextcloud-redis
    restart: unless-stopped

  nextcloud:
    image: nextcloud:latest
    container_name: nextcloud
    ports:
      - "8080:80"
    environment:
      MYSQL_HOST: nextcloud-db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: dbpass123
      REDIS_HOST: nextcloud-redis
      NEXTCLOUD_TRUSTED_DOMAINS: "cloud.lab.local"
      OVERWRITEPROTOCOL: https
    volumes:
      - ./nextcloud/html:/var/www/html
      - /mnt/data/nextcloud:/var/www/html/data
    depends_on:
      - nextcloud-db
      - nextcloud-redis
    restart: unless-stopped

Pengoptimuman

# Masuk ke kontena untuk konfigurasi tambahan
docker exec -it nextcloud bash

# Aktifkan cron untuk tugasan latar belakang
# Di Nextcloud β†’ Settings β†’ Basic settings β†’ Background jobs β†’ Cron

# Tambah cron job pada hos
echo "*/5 * * * * docker exec -u www-data nextcloud php cron.php" | \
  sudo tee /etc/cron.d/nextcloud-cron

Nota Beginner: Nextcloud nampak macam banyak container (database, Redis, app), tapi jangan risau. Docker Compose uruskan semua tu untuk anda. Cuma docker compose up -d dan semuanya jalan.

Projek 3: Automasi Rumah β€” Home Assistant

Tahap kesukaran: Sederhana

Apa benda ni?

Home Assistant adalah platform automasi rumah sumber terbuka yang paling popular di dunia. Anda boleh kawal lampu, kipas, sensor suhu, kamera β€” semua dari satu dashboard.

Kenapa anda nak guna?

Bayangkan: lampu rumah auto tutup bila tiada orang, notifikasi masuk telefon kalau suhu pelayan terlalu tinggi, atau pintu garaj auto buka bila kereta anda sampai. Ini antara projek favourite saya sebab ia buat rumah rasa β€œhidup”.

Cara setup

services:
  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    container_name: homeassistant
    network_mode: host
    privileged: true
    volumes:
      - ./homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
  • Zigbee β€” Menggunakan Zigbee2MQTT + penyesuai USB
  • WiFi β€” Tuya, Shelly, TP-Link Kasa
  • Sensor β€” Suhu, kelembapan, gerakan
  • Kamera β€” RTSP, Frigate untuk AI
  • Pemberitahuan β€” Telegram, Push notification

Contoh Automasi

# automations.yaml
- alias: "Tutup lampu apabila tiada sesiapa di rumah"
  trigger:
    platform: state
    entity_id: group.all_persons
    to: "not_home"
    for:
      minutes: 10
  action:
    service: light.turn_off
    target:
      entity_id: all

- alias: "Pemberitahuan suhu tinggi pelayan"
  trigger:
    platform: numeric_state
    entity_id: sensor.proxmox_cpu_temperature
    above: 80
  action:
    service: notify.telegram
    data:
      message: "Amaran: Suhu CPU pelayan melebihi 80Β°C!"

Projek 4: Git Hosting β€” Gitea

Tahap kesukaran: Senang

Apa benda ni?

Gitea adalah pelayan Git ringan yang serupa GitHub, tapi jalan di pelayan anda sendiri. Tempat anda simpan semua kod dan konfigurasi homelab.

Kenapa anda nak guna?

Setiap konfigurasi homelab anda β€” docker-compose files, dotfiles, scripts β€” semua patut disimpan dalam version control. Kalau anda accidentally delete sesuatu, senang nak revert. Plus, ini skill yang sangat berguna untuk kerjaya IT!

Cara setup

services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    ports:
      - "3000:3000"
      - "2222:22"
    environment:
      USER_UID: 1000
      USER_GID: 1000
      GITEA__database__DB_TYPE: sqlite3
      GITEA__server__ROOT_URL: https://git.lab.local
      GITEA__server__SSH_PORT: 2222
    volumes:
      - ./gitea/data:/data
      - /etc/timezone:/etc/timezone:ro
    restart: unless-stopped

Apa boleh buat dengan Gitea:

  • Cipta repositori untuk konfigurasi homelab (dotfiles, docker-compose, dll.)
  • Gunakan Gitea Actions untuk CI/CD
  • Mirror repositori GitHub penting

Projek 5: Penyekat Iklan β€” Pi-hole + Unbound

Tahap kesukaran: Senang

Apa benda ni?

Pi-hole sekat iklan di peringkat DNS untuk keseluruhan rangkaian anda. Bermaksud SEMUA peranti di rumah β€” telefon, laptop, smart TV β€” semuanya iklan hilang, tanpa perlu install apa-apa app.

Kenapa anda nak guna?

Ini mungkin projek homelab yang paling β€œwow” untuk sekeluarga. Lepas setup Pi-hole, isteri/suami/anak-anak akan perasan YouTube ads berkurangan, laman web load lebih laju. Saya rasa ini projek pertama yang patut semua orang buat.

Cara setup

services:
  pihole:
    image: pihole/pihole:latest
    container_name: pihole
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "8081:80"
    environment:
      TZ: Asia/Kuala_Lumpur
      WEBPASSWORD: kata_laluan_admin
      PIHOLE_DNS_: "10.0.0.2#5335"
    volumes:
      - ./pihole/etc-pihole:/etc/pihole
      - ./pihole/etc-dnsmasq.d:/etc/dnsmasq.d
    restart: unless-stopped

  unbound:
    image: mvance/unbound:latest
    container_name: unbound
    ports:
      - "5335:53/tcp"
      - "5335:53/udp"
    volumes:
      - ./unbound:/opt/unbound/etc/unbound
    restart: unless-stopped

Apa yang anda dapat:

  • Iklan disekat di semua peranti dalam rangkaian
  • DNS yang lebih selamat dan peribadi
  • Laman web dimuat lebih pantas
  • Kurang penggunaan data

Nota Beginner: Unbound tu optional. Kalau nak senang, guna Pi-hole sahaja dulu. Unbound tambah lapisan privasi DNS, tapi boleh tambah kemudian.

Projek 6: Pengurus Kata Laluan β€” Vaultwarden

Tahap kesukaran: Senang

Apa benda ni?

Vaultwarden adalah pengurus kata laluan yang serasi dengan klien Bitwarden di semua platform. Simpan semua kata laluan anda dengan selamat di pelayan anda sendiri.

Kenapa anda nak guna?

Jujur, ini service yang saya rasa WAJIB ada. Tak perlu lagi ingat 50 kata laluan berbeza atau (jangan buat ni!) guna kata laluan yang sama untuk semua akaun. Vaultwarden sync antara telefon, laptop, dan tablet β€” semua encrypted.

Cara setup

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    ports:
      - "8000:80"
    environment:
      DOMAIN: https://vault.lab.local
      SIGNUPS_ALLOWED: "false"
      WEBSOCKET_ENABLED: "true"
      ADMIN_TOKEN: token_admin_selamat
    volumes:
      - ./vaultwarden/data:/data
    restart: unless-stopped

Nota Beginner: Pastikan anda backup data Vaultwarden secara berkala. Kalau hilang database ni, hilang semua kata laluan. Backup, backup, backup!

Projek 7: Papan Pemuka Rangkaian

Tahap kesukaran: Sederhana

Grafana + Prometheus (sudah dibincangkan)

Kalau anda dah ikut bab automasi, anda dah ada setup ni. Grafana bagi anda dashboard yang cantik untuk pantau semua service.

Smokeping β€” Pemantauan Kependaman

Nak tahu kalau internet anda β€œlagging”? Smokeping track kependaman rangkaian secara berterusan dan buat graf yang cantik.

services:
  smokeping:
    image: lscr.io/linuxserver/smokeping:latest
    container_name: smokeping
    environment:
      PUID: 1000
      PGID: 1000
      TZ: Asia/Kuala_Lumpur
    volumes:
      - ./smokeping/config:/config
      - ./smokeping/data:/data
    ports:
      - "8085:80"
    restart: unless-stopped

Projek 8: Pelayan Buku β€” Kavita

Tahap kesukaran: Senang

Apa benda ni?

Kavita macam Kindle library, tapi untuk koleksi ebook dan komik digital anda sendiri. Interface dia cantik, boleh baca terus dalam browser.

Cara setup

services:
  kavita:
    image: jvmilazz0/kavita:latest
    container_name: kavita
    ports:
      - "5000:5000"
    volumes:
      - ./kavita/config:/kavita/config
      - /mnt/media/books:/books:ro
      - /mnt/media/manga:/manga:ro
    restart: unless-stopped

Projek 9: Immich β€” Alternatif Google Photos

Tahap kesukaran: Sederhana

Apa benda ni?

Immich adalah platform pengurusan foto sumber terbuka yang sedang sangat aktif dibangunkan. Ia macam Google Photos β€” muat naik auto dari telefon, pengecaman wajah, carian pintar β€” tapi semua data kekal di pelayan anda.

Kenapa anda nak guna?

Google Photos dah mula had storan percuma. Dengan Immich, storan anda terhad kepada saiz hard drive sahaja. Dan yang paling penting β€” foto keluarga anda kekal di tangan anda, bukan di pelayan orang lain.

Cara setup

services:
  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    container_name: immich-server
    ports:
      - "2283:2283"
    volumes:
      - /mnt/data/photos:/usr/src/app/upload
    environment:
      DB_HOSTNAME: immich-db
      DB_USERNAME: postgres
      DB_PASSWORD: postgres
      DB_DATABASE_NAME: immich
      REDIS_HOSTNAME: immich-redis
    depends_on:
      - immich-db
      - immich-redis
    restart: unless-stopped

  immich-db:
    image: tensorchord/pgvecto-rs:pg14-v0.2.0
    container_name: immich-db
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_USER: postgres
      POSTGRES_DB: immich
    volumes:
      - ./immich/db:/var/lib/postgresql/data
    restart: unless-stopped

  immich-redis:
    image: redis:alpine
    container_name: immich-redis
    restart: unless-stopped

Ciri Immich

  • Muat naik automatik dari telefon
  • Pengecaman wajah dan objek (AI)
  • Carian berdasarkan kandungan foto
  • Perkongsian album
  • Peta lokasi foto

Projek 10: Wiki Peribadi β€” BookStack

Tahap kesukaran: Senang

Apa benda ni?

BookStack adalah wiki peribadi untuk dokumentasikan semua benda berkaitan homelab anda. Fikir ia macam β€œbuku nota digital” yang tersusun dan boleh dicari.

Kenapa anda nak guna?

Percaya saya β€” dalam masa beberapa bulan, anda akan lupa macam mana anda setup sesuatu. Wiki peribadi selamatkan anda berjam-jam troubleshooting. Saya refer wiki sendiri hampir setiap minggu.

Cara setup

services:
  bookstack:
    image: lscr.io/linuxserver/bookstack:latest
    container_name: bookstack
    ports:
      - "6875:80"
    environment:
      PUID: 1000
      PGID: 1000
      APP_URL: https://wiki.lab.local
      DB_HOST: bookstack-db
      DB_DATABASE: bookstack
      DB_USER: bookstack
      DB_PASS: bookstack123
    volumes:
      - ./bookstack/config:/config
    depends_on:
      - bookstack-db
    restart: unless-stopped

  bookstack-db:
    image: mariadb:latest
    container_name: bookstack-db
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: bookstack
      MYSQL_USER: bookstack
      MYSQL_PASSWORD: bookstack123
    volumes:
      - ./bookstack/db:/var/lib/mysql
    restart: unless-stopped

Apa yang perlu didokumenkan:

  • Topologi rangkaian dan skim IP
  • Kata laluan dan konfigurasi (di Vaultwarden)
  • Prosedur sandaran dan pemulihan
  • Langkah penyelesaian masalah
  • Perubahan konfigurasi yang dibuat

Ringkasan

Projek Fungsi Kesukaran
Jellyfin Pelayan media Senang
Nextcloud Storan awan Sederhana
Home Assistant Automasi rumah Sederhana
Gitea Git hosting Senang
Pi-hole Penyekat iklan Senang
Vaultwarden Kata laluan Senang
Grafana Pemantauan Sederhana
Kavita Pelayan buku Senang
Immich Foto Sederhana
BookStack Wiki Senang

Semua projek ini boleh dijalankan menggunakan Docker Compose, menjadikan pemasangan dan pengurusan sangat mudah.

Anda tak perlu pasang semua 10 projek ni. Pilih yang paling relevan dengan kehidupan anda, mulakan dengan satu, dan kembangkan dari situ. Homelab terbaik bukan yang paling banyak service β€” tapi yang paling kerap digunakan. Selamat mencuba!

Bab 11: Projek Lanjutan β€” Level Up Homelab Anda!

Peta Projek Lanjutan Homelab Mind map untuk memilih projek seterusnya ikut minat, bajet, dan kemampuan perkakasan HOMELAB LANJUTAN Pilih trek projek AI Tempatan Ollama untuk model tempatan Open WebUI untuk akses pengguna Hiburan & Media Minecraft untuk komuniti kecil Navidrome untuk muzik peribadi Kewangan Peribadi Actual Budget untuk belanjawan Data sensitif dihos sendiri Keselamatan & CCTV Frigate NVR untuk inferens video Gabung kamera, GPU, dan storage Produktiviti Harian Mealie untuk resipi keluarga Linkding dan Vikunja untuk organisasi Infrastruktur Internet DDNS untuk IP dinamik Speedtest Tracker untuk trend ISP
Peta Projek Lanjutan Homelab

Okay, anda dah selesa dengan projek-projek asas? Bagus! Sekarang kita masuk ke bahagian yang lebih mencabar β€” dan lebih seronok. Projek lanjutan ni bukan untuk semua orang, tapi kalau anda rasa homelab anda β€œboring” dan nak cabaran baru, inilah tempatnya.

Apa yang anda akan belajar: - Projek lanjutan mana yang sesuai untuk fasa seterusnya - Kesan projek berat seperti AI, NVR, atau game server terhadap resource perkakasan - Cara pilih projek lanjutan secara realistik tanpa β€œburn out”

Nota Beginner: Label β€œlanjutan” bukan bermaksud anda wajib kejar semuanya. Pilih yang paling relevan dengan minat atau objektif pembelajaran anda. Tak ada siapa yang judge kalau anda tak buat semua ni!

Laluan Paling Mudah untuk Beginner

  • Pilih satu projek lanjutan mengikut minat anda, bukan cuba semua sekali
  • Semak kesan projek itu pada CPU, RAM, storan, dan rangkaian
  • Jika resource ketat, buat proof-of-concept kecil dahulu

Projek 11: Pelayan Minecraft

Tahap kesukaran: Sederhana

Apa benda ni?

Pelayan Minecraft anda sendiri! Ajak kawan-kawan main, set rules anda sendiri, install mods sesuka hati.

Kenapa anda nak guna?

Ini projek yang paling β€œfun” dalam senarai ni. Bayangkan ajak kawan-kawan join server yang anda host sendiri. Plus, ia ajar anda tentang resource management β€” Minecraft server boleh jadi sangat demanding kalau ramai pemain.

Cara setup

services:
  minecraft:
    image: itzg/minecraft-server:latest
    container_name: minecraft
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: "PAPER"
      VERSION: "1.21"
      MEMORY: "4G"
      MAX_PLAYERS: 10
      VIEW_DISTANCE: 12
      MOTD: "Pelayan Minecraft Homelab"
      DIFFICULTY: "normal"
      OPS: "nama_pemain_anda"
    volumes:
      - ./minecraft/data:/data
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 5G

Konfigurasi Lanjutan

  • Mods dan Plugin β€” Letakkan dalam /data/plugins
  • Sandaran Dunia β€” Jadualkan sandaran berkala
  • Whitelist β€” Hadkan kepada pemain yang dibenarkan sahaja
  • Port Forwarding β€” Buka port 25565 untuk akses dari luar

Nota Beginner: Pastikan anda set memory limit. Tanpa limit, Minecraft server boleh β€œmakan” semua RAM anda dan service lain akan terjejas.

Projek 12: Pelayan AI Tempatan β€” Ollama

Tahap kesukaran: Mencabar

Apa benda ni?

Jalankan model bahasa besar (LLM) secara tempatan di pelayan anda sendiri. Macam ChatGPT, tapi 100% private β€” data anda tak keluar dari rangkaian anda.

Kenapa anda nak guna?

Ini antara projek yang paling β€œmind-blowing” untuk saya. Anda boleh tanya soalan, minta tolong tulis kod, analisis dokumen β€” semua secara offline dan private. Dan dengan Open WebUI, interface dia cantik macam ChatGPT.

Cara setup

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ./ollama/data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]  # Jika ada GPU
    restart: unless-stopped

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3010:8080"
    environment:
      OLLAMA_BASE_URL: http://ollama:11434
    volumes:
      - ./open-webui/data:/app/backend/data
    depends_on:
      - ollama
    restart: unless-stopped

Muat turun model:

# Selepas kontena berjalan
docker exec -it ollama ollama pull llama3.2
docker exec -it ollama ollama pull codellama
docker exec -it ollama ollama pull mistral

Keperluan Perkakasan:

Model Saiz RAM Minimum GPU Disyorkan
Phi-3 Mini 3.8B 8GB Pilihan
Llama 3.2 8B 16GB 8GB VRAM
Mistral 7B 16GB 8GB VRAM
Llama 3.1 70B 48GB+ 24GB+ VRAM

Nota Beginner: Mula dengan model kecil macam Phi-3 Mini dulu. Tak perlu GPU pun boleh jalan β€” cuma lebih perlahan. Kalau anda ada GPU lama yang tak dipakai, ini masa untuk bagi ia kerja baru!

Projek 13: Sistem Pengawasan β€” Frigate NVR

Tahap kesukaran: Mencabar

Apa benda ni?

Frigate adalah NVR (Network Video Recorder) dengan pengesanan objek AI. Ia boleh detect orang, kereta, haiwan β€” dan hanya record bila ada sesuatu yang menarik. Bukan macam CCTV biasa yang rakam 24/7 benda kosong.

Kenapa anda nak guna?

Keselamatan rumah yang pintar. Anda dapat notifikasi bila ada orang di pintu hadapan, boleh tengok live feed dari mana-mana, dan semua rakaman kekal di pelayan anda β€” bukan di cloud orang lain.

Cara setup

services:
  frigate:
    image: ghcr.io/blakeblackshear/frigate:stable
    container_name: frigate
    privileged: true
    ports:
      - "5000:5000"
      - "8554:8554"  # RTSP
      - "8555:8555"  # WebRTC
    volumes:
      - ./frigate/config:/config
      - ./frigate/media:/media/frigate
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    environment:
      FRIGATE_RTSP_PASSWORD: kata_laluan_kamera
    devices:
      - /dev/dri/renderD128  # Intel GPU untuk inferens
    restart: unless-stopped
# frigate/config/config.yml
mqtt:
  enabled: false

cameras:
  pintu_hadapan:
    ffmpeg:
      inputs:
        - path: rtsp://admin:password@192.168.1.100/stream1
          roles:
            - detect
            - record
    detect:
      width: 1280
      height: 720

  halaman_belakang:
    ffmpeg:
      inputs:
        - path: rtsp://admin:password@192.168.1.101/stream1
          roles:
            - detect
            - record

record:
  enabled: true
  retain:
    days: 7
  events:
    retain:
      default: 30

detectors:
  default:
    type: openvino
    device: AUTO
    model:
      path: /openvino-model/ssdlite_mobilenet_v2.xml

Projek 14: Papan Pemuka Kewangan β€” Actual Budget

Tahap kesukaran: Senang

Apa benda ni?

Actual Budget adalah app pengurusan kewangan peribadi yang anda host sendiri. Track perbelanjaan, set bajet, lihat ke mana duit anda pergi.

Kenapa anda nak guna?

Data kewangan anda adalah antara data paling sensitif. Dengan self-host, tiada pihak ketiga yang nampak berapa anda belanja kat kedai mamak. Interface dia simple dan laju.

Cara setup

services:
  actual:
    image: actualbudget/actual-server:latest
    container_name: actual-budget
    ports:
      - "5006:5006"
    volumes:
      - ./actual/data:/data
    restart: unless-stopped

Projek 15: Pengurusan Resipi β€” Mealie

Tahap kesukaran: Senang

Apa benda ni?

Mealie simpan dan susun semua resipi kegemaran anda di satu tempat. Boleh import resipi dari mana-mana website, plan menu mingguan, dan auto-generate senarai belanja.

Kenapa anda nak guna?

Tak perlu lagi scroll Instagram atau bookmark 100 resipi yang anda tak ingat mana satu. Import, susun, dan masak. Saya guna ni setiap minggu untuk plan makanan.

Cara setup

services:
  mealie:
    image: ghcr.io/mealie-recipes/mealie:latest
    container_name: mealie
    ports:
      - "9925:9000"
    environment:
      ALLOW_SIGNUP: "true"
      TZ: Asia/Kuala_Lumpur
      BASE_URL: https://mealie.lab.local
    volumes:
      - ./mealie/data:/app/data
    restart: unless-stopped

Ciri Mealie: - Import resipi dari URL - Perancang hidangan mingguan - Senarai belanja automatik - Kategori dan tag - Aplikasi web progresif (PWA)

Projek 16: Perkhidmatan DNS Dinamik (DDNS)

Tahap kesukaran: Sederhana

Apa benda ni?

Kalau ISP anda bagi IP dinamik (yang berubah-ubah), DDNS pastikan domain anda sentiasa point ke IP terkini. Maknanya anda boleh akses homelab dari luar walaupun IP berubah.

Cara setup

services:
  ddns-updater:
    image: qmcgaw/ddns-updater:latest
    container_name: ddns-updater
    ports:
      - "8500:8000"
    volumes:
      - ./ddns/data:/updater/data
    environment:
      CONFIG: |
        {
          "settings": [
            {
              "provider": "cloudflare",
              "zone_identifier": "zon_id_anda",
              "domain": "homelab.domain.com",
              "host": "@",
              "ttl": 300,
              "token": "token_api_cloudflare",
              "ip_version": "ipv4"
            }
          ]
        }
    restart: unless-stopped

Projek 17: Pelayan Muzik β€” Navidrome

Tahap kesukaran: Senang

Apa benda ni?

Navidrome macam Spotify peribadi. Stream koleksi muzik anda dari mana-mana, guna app yang cantik di telefon dan desktop.

Kenapa anda nak guna?

Kalau anda ada koleksi MP3/FLAC, Navidrome bagi anda pengalaman streaming yang proper β€” dengan artwork, playlist, dan scrobbling. Tak perlu bayar langganan bulanan, dan kualiti audio ikut fail asal anda.

Cara setup

services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    ports:
      - "4533:4533"
    environment:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info
      ND_BASEURL: ""
    volumes:
      - ./navidrome/data:/data
      - /mnt/media/music:/music:ro
    restart: unless-stopped

Aplikasi Klien: - Symfonium (Android) β€” Terbaik untuk Android - play:Sub (iOS) β€” Terbaik untuk iPhone - Sonixd (Desktop) β€” Klien desktop

Projek 18: Pengurusan Bookmark β€” Linkding

Tahap kesukaran: Senang

Apa benda ni?

Linkding simpan dan susun semua bookmark anda. Macam Pocket atau Raindrop, tapi self-hosted. Ringan, laju, dan simple.

Cara setup

services:
  linkding:
    image: sissbruecker/linkding:latest
    container_name: linkding
    ports:
      - "9095:9090"
    volumes:
      - ./linkding/data:/etc/linkding/data
    restart: unless-stopped

Projek 19: Papan Kanban β€” Vikunja

Tahap kesukaran: Senang

Apa benda ni?

Vikunja adalah app pengurusan tugasan dan projek. Macam Trello atau Todoist, tapi anda yang host sendiri.

Cara setup

services:
  vikunja:
    image: vikunja/vikunja:latest
    container_name: vikunja
    ports:
      - "3456:3456"
    environment:
      VIKUNJA_SERVICE_JWTSECRET: rahsia_jwt_selamat
      VIKUNJA_SERVICE_FRONTENDURL: https://todo.lab.local
    volumes:
      - ./vikunja/files:/app/vikunja/files
      - ./vikunja/db:/db
    restart: unless-stopped

Projek 20: Speedtest Tracker

Tahap kesukaran: Senang

Apa benda ni?

Speedtest Tracker jalankan speed test secara automatik dan track kelajuan internet anda sepanjang masa. Sesuai kalau anda rasa ISP tak bagi speed yang dijanjikan!

Cara setup

services:
  speedtest-tracker:
    image: lscr.io/linuxserver/speedtest-tracker:latest
    container_name: speedtest-tracker
    ports:
      - "8765:80"
    environment:
      PUID: 1000
      PGID: 1000
      DB_CONNECTION: sqlite
      SPEEDTEST_SCHEDULE: "0 */4 * * *"
      APP_KEY: base64:kunci_aplikasi_anda
    volumes:
      - ./speedtest/config:/config
    restart: unless-stopped

Seni Bina Penuh Homelab

Nak tengok macam mana semua projek ni boleh digabungkan? Berikut adalah contoh seni bina homelab yang lengkap:

Internet
    β”‚
    β”œβ”€β”€ Modem ISP
    β”‚
    β”œβ”€β”€ pfSense/OPNsense (Router/Firewall)
    β”‚   β”œβ”€β”€ WireGuard VPN
    β”‚   β”œβ”€β”€ Suricata IDS/IPS
    β”‚   └── HAProxy
    β”‚
    β”œβ”€β”€ Suis Terurus (VLAN)
    β”‚   β”‚
    β”‚   β”œβ”€β”€ VLAN 20: Pelayan
    β”‚   β”‚   β”œβ”€β”€ Proxmox VE
    β”‚   β”‚   β”‚   β”œβ”€β”€ VM: Docker Host
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Traefik (Reverse Proxy)
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Nextcloud (Storan)
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Vaultwarden (Kata Laluan)
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Jellyfin (Media)
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Gitea (Git)
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Grafana (Pemantauan)
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Immich (Foto)
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Ollama (AI)
    β”‚   β”‚   β”‚   β”‚   └── Watchtower (Kemas kini)
    β”‚   β”‚   β”‚   β”œβ”€β”€ LXC: Pi-hole (DNS)
    β”‚   β”‚   β”‚   β”œβ”€β”€ LXC: Home Assistant
    β”‚   β”‚   β”‚   └── VM: Windows (Ujian)
    β”‚   β”‚   β”‚
    β”‚   β”‚   └── TrueNAS (NAS)
    β”‚   β”‚       β”œβ”€β”€ SMB Shares
    β”‚   β”‚       β”œβ”€β”€ NFS Shares
    β”‚   β”‚       └── iSCSI Targets
    β”‚   β”‚
    β”‚   β”œβ”€β”€ VLAN 30: IoT
    β”‚   β”‚   β”œβ”€β”€ Kamera IP
    β”‚   β”‚   β”œβ”€β”€ Sensor Zigbee
    β”‚   β”‚   └── Peranti WiFi Pintar
    β”‚   β”‚
    β”‚   └── VLAN 40: Tetamu
    β”‚       └── WiFi Tetamu (Internet sahaja)
    β”‚
    └── Access Point WiFi (UniFi/Omada)

Nota Beginner: Diagram ni contoh homelab yang β€œmatang”. Anda tak perlu ada semua ni. Ramai bermula dengan satu mini PC dan 2-3 service sahaja. Grow at your own pace!


Ringkasan

Kategori Projek
Hiburan Minecraft, Jellyfin, Navidrome
Produktiviti Vikunja, Mealie, Linkding
AI Ollama + Open WebUI
Keselamatan Frigate NVR
Kewangan Actual Budget
Infrastruktur DDNS, Speedtest Tracker

Semakin banyak projek yang anda jalankan, semakin banyak anda akan belajar tentang pengurusan infrastruktur IT. Tapi ingat β€” kualiti lebih penting daripada kuantiti. Satu projek yang anda faham sepenuhnya lebih bernilai daripada sepuluh projek yang anda copy-paste tanpa faham. Teruskan eksperimen dan enjoy the journey!

Bab 12: Penyelesaian Masalah β€” Cheat Sheet Anda!

Masalah memang akan berlaku. Itu bukan tanda anda gagal β€” itu tanda anda sedang belajar! Bab ini disusun macam cheat sheet supaya bila sesuatu rosak, anda boleh buka terus bahagian yang relevan dan ikut langkah-langkah tanpa panik.

Apa yang anda akan belajar: - Aliran troubleshooting yang tenang dan tersusun - Cara semak isu mengikut lapisan: rangkaian, service, host, dan log - Bezakan simptom dengan punca sebenar masalah

Nota Beginner: Troubleshooting yang baik bukan tentang cuba segala-galanya serentak. Ia tentang memotong kemungkinan satu demi satu dengan tenang. Macam detective β€” cari clue, bukan tembak secara rawak!

Quick Reference: Urutan Troubleshooting

Bila ada masalah, ikut urutan ni:

Kuasa β†’ Kabel β†’ IP β†’ DNS β†’ Service β†’ Log

Jangan ubah lima benda serentak. Tukar satu, test, baru tukar yang lain. Dan bila jumpa penyelesaian β€” catat! Anda akan terima kasih pada diri sendiri nanti.

Pokok Keputusan Troubleshooting Homelab Mula dari semakan rangkaian, kemudian semak servis, konfigurasi akses, dan log Perkhidmatan nampak bermasalah Boleh ping gateway? `ping 10.0.0.1` Tidak Semak kabel, IP, VLAN, gateway, dan firewall Servis aktif? `docker ps` / `systemctl` / `qm status` Tidak Mulakan servis semula, semak log startup dan dependency Ya Semak penggunaan RAM, CPU, I/O disk, dan storan penuh Aplikasi boleh diakses? Hostname, port, reverse proxy, SSL Tidak Semak DNS, proxy host, certificate, dan port mapping Ya - Teruskan semakan log mendalam Gunakan `journalctl`, `docker logs`, `dmesg`, dan audit perubahan konfigurasi Tidak Ya Tidak Ya Tidak Ya
Pokok Keputusan Troubleshooting Homelab

Masalah Rangkaian

Tidak Boleh Ping Pelayan

# Langkah 1: Periksa sambungan fizikal
# Adakah lampu pada port suis menyala?

# Langkah 2: Periksa konfigurasi IP
ip addr show

# Langkah 3: Periksa gateway
ip route show
ping 10.0.0.1  # ping gateway

# Langkah 4: Periksa DNS
nslookup google.com
dig google.com

# Langkah 5: Periksa firewall
sudo iptables -L -n
sudo ufw status

DNS Tidak Berfungsi

# Periksa Pi-hole berjalan
docker ps | grep pihole

# Periksa DNS secara manual
dig @10.0.0.2 google.com

# Periksa konfigurasi DNS pada klien
cat /etc/resolv.conf

# Mulakan semula Pi-hole
docker restart pihole

VLAN Tidak Berkomunikasi

  1. Periksa konfigurasi trunk port pada suis
  2. Pastikan VLAN tag betul pada kedua-dua suis dan firewall
  3. Periksa peraturan firewall antara VLAN
  4. Gunakan tcpdump untuk mengesan paket:
# Pantau trafik pada antara muka VLAN
sudo tcpdump -i vlan20 -n

Nota Beginner: Kebanyakan masalah rangkaian sebenarnya masalah kabel atau IP yang salah. Sentiasa check benda simple dulu sebelum suspect benda complicated.


Masalah Docker

Kontena Gagal Bermula

# Periksa log
docker logs nama-kontena

# Periksa events Docker
docker events --since 1h

# Masalah biasa:
# 1. Port sudah digunakan
sudo ss -tlnp | grep PORT

# 2. Volume tidak wujud atau kebenaran salah
ls -la ./data/

# 3. Imej rosak
docker pull nama-imej:tag

Kontena Kehabisan Memori

# Periksa penggunaan memori
docker stats

# Hadkan memori kontena
# Dalam docker-compose.yml:
services:
  app:
    deploy:
      resources:
        limits:
          memory: 1G

Docker Compose Tidak Dapat Dimulakan

# Semak sintaks fail YAML
docker compose config

# Mulakan dengan mod verbose
docker compose up --verbose

# Buang kontena dan mula semula
docker compose down
docker compose up -d

Nota Beginner: 90% masalah Docker boleh diselesaikan dengan docker logs nama-kontena. Sentiasa check log dulu β€” biasanya error message dah cakap apa masalahnya.


Masalah Proxmox

VM Tidak Boleh Boot

# Periksa log VM
# Di antara muka web: VM β†’ Console

# Periksa storan
pvesm status

# Cuba boot dalam mod selamat
# Tukar boot order di VM β†’ Hardware β†’ Boot Order

Storan Penuh di Proxmox

# Periksa penggunaan storan
df -h
lvs
zpool list

# Buang sandaran lama
ls -la /var/lib/vz/dump/

# Buang snapshot VM yang tidak diperlukan
qm listsnapshot VMID

# Buang imej ISO yang tidak diperlukan
ls -la /var/lib/vz/template/iso/

Kluster Proxmox Bermasalah

# Periksa status kluster
pvecm status

# Periksa quorum
pvecm expected 1  # Jika nod tunggal

# Periksa log
journalctl -u pve-cluster

Masalah Prestasi

CPU Tinggi

# Kenal pasti proses yang menggunakan CPU tinggi
htop
top -c

# Untuk kontena Docker
docker stats

# Untuk VM Proxmox
# Semak di antara muka web β†’ Node β†’ Summary

RAM Tidak Mencukupi

# Periksa penggunaan RAM
free -h

# Periksa proses yang menggunakan RAM paling banyak
ps aux --sort=-%mem | head -20

# Periksa swap
swapon --show

# Jika ZFS, kurangkan ARC cache
echo "4294967296" > /sys/module/zfs/parameters/zfs_arc_max  # 4GB

I/O Cakera Perlahan

# Periksa I/O
iostat -x 1 5

# Periksa kesihatan cakera
sudo smartctl -a /dev/sda

# Periksa ZFS
zpool iostat -v 1 5

Nota Beginner: Kalau homelab rasa β€œslow”, check RAM dulu. Kebanyakan masalah prestasi datang dari RAM yang tak cukup, terutama kalau anda guna ZFS (yang memang suka β€œmakan” RAM untuk cache).


Masalah Keselamatan

Akaun Terkunci (Fail2ban)

# Senarai IP yang disekat
sudo fail2ban-client status sshd

# Nyahsekat IP
sudo fail2ban-client set sshd unbanip 192.168.1.100

Sijil SSL Tamat Tempoh

# Periksa tarikh tamat tempoh
openssl s_client -connect pelayan:443 2>/dev/null | \
  openssl x509 -noout -dates

# Perbaharui sijil Let's Encrypt
# Jika menggunakan Nginx Proxy Manager:
# Edit Proxy Host β†’ SSL β†’ Renew

# Jika menggunakan certbot:
sudo certbot renew

Aktiviti Mencurigakan

# Periksa log SSH
sudo grep "Failed password" /var/log/auth.log | tail -20

# Periksa sambungan aktif
ss -tunapl

# Periksa proses mencurigakan
ps auxf

# Periksa port yang terbuka
sudo nmap -sS localhost

Alat Troubleshooting β€” Quick Reference

Rangkaian

Alat Fungsi Contoh
ping Uji ketersambungan ping 10.0.0.1
traceroute Jejak laluan traceroute 8.8.8.8
nslookup/dig Pertanyaan DNS dig google.com
ss/netstat Sambungan rangkaian ss -tunapl
tcpdump Tangkap paket tcpdump -i eth0 port 80
nmap Imbas port nmap -sV 10.0.0.0/24
iperf3 Ujian lebar jalur iperf3 -c pelayan
mtr Traceroute berterusan mtr 8.8.8.8

Sistem

Alat Fungsi Contoh
htop Pantau proses htop
df Penggunaan cakera df -h
free Penggunaan memori free -h
iostat Statistik I/O iostat -x 1
dmesg Log kernel dmesg -T \| tail
journalctl Log sistemd journalctl -xe
smartctl Kesihatan cakera smartctl -a /dev/sda
lsblk Senarai peranti blok lsblk -f

Docker

Arahan Fungsi
docker ps -a Senarai semua kontena
docker logs -f Log masa nyata
docker inspect Maklumat terperinci
docker stats Penggunaan sumber
docker exec -it ... bash Masuk ke kontena
docker system df Penggunaan storan
docker system prune Bersihkan

Petua Emas

1. Dokumentasikan Semuanya

Buat nota tentang:
- Setiap perubahan konfigurasi
- Masalah yang dihadapi dan penyelesaiannya
- Skim rangkaian dan alamat IP
- Kata laluan (di pengurus kata laluan!)

2. Uji Sandaran Secara Berkala

Sandaran yang tidak diuji = tiada sandaran.
Jadualkan ujian pemulihan bulanan.

3. Mula Kecil, Kembang Berperingkat

Jangan cuba membina semuanya sekaligus.
Mula dengan satu perkhidmatan, kuasai ia,
kemudian tambah yang seterusnya.

4. Sertai Komuniti

Reddit: r/homelab, r/selfhosted
Discord: Homelab, Self-Hosted
YouTube: NetworkChuck, TechnoTim, Jeff Geerling

5. Belajar dari Kesilapan

Kesilapan adalah guru terbaik.
Homelab adalah tempat yang selamat untuk gagal
dan belajar tanpa kesan kepada pengeluaran.

Ringkasan

Penyelesaian masalah adalah kemahiran yang berkembang dengan pengalaman. Anda tak perlu hafal semua command ni β€” bookmark bab ini dan rujuk bila perlu. Yang penting:

  1. Pendekatan sistematik β€” Periksa dari asas (fizikal β†’ rangkaian β†’ aplikasi)
  2. Log adalah sahabat anda β€” Sentiasa semak log terlebih dahulu
  3. Google/komuniti β€” Anda mungkin bukan yang pertama menghadapi masalah itu
  4. Dokumentasi β€” Rekod penyelesaian untuk rujukan masa hadapan
  5. Sandaran β€” Sebelum mencuba apa-apa, pastikan ada sandaran

Setiap kali anda berjaya selesaikan masalah, anda jadi lebih mahir. Dan satu hari nanti, anda akan jadi orang yang bantu orang lain troubleshoot masalah mereka pula. Itu sebahagian daripada keindahan komuniti homelab!

Penutup

Roadmap Langkah Seterusnya Cadangan laluan pembelajaran selepas anda menyiapkan homelab asas 1 Stabilkan Dokumentasi, backup, update 2 Automasi Ansible, CI/CD, provisioning 3 Skala Kluster, VLAN, 10GbE, Ceph 4 Teroka Kubernetes, IaC, security lab
Roadmap langkah seterusnya

Tahniah β€” Anda Dah Sampai Sini!

Jujur, saya nak ucapkan tahniah dari hati. Anda bukan sekadar β€œbaca” ebook ni β€” anda dah lalui satu perjalanan yang penuh. Dari zero, dari mungkin tak tahu apa itu Docker atau VLAN, sampai ke sini. Itu bukan perkara kecil.

Saya masih ingat macam mana rasanya bila pertama kali homelab saya β€œhidup” β€” bila Jellyfin pertama kali streaming filem, bila Pi-hole pertama kali sekat iklan, bila Nextcloud pertama kali sync fail. Ada rasa puas yang susah nak explain. Dan saya harap anda pun dah rasa, atau akan rasa, perkara yang sama.

Apa yang anda dah capai: - Asas yang cukup kukuh untuk membina homelab pertama dengan yakin - Pengetahuan untuk troubleshoot bila benda tak jalan - Keyakinan untuk terus eksperimen dan belajar sendiri

Imbas Semula Perjalanan Anda

Sepanjang ebook ini, kita dah merangkumi banyak benda:

  1. Pengenalan Homelab β€” Mengapa ia berguna dan komponen asasnya
  2. Perancangan β€” Merancang bajet, rangkaian, dan keperluan
  3. Perkakasan β€” Memilih CPU, RAM, storan, dan peralatan rangkaian
  4. Rangkaian β€” Konfigurasi router, VLAN, DNS, dan VPN
  5. Sistem Pengendalian β€” Linux, Proxmox VE, TrueNAS
  6. Virtualisasi β€” VM, LXC, template, dan sandaran
  7. Docker β€” Kontena, Docker Compose, dan stack homelab
  8. Storan β€” ZFS, RAID, NAS, dan strategi sandaran 3-2-1
  9. Keselamatan β€” Firewall, 2FA, enkripsi, dan pemantauan
  10. Automasi β€” Ansible, Prometheus, Grafana, dan amaran
  11. Projek β€” Jellyfin, Nextcloud, Home Assistant, dan banyak lagi
  12. Penyelesaian Masalah β€” Alat dan teknik untuk menyelesaikan masalah

Itu bukan sedikit. Anda dah cover topik yang sama dengan apa yang ramai profesional IT belajar dalam beberapa tahun pengalaman kerja. Beza anda β€” anda buat ni atas inisiatif sendiri, dan itu lebih bernilai.

Langkah Seterusnya

Teruskan Belajar

Dunia IT sentiasa berkembang, dan homelab anda boleh berkembang bersama. Beberapa bidang menarik yang boleh anda terokai:

  • Kubernetes (K8s) β€” Orkestrasi kontena untuk skala yang lebih besar
  • Infrastructure as Code (IaC) β€” Automasi infrastruktur dengan Terraform atau Pulumi
  • CI/CD β€” GitLab CI, Gitea Actions, Jenkins
  • Pengkomputeran Awan β€” AWS, Azure, GCP (bandingkan dengan homelab anda)
  • Keselamatan Siber β€” Cabaran CTF, rangkaian makmal keselamatan
  • Rangkaian Lanjutan β€” BGP, OSPF, SD-WAN

Nota Beginner: Tak perlu belajar semua benda di atas. Pilih satu yang paling menarik minat anda dan go deep. Lebih baik mahir satu bidang daripada tahu sikit-sikit tentang semua benda.

Sertai Komuniti

Salah satu benda best tentang homelab β€” komuniti dia luar biasa mesra. Semua orang pernah jadi beginner, jadi tak ada soalan yang β€œbodoh”.

  • Reddit: r/homelab, r/selfhosted, r/homenetworking
  • Discord: Pelbagai pelayan homelab
  • Forum: ServeTheHome, Level1Techs
  • Blog: Tulis tentang pengalaman homelab anda sendiri

Kongsi Pengetahuan

Saya percaya salah satu cara terbaik untuk belajar adalah dengan mengajar. Bila anda explain sesuatu kepada orang lain, anda sendiri faham lebih mendalam.

  • Bantu orang lain di forum dan Reddit
  • Tulis blog tentang projek homelab anda
  • Buat video tutorial di YouTube
  • Sumbang kepada projek sumber terbuka

Kata-Kata Akhir

Homelab bukan sekadar koleksi perkakasan dan perisian. Ia adalah platform pembelajaran yang tidak terhad. Ia adalah makmal eksperimen peribadi anda. Dan yang paling penting β€” ia adalah bukti nyata kemahiran teknikal anda.

Setiap masalah yang anda selesaikan menambah pengalaman. Setiap service yang anda deploy menambah keyakinan. Setiap baris konfigurasi yang anda tulis menambah skill yang boleh anda tunjukkan kepada bakal majikan.

Saya harap ebook ini bukan penamat, tapi permulaan. Permulaan untuk anda explore, eksperimen, rosak benda, fix balik, dan jadi lebih baik setiap hari.

Ingat: - Mula kecil β€” Anda tidak perlu memiliki rak penuh pelayan untuk bermula - Bersabar β€” Setiap pakar pernah menjadi pemula - Nikmati proses β€” Perjalanan lebih penting daripada destinasi - Kongsi β€” Pengetahuan bertambah apabila dikongsi - Jangan bandingkan β€” Homelab anda adalah unik, macam anda sendiri

Selamat membina homelab anda. Saya tak sabar nak dengar cerita anda!


β€œMasa terbaik untuk memulakan homelab ialah semalam. Masa kedua terbaik ialah sekarang.”