Wednesday

18-06-2025 Vol 19

How I Built My Self-Hosted Homelab with Docker on Ubuntu 24.04

Membangun Homelab Self-Hosted dengan Docker di Ubuntu 24.04: Panduan Lengkap

Selamat datang! Di era digital ini, memiliki homelab self-hosted menjadi semakin populer, baik untuk pembelajaran, pengembangan, atau sekadar mengendalikan data Anda sendiri. Dalam panduan komprehensif ini, saya akan memandu Anda melalui proses membangun homelab self-hosted pribadi saya menggunakan Docker di Ubuntu 24.04. Saya akan membahas pilihan perangkat keras, instalasi Ubuntu, konfigurasi Docker, dan beberapa aplikasi menarik yang dapat Anda host sendiri. Mari kita mulai!

Daftar Isi

  1. Pendahuluan
    • Mengapa Membangun Homelab?
    • Apa Itu Docker dan Mengapa Menggunakannya?
    • Mengapa Ubuntu 24.04?
  2. Perencanaan dan Persiapan
    • Kebutuhan Perangkat Keras
    • Pilihan Perangkat Keras yang Direkomendasikan
    • Persiapan Lingkungan
  3. Instalasi Ubuntu 24.04
    • Mengunduh dan Membuat USB Bootable
    • Proses Instalasi
    • Konfigurasi Awal
  4. Instalasi dan Konfigurasi Docker
    • Menambahkan Repositori Docker
    • Menginstal Docker Engine, CLI, dan Compose
    • Konfigurasi Pasca-Instalasi
    • Mengelola Docker sebagai Non-Root User
  5. Menggunakan Docker Compose
    • Apa Itu Docker Compose?
    • Membuat File docker-compose.yml Pertama Anda
    • Contoh Docker Compose untuk Beberapa Aplikasi
  6. Aplikasi Populer untuk Homelab Anda
    • Nextcloud: Cloud Penyimpanan Pribadi
    • Plex Media Server: Server Media Streaming
    • Home Assistant: Otomatisasi Rumah
    • Pi-hole: Pemblokir Iklan di Seluruh Jaringan
    • Jellyfin: Alternatif Open Source untuk Plex
    • Vaultwarden: Server Pengelola Kata Sandi
    • Portainer: Antarmuka Manajemen Docker
  7. Keamanan Homelab Anda
    • Firewall (UFW)
    • Reverse Proxy (NGINX atau Traefik)
    • Sertifikat SSL (Let’s Encrypt)
    • Keamanan Kontainer Docker
  8. Monitoring dan Pemeliharaan
    • Netdata
    • Watchtower
    • Backup Otomatis
  9. Tips dan Trik
    • Mengoptimalkan Kinerja
    • Troubleshooting Umum
    • Skrip Otomatis
  10. Kesimpulan

1. Pendahuluan

Mengapa Membangun Homelab?

Membangun homelab memberikan banyak manfaat, termasuk:

  • Pembelajaran dan Eksperimen: Lingkungan yang aman untuk menguji teknologi baru, bahasa pemrograman, dan konfigurasi sistem.
  • Kontrol Data: Mengendalikan data pribadi Anda dan menghindari ketergantungan pada layanan pihak ketiga.
  • Pengembangan: Lingkungan lokal untuk pengembangan aplikasi dan pengujian sebelum deployment ke produksi.
  • Otomatisasi Rumah: Mengintegrasikan dan mengotomatiskan perangkat rumah pintar.
  • Privasi: Mengurangi jejak digital Anda dan melindungi privasi Anda.

Apa Itu Docker dan Mengapa Menggunakannya?

Docker adalah platform kontainerisasi yang memungkinkan Anda mengemas aplikasi dan dependensinya ke dalam wadah yang terisolasi. Ini memungkinkan Anda untuk dengan mudah memindahkan aplikasi antar lingkungan yang berbeda, seperti laptop Anda, server pengujian, dan server produksi.

Berikut beberapa alasan mengapa Docker sangat berguna untuk homelab:

  • Isolasi: Aplikasi berjalan dalam kontainer terisolasi, mencegah konflik dependensi.
  • Portabilitas: Kontainer dapat dipindahkan dengan mudah antara mesin yang berbeda.
  • Konsistensi: Memastikan aplikasi berjalan dengan cara yang sama di semua lingkungan.
  • Efisiensi Sumber Daya: Kontainer lebih ringan daripada mesin virtual, menggunakan lebih sedikit sumber daya.
  • Manajemen Mudah: Docker Compose memungkinkan Anda mengelola aplikasi multi-kontainer dengan mudah.

