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!
Tahap kesukaran: Senang
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.
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!
services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin ports: - "8096:8096" volumes: - ./jellyfin/config:/config - ./jellyfin/cache:/cache - /mnt/media/movies:/data/movies:ro - /mnt/media/tvshows:/data/tvshows:ro - /mnt/media/music:/data/music:ro environment: - TZ=Asia/Kuala_Lumpur devices: - /dev/dri:/dev/dri # Untuk transcoding perkakasan restart: unless-stopped
http://pelayan:8096
/data/movies
/data/tvshows
/data/music
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.
Tahap kesukaran: Sederhana
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.
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.
services: nextcloud-db: image: mariadb:latest container_name: nextcloud-db environment: MYSQL_ROOT_PASSWORD: rootpass123 MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: dbpass123 volumes: - ./nextcloud/db:/var/lib/mysql restart: unless-stopped nextcloud-redis: image: redis:alpine container_name: nextcloud-redis restart: unless-stopped nextcloud: image: nextcloud:latest container_name: nextcloud ports: - "8080:80" environment: MYSQL_HOST: nextcloud-db MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: dbpass123 REDIS_HOST: nextcloud-redis NEXTCLOUD_TRUSTED_DOMAINS: "cloud.lab.local" OVERWRITEPROTOCOL: https volumes: - ./nextcloud/html:/var/www/html - /mnt/data/nextcloud:/var/www/html/data depends_on: - nextcloud-db - nextcloud-redis restart: unless-stopped
# Masuk ke kontena untuk konfigurasi tambahan docker exec -it nextcloud bash # Aktifkan cron untuk tugasan latar belakang # Di Nextcloud → Settings → Basic settings → Background jobs → Cron # Tambah cron job pada hos echo "*/5 * * * * docker exec -u www-data nextcloud php cron.php" | \ sudo tee /etc/cron.d/nextcloud-cron
Nota Beginner: Nextcloud nampak macam banyak container (database, Redis, app), tapi jangan risau. Docker Compose uruskan semua tu untuk anda. Cuma docker compose up -d dan semuanya jalan.
docker compose up -d
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.
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”.
services: homeassistant: image: ghcr.io/home-assistant/home-assistant:stable container_name: homeassistant network_mode: host privileged: true volumes: - ./homeassistant/config:/config - /etc/localtime:/etc/localtime:ro - /run/dbus:/run/dbus:ro restart: unless-stopped
# 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!"
Gitea adalah pelayan Git ringan yang serupa GitHub, tapi jalan di pelayan anda sendiri. Tempat anda simpan semua kod dan konfigurasi homelab.
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!
services: gitea: image: gitea/gitea:latest container_name: gitea ports: - "3000:3000" - "2222:22" environment: USER_UID: 1000 USER_GID: 1000 GITEA__database__DB_TYPE: sqlite3 GITEA__server__ROOT_URL: https://git.lab.local GITEA__server__SSH_PORT: 2222 volumes: - ./gitea/data:/data - /etc/timezone:/etc/timezone:ro restart: unless-stopped
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.
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.
services: pihole: image: pihole/pihole:latest container_name: pihole ports: - "53:53/tcp" - "53:53/udp" - "8081:80" environment: TZ: Asia/Kuala_Lumpur WEBPASSWORD: kata_laluan_admin PIHOLE_DNS_: "10.0.0.2#5335" volumes: - ./pihole/etc-pihole:/etc/pihole - ./pihole/etc-dnsmasq.d:/etc/dnsmasq.d restart: unless-stopped unbound: image: mvance/unbound:latest container_name: unbound ports: - "5335:53/tcp" - "5335:53/udp" volumes: - ./unbound:/opt/unbound/etc/unbound restart: unless-stopped
Nota Beginner: Unbound tu optional. Kalau nak senang, guna Pi-hole sahaja dulu. Unbound tambah lapisan privasi DNS, tapi boleh tambah kemudian.
Vaultwarden adalah pengurus kata laluan yang serasi dengan klien Bitwarden di semua platform. Simpan semua kata laluan anda dengan selamat di pelayan anda sendiri.
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.
services: vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden ports: - "8000:80" environment: DOMAIN: https://vault.lab.local SIGNUPS_ALLOWED: "false" WEBSOCKET_ENABLED: "true" ADMIN_TOKEN: token_admin_selamat volumes: - ./vaultwarden/data:/data restart: unless-stopped
Nota Beginner: Pastikan anda backup data Vaultwarden secara berkala. Kalau hilang database ni, hilang semua kata laluan. Backup, backup, backup!
Kalau anda dah ikut bab automasi, anda dah ada setup ni. Grafana bagi anda dashboard yang cantik untuk pantau semua service.
Nak tahu kalau internet anda “lagging”? Smokeping track kependaman rangkaian secara berterusan dan buat graf yang cantik.
services: smokeping: image: lscr.io/linuxserver/smokeping:latest container_name: smokeping environment: PUID: 1000 PGID: 1000 TZ: Asia/Kuala_Lumpur volumes: - ./smokeping/config:/config - ./smokeping/data:/data ports: - "8085:80" restart: unless-stopped
Kavita macam Kindle library, tapi untuk koleksi ebook dan komik digital anda sendiri. Interface dia cantik, boleh baca terus dalam browser.
services: kavita: image: jvmilazz0/kavita:latest container_name: kavita ports: - "5000:5000" volumes: - ./kavita/config:/kavita/config - /mnt/media/books:/books:ro - /mnt/media/manga:/manga:ro restart: unless-stopped
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.
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.
services: immich-server: image: ghcr.io/immich-app/immich-server:release container_name: immich-server ports: - "2283:2283" volumes: - /mnt/data/photos:/usr/src/app/upload environment: DB_HOSTNAME: immich-db DB_USERNAME: postgres DB_PASSWORD: postgres DB_DATABASE_NAME: immich REDIS_HOSTNAME: immich-redis depends_on: - immich-db - immich-redis restart: unless-stopped immich-db: image: tensorchord/pgvecto-rs:pg14-v0.2.0 container_name: immich-db environment: POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres POSTGRES_DB: immich volumes: - ./immich/db:/var/lib/postgresql/data restart: unless-stopped immich-redis: image: redis:alpine container_name: immich-redis restart: unless-stopped
BookStack adalah wiki peribadi untuk dokumentasikan semua benda berkaitan homelab anda. Fikir ia macam “buku nota digital” yang tersusun dan boleh dicari.
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.
services: bookstack: image: lscr.io/linuxserver/bookstack:latest container_name: bookstack ports: - "6875:80" environment: PUID: 1000 PGID: 1000 APP_URL: https://wiki.lab.local DB_HOST: bookstack-db DB_DATABASE: bookstack DB_USER: bookstack DB_PASS: bookstack123 volumes: - ./bookstack/config:/config depends_on: - bookstack-db restart: unless-stopped bookstack-db: image: mariadb:latest container_name: bookstack-db environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: bookstack MYSQL_USER: bookstack MYSQL_PASSWORD: bookstack123 volumes: - ./bookstack/db:/var/lib/mysql restart: unless-stopped
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!