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
Syarat dan Amaran
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
- Buku elektronik ini adalah untuk kegunaan peribadi sahaja
- Anda tidak dibenarkan menjual semula, mengedar, atau berkongsi buku ini tanpa kebenaran
- Anda dibenarkan mencetak satu salinan untuk kegunaan peribadi
- Pautan dan rujukan luaran mungkin berubah dari masa ke masa
- 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.
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
- Baca bab ini sampai habis dulu tanpa fikir soal beli hardware. Serius β jangan buka Shopee dulu.
- Pilih jenis homelab yang paling dekat dengan bajet dan masa anda.
- Simpan satu ayat matlamat peribadi anda sebelum masuk ke bab seterusnya.
Nota Beginner: Jika istilah seperti
server,VM,Docker, atauVLANmasih 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:
- Pelayan atau Komputer β Mesin utama yang menjalankan perkhidmatan. Boleh jadi komputer lama, mini PC, atau pelayan sebenar.
- Peralatan Rangkaian β Switch, router, dan titik akses WiFi untuk sambungkan semua peranti.
- Storan β Hard disk atau SSD untuk menyimpan data anda.
- 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:
- Sistem Pengendalian β Linux (Ubuntu, Debian, Proxmox) β kebanyakan percuma!
- Hypervisor β Untuk virtualisasi (Proxmox VE, ESXi) β macam βkomputer dalam komputerβ
- Kontena β Docker dan Docker Compose β cara paling popular nak jalankan service
- Aplikasi β Perkhidmatan yang ingin anda jalankan (Nextcloud, Pi-hole, dll.)
Rangkaian (Network)
Ini yang sambungkan semuanya bersama:
- Router/Firewall β pfSense atau OPNsense sebagai βpengawal pintuβ rangkaian anda
- Switch β Untuk menyambungkan peranti secara fizikal
- VLAN β Pengasingan rangkaian untuk keselamatan (macam bilik berasingan dalam rumah)
- 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
- Lengkapkan bahagian matlamat dahulu sebelum tengok senarai hardware. Ini penting β jangan skip.
- Tulis bajet maksimum anda, bukan bajet ideal. Realistik lebih baik dari optimistik.
- 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
- Apa tujuan utama homelab saya?
- Pembelajaran dan latihan persijilan?
- Hosting perkhidmatan peribadi?
- Pembangunan dan pengujian perisian?
- Automasi rumah pintar?
- Apakah perkhidmatan yang ingin saya jalankan?
- Senaraikan semua perkhidmatan yang diingini
- Kategorikan mengikut keutamaan (wajib, penting, bonus)
- Berapa besar bajet saya?
- Bajet awal untuk pembelian perkakasan
- Bajet bulanan untuk kos elektrik
- Bajet untuk penyelenggaraan dan naik taraf
- 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
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
- Sambungan Internet β Modem ISP anda (TM, Maxis, dll.)
- Router/Firewall β Titik kawalan utama rangkaian
- Switch β Menyambungkan semua peranti melalui kabel
- Titik Akses WiFi β Untuk peranti tanpa wayar
- Pelayan β Mesin yang menjalankan perkhidmatan
- 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
- SSD NVMe β Terpantas, untuk sistem pengendalian dan pangkalan data. Macam laci meja kerja β cepat nak capai.
- SSD SATA β Pantas, untuk aplikasi dan data aktif. Macam almari dalam bilik β dekat dan mudah diakses.
- 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:
- Menentukan matlamat dan keperluan β supaya setiap sen yang dibelanjakan ada tujuan
- Merancang bajet mengikut tahap β dari RM 500 sampai RM 15,000+
- Melakar topologi rangkaian β supaya semua peranti tersambung dengan betul
- Merancang strategi storan β jenis storan yang betul untuk tujuan yang betul
- Menganggarkan penggunaan tenaga β supaya bil elektrik tak bagi kejutan
- 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, satuSSDuntuk 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.
Langkah 2: Contoh Perkakasan Sebenar
Sebelum kita masuk teori, jom tengok rupa perkakasan yang ramai orang guna untuk homelab mereka.
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!
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:
- Bilangan teras (cores) β Lebih banyak teras = lebih banyak VM/kontena boleh jalan serentak. Macam lebih banyak tangan, lebih banyak kerja boleh buat.
- Sokongan virtualisasi β Intel VT-x / AMD-V (wajib ada untuk hypervisor). Tanpa ni, tak boleh jalankan VM.
- Kecekapan tenaga β TDP (Thermal Design Power) yang rendah bermaksud bil elektrik yang rendah juga.
- 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
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.
Langkah 7: Platform Pelayan Popular
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.
- Mudah.my / Carousell β Pasaran tempatan Malaysia. Boleh jumpa seller dan test barang.
- Shopee / Lazada β Penjual perkakasan terpakai. Banyak pilihan, harga competitive.
- eBay β Pilihan antarabangsa (termasuk penghantaran). Kadang-kadang ada barang yang tak jumpa kat Malaysia.
- Facebook Marketplace β Tawaran tempatan, kadang-kadang ada harga gila murah
- 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:
- Ujian perkakasan β Minta penjual tunjukkan ia berfungsi. Kalau tak nak tunjuk, suspicious.
- Umur dan generasi β Elakkan perkakasan terlalu lama (lebih 10 tahun). Dah tak efficient.
- Penggunaan kuasa β Periksa TDP pemproses. Anda tak nak bil TNB naik mendadak.
- Kebolehnaiktarafan β Ada slot RAM kosong? Bay pemacu? Ini penting untuk masa depan.
- Bunyi bising β Terutamanya untuk pelayan enterprise. Minta seller hidupkan dan dengar sendiri.
- 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
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
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 framesJumbo 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: 9000Nota 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
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 myupsPemantauan 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-stoppedMengira 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
VPNdanReverse Proxysebagai 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.
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:
- Muat turun ISO pfSense dari laman web rasmi
- Cipta USB bootable menggunakan Rufus atau balenaEtcher
- Boot dari USB dan ikuti wizard pemasangan
- 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:
- Navigasi ke Interfaces β VLANs
- Tambah VLAN baru:
- Parent Interface:
igb1(LAN) - VLAN Tag:
20 - Description:
Pelayan
- Parent Interface:
- Aktifkan antara muka VLAN di Interfaces β Assignments
- Konfigurasi alamat IP untuk antara muka VLAN
- 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-stoppedKonfigurasi 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-stoppedKemudian, 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-stoppedKonfigurasi 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:
- Pasang aplikasi WireGuard di telefon/laptop (ada di App Store dan Play Store)
- Import fail konfigurasi atau imbas kod QR (Docker container dah auto-generate untuk anda!)
- Aktifkan sambungan VPN
- 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-stoppedKonfigurasi Proxy Host:
- Log masuk ke panel admin (port 81) β default login:
admin@example.com/changeme - Tambah Proxy Host baru:
- Domain:
nextcloud.lab.local - Forward IP:
10.0.20.20 - Forward Port:
8080 - SSL: Aktifkan (Letβs Encrypt)
- Domain:
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-stoppedDari 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
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:
- General Information:
- Hostname:
pfsense - Domain:
lab.local - DNS Servers:
1.1.1.1,9.9.9.9
- Hostname:
- Time Server:
- Timezone:
Asia/Kuala_Lumpur - NTP Server:
my.pool.ntp.org
- Timezone:
- WAN Configuration:
- Jenis: DHCP (atau PPPoE untuk Unifi/TM)
- Sekat rangkaian peribadi: Ya
- Sekat rangkaian bogon: Ya
- LAN Configuration:
- Alamat IP:
10.0.0.1/24
- Alamat IP:
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
TP-Link TL-SG108E / TL-SG3210
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.2Langkah 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-stoppedCiri 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.pcapNota Beginner: Jangan takut dengan tcpdump. Mulakan dengan command simple macam
sudo tcpdump -i eth0 port 53untuk 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 receiver941 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
SSHdanCockpit
Cara Ikut Bab Ini
- Pilih satu platform utama sahaja untuk bermula.
- Utamakan OS yang banyak dokumentasi dan komuniti, bukan yang paling βadvancedβ.
- Pastikan akses jauh berfungsi sebelum anda pasang banyak service.
Nota Beginner: Untuk ramai orang, kombinasi paling mudah ialah
Ubuntu Serveruntuk host biasa danProxmox VEjika 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 ServeratauProxmox VE. - Jika objektif anda ialah banyak service,
Proxmoxsangat sesuai. Jika anda mahu ringkas, pilihUbuntu Serverdahulu. - Pastikan
SSHberfungsi 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.
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:
- Muat turun ISO dari ubuntu.com
- Cipta USB bootable
- Boot dan ikuti wizard pemasangan
- 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-upgradesNota Beginner:
ufwadalah 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:
- Muat turun ISO dari proxmox.com
- Cipta USB bootable
- 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 -yNota 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:
- Muat naik ISO ke storan Proxmox
- Klik Create VM
- Konfigurasi:
- Nama:
ubuntu-docker - ISO: ubuntu-24.04-server.iso
- CPU: 4 cores
- RAM: 8192 MB
- Storan: 50GB (VirtIO)
- Rangkaian: vmbr0 (VirtIO)
- Nama:
Mencipta Container LXC:
- Muat turun template container (CT Templates)
- Klik Create CT
- Konfigurasi:
- Nama:
pihole - Template: debian-12-standard
- CPU: 1 core
- RAM: 512 MB
- Storan: 8GB
- Nama:
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 yesNota 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.socketAkses 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
- Faham konsep dulu sebelum klik terlalu banyak setting dalam Proxmox.
- Cuba bina satu VM mudah dan satu LXC mudah sebagai latihan.
- 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.
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):
- Datacenter β Storage β Add β NFS
- Konfigurasi:
- ID:
nas-backup - Server:
10.0.0.10 - Export:
/mnt/pool/backup - Content: VZDump backup file
- ID:
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, ContainerMencipta dan Mengurus Mesin Maya
Ini bahagian yang paling best β cipta VM pertama anda!
Langkah Mencipta VM:
- Klik Create VM di bahagian atas kanan
- Tab General:
- Node: pve
- VM ID: 100
- Name: ubuntu-docker
- Tab OS:
- ISO Image: ubuntu-24.04-server.iso
- Type: Linux, Version: 6.x - 2.6 Kernel
- Tab System:
- BIOS: OVMF (UEFI)
- Machine: q35
- SCSI Controller: VirtIO SCSI single
- Tab Disks:
- Bus: VirtIO Block
- Size: 50GB
- Discard: β (untuk SSD)
- Tab CPU:
- Cores: 4
- Type: host (prestasi terbaik)
- Tab Memory:
- Memory: 8192 MB
- Ballooning: β
- 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:
- Muat turun template: Datacenter β Storage β CT Templates β Templates
- Klik Create CT
- 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:
Pasang dan konfigurasi VM seperti yang dikehendaki
Pasang cloud-init agent (pilihan):
sudo apt install cloud-init qemu-guest-agentBersihkan:
sudo cloud-init clean sudo truncate -s 0 /etc/machine-idShutdown VM
Klik kanan β Convert to Template
Clone dari Template:
- Klik kanan pada template β Clone
- Pilih Full Clone atau Linked Clone
- Masukkan nama baru
- 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:
- Datacenter β Backup β Add
- Konfigurasi:
Storage: nas-backup
Schedule: Harian pada 02:00
Mode: Snapshot
Compress: ZSTD
Retention: Simpan 7 sandaran
Mail: admin@homelab.local
Pemulihan:
- Pilih sandaran dari storan
- Klik Restore
- Pilih VM ID dan storan sasaran
- 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:
- Datacenter β Permissions β Pools β Create
- Nama:
production,development,testing - 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 Snapshot3. 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 docker4. 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
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
- Pastikan setup single node anda stabil sebelum cuba ciri lanjutan.
- Pilih satu topik lanjutan yang benar-benar ada keperluan, contohnya GPU Passthrough.
- 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-grubLangkah 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
rebootLangkah 4: Tetapkan GPU kepada VM
- Di antara muka web Proxmox: VM β Hardware β Add β PCI Device
- Pilih GPU dari senarai
- Tandakan: All Functions, ROM-Bar, PCI-Express
- Machine Type: q35
- 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/createNota 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 statusLangkah 2: Tambah Node
# Pada node kedua (pve2)
pvecm add 10.0.20.10
# Pada node ketiga (pve3)
pvecm add 10.0.20.10Langkah 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, VZDumpLive Migration
Setelah cluster dikonfigurasi dengan storan dikongsi, anda boleh pindahkan VM antara node tanpa downtime. Ini macam βmagicβ β VM terus berjalan semasa dipindahkan!
- Klik kanan pada VM β Migrate
- Pilih node sasaran
- Pilih βOnlineβ (live migration)
- 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: 3Jika 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: 2Penggunaan 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 terraformContoh 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 destroyKelebihan Terraform untuk Homelab
- Boleh diulang β Cipta semula keseluruhan infrastruktur dari kod
- Versi β Simpan dalam Git, jejak perubahan
- Dokumentasi β Kod IS dokumentasi infrastruktur anda
- 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,3Huge 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 HugepagesVirtIO 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 -fChecklist 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
- Pasang Docker dahulu dan sahkan dengan
hello-world. - Deploy satu service mudah dahulu sebelum cuba satu stack besar.
- 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.ymldan 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, danlogs.
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.
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 $USERLog keluar dan log masuk semula untuk perubahan kumpulan berkuat kuasa.
Nota Beginner: Arahan
usermod -aG docker $USERmembolehkan anda guna Docker tanpasudosetiap 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-worldKalau 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: bridgeTip 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 --buildNota Beginner: Flag
-dbermaksud βdetachedβ β container jalan di background. Flag-fpadalogsbermaksud βfollowβ β log keluar secara live. TekanCtrl+Cuntuk 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/dockerDocker 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-stoppedNota 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 dfDocker 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-netKonfigurasi rangkaian dalam docker-compose.yml:
services:
app:
networks:
- frontend
- backend
networks:
frontend:
driver: bridge
backend:
driver: bridge
internal: true # Tiada akses internetNota Beginner: Network
internal: truebermaksud 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 pruneJenis mount:
volumes:
# Bind mount (direktori host)
- ./data:/app/data
# Named volume (diuruskan Docker)
- data-volume:/app/data
# Read-only mount
- ./config:/app/config:roTip 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.
- Jangan jalankan container sebagai root:
services:
app:
user: "1000:1000"- Hadkan sumber:
services:
app:
deploy:
resources:
limits:
cpus: '2'
memory: 1GGunakan imej rasmi dan dipercayai sahaja
Kemas kini imej secara berkala:
docker compose pull && docker compose up -d- Jangan dedahkan Docker socket tanpa perlu:
# ELAKKAN ini melainkan benar-benar perlu
volumes:
- /var/run/docker.sock:/var/run/docker.sock- Gunakan .env untuk rahsia:
# .env
DB_ROOT_PASS=kata_laluan_sangat_selamat
DB_PASS=kata_laluan_pangkalan_dataNota 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-kontenaPort sudah digunakan:
# Cari proses yang menggunakan port
sudo lsof -i :8080
sudo ss -tlnp | grep 8080Kehabisan ruang storan:
# Periksa penggunaan
docker system df
# Bersihkan
docker system prune -a --volumesMasalah kebenaran fail:
# Tetapkan pemilikan
sudo chown -R 1000:1000 ./data
# Atau gunakan PUID/PGID dalam environmentNota 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
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
- Pastikan anda benar-benar selesa dengan Docker Compose asas dahulu.
- Tambah komponen lanjutan satu demi satu, bukan serentak.
- 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 hostnameHost:
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 nginxMacvlan:
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-macvlanMacvlan 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-ipvlanRangkaian 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 internetDengan 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: webNota 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-stoppedMiddleware 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.txtLangkah 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: 3Kebergantungan berdasarkan kesihatan:
Ini sangat berguna β pastikan database dah siap sebelum app cuba connect.
services:
nextcloud:
depends_on:
mariadb:
condition: service_healthy
redis:
condition: service_startedNota Beginner:
start_periodmemberi 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 lsPortainer 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 appuserTip 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
cronsupaya 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 -dNampak 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.
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:
- Integriti data β Checksum pada setiap blok data. ZFS tahu kalau data anda corrupt.
- Snapshot β Titik pemulihan segera tanpa kos storan tambahan. Macam βsave gameβ untuk data anda.
- RAID-Z β Pelaksanaan RAID yang lebih baik dan lebih selamat.
- Mampatan β Jimat ruang storan secara telus, anda tak perasan pun.
- 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 listNota 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 listSnapshot 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 automatikPenyelenggaraan 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 -vJadual 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 datapoolLangkah 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:
- Muat turun ISO TrueNAS SCALE
- Pasang pada SSD berasingan (jangan pasang pada cakera data β penting ni!)
- 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 smbdLangkah 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.
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/restoreBackup 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.shBackup 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/documentsChecklist 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.
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 sshdCrowdSec β 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 komunitiLapisan 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 sshdNota 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:
- Gunakan kata laluan unik untuk setiap perkhidmatan β setiap satu!
- Minimum 16 aksara
- Gunakan penjana kata laluan (jangan cipta sendiri, manusia tak pandai buat random)
- Aktifkan 2FA untuk vault anda
- 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):
- Tambah Proxy Host di Nginx Proxy Manager
- Tab SSL β Request new SSL certificate
- Pilih Letβs Encrypt
- 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-dataLangkah 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-stoppedLog 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:514Langkah 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:
- JANGAN dedahkan perkhidmatan terus ke internet β ini kesilapan yang paling biasa
- Gunakan VPN (WireGuard) untuk semua akses jauh
- Kalau memang perlu, gunakan reverse proxy dengan pengesahan
- 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
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 verboseAppArmor 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 individuPengerasan 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 -pNota 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 = -1Langkah 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 : 15Saya 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 checkBackup 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 hilangLangkah 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_keysLangkah 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-reportLangkah 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.
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 ansibleStruktur 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/python3Playbook: 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: presentNota Beginner: Perhatikan betapa mudahnya YAML dibaca. Setiap task ada
nameyang 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 docker1Automasi 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>&1Langkah 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:
- Log masuk ke
http://pelayan:3000 - Tambah Prometheus sebagai data source
- 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-stoppedMenghantar pemberitahuan semudah satu baris curl:
# Dari skrip backup
curl -d "Backup selesai pada $(date)" \
http://ntfy.lab.local/homelab-alertsNota 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.logLangkah 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 MediaChecklist 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.
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-stoppedContoh 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/deploymentsNota 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 -deleteLangkah 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: restartedNota Beginner: Perhatikan
notify: restart dockerdalam 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: yesPlaybook 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 -dLangkah 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.shNota Beginner: Perhatikan
docker system prune -af --volumesdalam 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
doneLangkah 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:
- Ringkasan Sistem:
- Uptime semua pelayan
- Bilangan kontena aktif
- Penggunaan CPU keseluruhan
- Penggunaan RAM keseluruhan
- Storan:
- Penggunaan cakera setiap pelayan
- IOPS dan throughput
- Kesihatan ZFS/RAID
- Rangkaian:
- Trafik masuk/keluar
- Pertanyaan DNS (dari Pi-hole)
- Sambungan VPN aktif
- Perkhidmatan:
- Status kontena Docker
- Masa tindak balas perkhidmatan web
- Kadar ralat HTTP
- 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: infoSaluran 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.htmlLaporan 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.mdChecklist 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!
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-stoppedKonfigurasi
- Akses
http://pelayan:8096 - Cipta akaun admin
- Tambah pustaka media:
- Filem β
/data/movies - Rancangan TV β
/data/tvshows - Muzik β
/data/music
- Filem β
- Konfigurasi transcoding perkakasan (Intel Quick Sync / VAAPI)
- 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-stoppedPengoptimuman
# 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-cronNota Beginner: Nextcloud nampak macam banyak container (database, Redis, app), tapi jangan risau. Docker Compose uruskan semua tu untuk anda. Cuma
docker compose up -ddan 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-stoppedIntegrasi Popular
- 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-stoppedApa 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-stoppedApa 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-stoppedNota 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-stoppedProjek 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-stoppedProjek 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-stoppedCiri 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-stoppedApa 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!
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: 5GKonfigurasi 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-stoppedMuat 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 mistralKeperluan 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.xmlProjek 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-stoppedProjek 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-stoppedCiri 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-stoppedProjek 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-stoppedAplikasi 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-stoppedProjek 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-stoppedProjek 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-stoppedSeni 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.
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 statusDNS 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 piholeVLAN Tidak Berkomunikasi
- Periksa konfigurasi trunk port pada suis
- Pastikan VLAN tag betul pada kedua-dua suis dan firewall
- Periksa peraturan firewall antara VLAN
- Gunakan
tcpdumpuntuk mengesan paket:
# Pantau trafik pada antara muka VLAN
sudo tcpdump -i vlan20 -nNota 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:tagKontena Kehabisan Memori
# Periksa penggunaan memori
docker stats
# Hadkan memori kontena
# Dalam docker-compose.yml:
services:
app:
deploy:
resources:
limits:
memory: 1GDocker 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 -dNota 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 OrderStoran 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-clusterMasalah 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 β SummaryRAM 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 # 4GBI/O Cakera Perlahan
# Periksa I/O
iostat -x 1 5
# Periksa kesihatan cakera
sudo smartctl -a /dev/sda
# Periksa ZFS
zpool iostat -v 1 5Nota 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.100Sijil 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 renewAktiviti 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 localhostAlat 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:
- Pendekatan sistematik β Periksa dari asas (fizikal β rangkaian β aplikasi)
- Log adalah sahabat anda β Sentiasa semak log terlebih dahulu
- Google/komuniti β Anda mungkin bukan yang pertama menghadapi masalah itu
- Dokumentasi β Rekod penyelesaian untuk rujukan masa hadapan
- 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
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:
- Pengenalan Homelab β Mengapa ia berguna dan komponen asasnya
- Perancangan β Merancang bajet, rangkaian, dan keperluan
- Perkakasan β Memilih CPU, RAM, storan, dan peralatan rangkaian
- Rangkaian β Konfigurasi router, VLAN, DNS, dan VPN
- Sistem Pengendalian β Linux, Proxmox VE, TrueNAS
- Virtualisasi β VM, LXC, template, dan sandaran
- Docker β Kontena, Docker Compose, dan stack homelab
- Storan β ZFS, RAID, NAS, dan strategi sandaran 3-2-1
- Keselamatan β Firewall, 2FA, enkripsi, dan pemantauan
- Automasi β Ansible, Prometheus, Grafana, dan amaran
- Projek β Jellyfin, Nextcloud, Home Assistant, dan banyak lagi
- 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.β