Mengapa Ubuntu 24.04?

Ubuntu 24.04 adalah pilihan yang sangat baik untuk homelab karena:

  • Stabilitas: Ubuntu adalah distribusi Linux yang stabil dan tepercaya.
  • Dukungan Komunitas: Komunitas Ubuntu besar dan aktif, menyediakan banyak sumber daya dan dukungan.
  • Kemudahan Penggunaan: Ubuntu mudah digunakan, bahkan untuk pemula Linux.
  • Dukungan Perangkat Keras: Ubuntu mendukung berbagai macam perangkat keras.
  • Pembaruan Jangka Panjang (LTS): Ubuntu LTS didukung selama 5 tahun, memberikan stabilitas dan keamanan jangka panjang.

2. Perencanaan dan Persiapan

Kebutuhan Perangkat Keras

Kebutuhan perangkat keras untuk homelab Anda akan tergantung pada aplikasi yang ingin Anda jalankan. Berikut adalah beberapa pertimbangan umum:

  • CPU: Prosesor yang kuat akan meningkatkan kinerja aplikasi Anda. Minimal disarankan CPU dengan 4 core.
  • RAM: RAM yang cukup penting untuk menjalankan banyak aplikasi secara bersamaan. Minimal disarankan 8GB, tetapi 16GB atau lebih akan lebih baik.
  • Penyimpanan: Ukuran penyimpanan akan tergantung pada data yang ingin Anda simpan. Gunakan SSD untuk kinerja yang lebih baik. Pertimbangkan untuk menggunakan RAID untuk redundansi data.
  • Jaringan: Koneksi jaringan yang stabil dan cepat penting untuk mengakses homelab Anda dari jarak jauh.

Pilihan Perangkat Keras yang Direkomendasikan

Berikut beberapa opsi perangkat keras yang populer untuk homelab:

  • Mini PC: Opsi hemat daya dan ringkas, seperti Intel NUC atau Raspberry Pi (untuk aplikasi yang ringan).
  • Server Bekas: Pilihan yang terjangkau dengan banyak sumber daya, tetapi mungkin lebih bising dan menggunakan lebih banyak daya.
  • Desktop Bekas: Opsi yang baik jika Anda sudah memiliki komputer desktop yang tidak digunakan.
  • NAS (Network Attached Storage): Cocok untuk penyimpanan data dan menjalankan aplikasi ringan.

Persiapan Lingkungan

Sebelum memulai, pastikan Anda memiliki:

  • Perangkat Keras: Komputer atau server yang akan Anda gunakan sebagai homelab.
  • Koneksi Internet: Koneksi internet yang stabil.
  • USB Drive: USB drive minimal 8GB untuk membuat media instalasi Ubuntu.
  • Akses ke Router: Akses ke router Anda untuk mengkonfigurasi penerusan port dan DNS.

3. Instalasi Ubuntu 24.04

Mengunduh dan Membuat USB Bootable

  1. Unduh image ISO Ubuntu 24.04 Desktop dari situs web resmi Ubuntu.
  2. Unduh dan instal alat seperti Rufus (Windows), Etcher (Windows, macOS, Linux), atau dd (Linux) untuk membuat USB bootable.
  3. Buka alat yang Anda pilih.
  4. Pilih image ISO Ubuntu yang Anda unduh.
  5. Pilih USB drive Anda sebagai target.
  6. Mulai proses pembuatan USB bootable.

Proses Instalasi

  1. Masukkan USB bootable ke dalam komputer yang akan Anda gunakan sebagai homelab.
  2. Nyalakan komputer dan masuk ke BIOS/UEFI. Biasanya, Anda dapat menekan tombol seperti Delete, F2, F12, atau Esc selama startup.
  3. Ubah urutan boot untuk memprioritaskan USB drive.
  4. Simpan perubahan dan keluar dari BIOS/UEFI.
  5. Komputer akan boot dari USB drive.
  6. Ikuti petunjuk di layar untuk memulai proses instalasi Ubuntu.
  7. Pilih bahasa dan tata letak keyboard Anda.
  8. Pilih opsi “Erase disk and install Ubuntu” (ini akan menghapus semua data di disk Anda, jadi pastikan Anda telah mencadangkan data penting). Atau, pilih opsi “Something else” jika Anda ingin melakukan partisi manual.
  9. Buat akun pengguna dan tetapkan kata sandi.
  10. Tunggu hingga proses instalasi selesai.
  11. Setelah instalasi selesai, reboot komputer.

Konfigurasi Awal

  1. Setelah reboot, masuk dengan akun pengguna yang Anda buat.
  2. Buka terminal (Ctrl+Alt+T).
  3. Perbarui daftar paket: sudo apt update
  4. Tingkatkan paket yang diinstal: sudo apt upgrade
  5. Instal paket yang berguna: sudo apt install vim curl wget net-tools htop
  6. Konfigurasi zona waktu: sudo timedatectl set-timezone [Zona_Waktu_Anda] (contoh: sudo timedatectl set-timezone Asia/Jakarta)

4. Instalasi dan Konfigurasi Docker

Menambahkan Repositori Docker

  1. Perbarui daftar paket: sudo apt update
  2. Instal paket yang memungkinkan apt untuk menggunakan repositori melalui HTTPS: sudo apt install apt-transport-https ca-certificates curl software-properties-common
  3. Tambahkan kunci GPG resmi Docker: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  4. Tambahkan repositori Docker ke APT: echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Menginstal Docker Engine, CLI, dan Compose

  1. Perbarui daftar paket: sudo apt update
  2. Instal Docker Engine, CLI, dan Containerd: sudo apt install docker-ce docker-ce-cli containerd.io
  3. Verifikasi instalasi dengan menjalankan: sudo docker run hello-world

Konfigurasi Pasca-Instalasi

  1. Mulai Docker saat boot: sudo systemctl enable docker.service
  2. Mulai Docker: sudo systemctl start docker.service
  3. Periksa status Docker: sudo systemctl status docker.service

Mengelola Docker sebagai Non-Root User

  1. Tambahkan pengguna Anda ke grup docker: sudo usermod -aG docker $USER
  2. Keluar dan masuk kembali atau reboot komputer Anda agar perubahan grup diterapkan.
  3. Verifikasi bahwa Anda dapat menjalankan perintah Docker tanpa sudo: docker run hello-world

5. Menggunakan Docker Compose

Apa Itu Docker Compose?

Docker Compose adalah alat untuk mendefinisikan dan menjalankan aplikasi multi-kontainer. Dengan Compose, Anda menggunakan file YAML untuk mengkonfigurasi layanan aplikasi Anda. Kemudian, dengan satu perintah, Anda dapat membuat dan memulai semua layanan dari konfigurasi Anda.

Membuat File docker-compose.yml Pertama Anda

  1. Buat direktori untuk proyek Anda: mkdir my-app
  2. Pindah ke direktori proyek: cd my-app
  3. Buat file docker-compose.yml: vim docker-compose.yml
  4. Tempelkan konfigurasi berikut ke dalam file docker-compose.yml:
version: "3.9"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  
  1. Buat direktori html: mkdir html
  2. Buat file index.html di dalam direktori html: vim html/index.html
  3. Tempelkan konten HTML berikut ke dalam file index.html:
<!DOCTYPE html>
<html>
<head>
    <title>Selamat Datang di Nginx!</title>
</head>
<body>
    <h1>Ini adalah Homelab Saya!</h1>
    <p>Nginx berhasil di-host menggunakan Docker Compose.</p>
</body>
</html>
  
  1. Jalankan aplikasi Anda: docker-compose up -d
  2. Buka browser web Anda dan kunjungi http://localhost atau http://[IP_Address_Server_Anda]. Anda akan melihat halaman HTML yang Anda buat.
  3. Hentikan aplikasi Anda: docker-compose down

Contoh Docker Compose untuk Beberapa Aplikasi

Berikut adalah contoh file docker-compose.yml yang menjalankan Nextcloud dan MariaDB:

version: "3.9"
services:
  db:
    image: mariadb:10.6
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: [PASSWORD_ROOT_ANDA]
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: [PASSWORD_USER_ANDA]
    volumes:
      - db_data:/var/lib/mysql

  app:
    image: nextcloud:latest
    restart: always
    ports:
      - 8080:80
    volumes:
      - nextcloud_data:/var/www/html
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: [PASSWORD_USER_ANDA]
      NEXTCLOUD_TRUSTED_DOMAINS: [IP_Address_Server_Anda]
    depends_on:
      - db

volumes:
  db_data:
  nextcloud_data:
  

Ganti [PASSWORD_ROOT_ANDA] dan [PASSWORD_USER_ANDA] dengan kata sandi yang kuat dan [IP_Address_Server_Anda] dengan alamat IP server Anda.

6. Aplikasi Populer untuk Homelab Anda

Nextcloud: Cloud Penyimpanan Pribadi

Nextcloud adalah platform kolaborasi dan penyimpanan file open-source yang memungkinkan Anda mengontrol data Anda. Ini adalah alternatif yang sangat baik untuk layanan cloud publik seperti Google Drive atau Dropbox.

Manfaat:

  • Kontrol data penuh
  • Sinkronisasi dan berbagi file
  • Kalender, kontak, dan tugas
  • Aplikasi seluler

Plex Media Server: Server Media Streaming

Plex Media Server memungkinkan Anda mengelola dan mengalirkan media pribadi Anda ke berbagai perangkat, seperti TV, ponsel, dan tablet.

Manfaat:

  • Organisasi media yang mudah
  • Streaming ke berbagai perangkat
  • Metadata otomatis
  • Berbagi dengan teman dan keluarga

Home Assistant: Otomatisasi Rumah

Home Assistant adalah platform otomatisasi rumah open-source yang memungkinkan Anda mengontrol perangkat rumah pintar Anda dari satu antarmuka.

Manfaat:

  • Kontrol terpusat untuk perangkat rumah pintar
  • Otomatisasi berbasis aturan
  • Integrasi dengan berbagai perangkat dan layanan
  • Antarmuka yang dapat disesuaikan

Pi-hole: Pemblokir Iklan di Seluruh Jaringan

Pi-hole adalah pemblokir iklan DNS yang melindungi semua perangkat di jaringan Anda dari iklan dan pelacak.

Manfaat:

  • Pemblokiran iklan di seluruh jaringan
  • Peningkatan privasi
  • Peningkatan kecepatan browsing
  • Mudah dikonfigurasi dan dikelola

Jellyfin: Alternatif Open Source untuk Plex

Jellyfin adalah sistem perangkat lunak media yang gratis dan sumber terbuka. Ini memungkinkan Anda untuk mengelola dan mengalirkan media Anda, mirip dengan Plex.

Manfaat:

  • Gratis dan open source
  • Tidak ada pelacakan atau pengumpulan data
  • Organisasi media yang mudah
  • Streaming ke berbagai perangkat

Vaultwarden: Server Pengelola Kata Sandi

Vaultwarden adalah implementasi ringan dari server pengelola kata sandi Bitwarden. Ini memungkinkan Anda untuk menghosting pengelola kata sandi pribadi Anda.

Manfaat:

  • Kontrol data kata sandi Anda
  • Berbagi kata sandi yang aman dengan tim atau keluarga
  • Aplikasi dan ekstensi browser yang kompatibel dengan Bitwarden
  • Opsi self-hosting

Portainer: Antarmuka Manajemen Docker

Portainer adalah antarmuka pengguna grafis (GUI) berbasis web untuk mengelola lingkungan Docker Anda. Ini menyederhanakan pengelolaan kontainer, gambar, dan volume Docker.

Manfaat:

  • Mudah digunakan
  • Mengelola kontainer, gambar, dan volume Docker
  • Memonitor kinerja kontainer
  • Mendukung Docker Standalone, Swarm, dan Kubernetes

7. Keamanan Homelab Anda

Firewall (UFW)

UFW (Uncomplicated Firewall) adalah firewall yang mudah digunakan untuk Ubuntu. Ini membantu melindungi homelab Anda dari akses yang tidak sah.

  1. Instal UFW: sudo apt install ufw
  2. Aktifkan UFW: sudo ufw enable
  3. Izinkan SSH: sudo ufw allow ssh atau sudo ufw allow 22
  4. Izinkan HTTP: sudo ufw allow http atau sudo ufw allow 80
  5. Izinkan HTTPS: sudo ufw allow https atau sudo ufw allow 443
  6. Periksa status UFW: sudo ufw status

Reverse Proxy (NGINX atau Traefik)

Reverse proxy mengarahkan lalu lintas masuk ke aplikasi Anda dan menyediakan lapisan keamanan tambahan. NGINX dan Traefik adalah dua pilihan populer.

NGINX:

  1. Instal NGINX: sudo apt install nginx
  2. Konfigurasi NGINX untuk meneruskan lalu lintas ke aplikasi Anda.
  3. Aktifkan dan mulai NGINX: sudo systemctl enable nginx dan sudo systemctl start nginx

Traefik:

Traefik secara otomatis mengkonfigurasi dirinya sendiri untuk meneruskan lalu lintas ke aplikasi Anda berdasarkan label Docker.

Sertifikat SSL (Let’s Encrypt)

Sertifikat SSL mengenkripsi lalu lintas antara browser web dan server Anda, melindungi data sensitif. Let’s Encrypt adalah otoritas sertifikat gratis yang mudah digunakan.

  1. Instal Certbot: sudo apt install certbot python3-certbot-nginx
  2. Dapatkan sertifikat SSL untuk domain Anda: sudo certbot --nginx -d [domain_anda]
  3. Certbot akan secara otomatis mengkonfigurasi NGINX untuk menggunakan sertifikat SSL Anda.

Keamanan Kontainer Docker

  • Gunakan image Docker resmi dari sumber tepercaya.
  • Perbarui image Docker secara teratur.
  • Gunakan akun pengguna non-root di dalam kontainer.
  • Batasi sumber daya kontainer (CPU, RAM, penyimpanan).
  • Gunakan Docker Secrets untuk mengelola kata sandi dan kunci API.

8. Monitoring dan Pemeliharaan

Netdata

Netdata adalah alat monitoring sistem real-time yang memberikan wawasan mendalam tentang kinerja homelab Anda.

  1. Instal Netdata: bash <(curl -s https://my-netdata.io/kickstart.sh)
  2. Buka browser web Anda dan kunjungi http://[IP_Address_Server_Anda]:19999 untuk melihat dasbor Netdata.

Watchtower

Watchtower secara otomatis memperbarui image Docker Anda ke versi terbaru.

  1. Jalankan Watchtower sebagai kontainer Docker: docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower

Backup Otomatis

Backup reguler penting untuk melindungi data Anda dari kehilangan data.

  1. Gunakan alat seperti Duplicati atau Restic untuk membuat backup otomatis data Anda ke penyimpanan eksternal atau cloud.
  2. Pastikan untuk mencadangkan konfigurasi Docker Anda dan volume data persisten.

9. Tips dan Trik

Mengoptimalkan Kinerja

  • Gunakan SSD untuk kinerja yang lebih baik.
  • Berikan RAM yang cukup ke kontainer Docker Anda.
  • Optimalkan konfigurasi aplikasi Anda.
  • Pantau kinerja sistem Anda dengan Netdata.

Troubleshooting Umum

  • Periksa log Docker untuk pesan kesalahan.
  • Cari solusi online di forum dan dokumentasi Docker.
  • Pastikan semua dependensi terpenuhi.
  • Reboot server Anda.

Skrip Otomatis

Otomatiskan tugas-tugas umum dengan skrip Bash.

Contoh: Skrip untuk mencadangkan volume Docker:

#!/bin/bash

# Direktori backup
BACKUP_DIR="/mnt/backup"

# Volume yang akan dicadangkan
VOLUME_NAME="nextcloud_data"

# Tanggal saat ini
DATE=$(date +%Y-%m-%d)

# Nama file backup
BACKUP_FILE="$BACKUP_DIR/$VOLUME_NAME-$DATE.tar.gz"

# Hentikan kontainer yang menggunakan volume
docker stop nextcloud_app

# Buat arsip backup
docker run --rm -v $VOLUME_NAME:/data -v $BACKUP_DIR:/backup alpine tar czvf /backup/$VOLUME_NAME-$DATE.tar.gz /data

# Mulai kembali kontainer
docker start nextcloud_app

echo "Backup selesai: $BACKUP_FILE"
  

10. Kesimpulan

Selamat! Anda telah berhasil membangun homelab self-hosted dengan Docker di Ubuntu 24.04. Dengan panduan ini, Anda sekarang memiliki fondasi yang kuat untuk menjelajahi berbagai aplikasi dan layanan yang dapat Anda host sendiri. Ingatlah untuk selalu memprioritaskan keamanan, pemantauan, dan pemeliharaan untuk memastikan homelab Anda tetap aman dan stabil.

Semoga panduan ini bermanfaat. Selamat bereksperimen dan membangun!

“`

omcoding

Leave a Reply

Your email address will not be published. Required fields are marked *