🏠 Raspberry Pi

Raspberry Pi Home Server: NAS, Pi-hole, VPN & Media Server

Panduan lengkap membangun home server menggunakan Raspberry Pi β€” NAS dengan Samba, Pi-hole ad blocker, WireGuard VPN, Plex/Jellyfin media server, Docker Compose, dan self-hosted services lainnya

1. Pengenalan Raspberry Pi Home Server

Raspberry Pi Home Server adalah setup di mana Raspberry Pi digunakan sebagai server pribadi di rumah untuk berbagai layanan: penyimpanan file (NAS), pemblokir iklan (Pi-hole), VPN pribadi, media streaming, dan banyak lagi. Dengan daya listrik yang sangat rendah (~5-10W), Raspberry Pi bisa berjalan 24/7 tanpa tagihan listrik yang besar.

Menggunakan Raspberry Pi sebagai home server adalah langkah pertama menuju self-hosting β€” mengendalikan data dan layanan Anda sendiri tanpa bergantung pada layanan cloud berbayar. Anda belajar Linux system administration, networking, dan DevOps secara praktis.

Layanan yang Akan Dibangun

LayananFungsiPortContainer
Samba NASFile sharing jaringan (SMB/CIFS)445Native
Pi-holeDNS ad blocker untuk seluruh jaringan53, 80Docker
WireGuardVPN pribadi untuk akses dari luar51820Docker
JellyfinMedia server (film, musik, foto)8096Docker
NextcloudCloud storage pribadi (alternatif Google Drive)8080Docker
PortainerDashboard manajemen Docker9000Docker
Uptime KumaMonitoring uptime layanan3001Docker

Keuntungan Self-Hosting

AspekSelf-Hosted (Raspberry Pi)Cloud Service
Biaya🟒 Satu kali beli, listrik ~Rp 30rb/bulanπŸ”΄ Langganan bulanan terus-menerus
Privasi🟒 Data di rumah Anda sendiriπŸ”΄ Data di server orang lain
Kontrol🟒 Full control atas semua konfigurasiπŸ”΄ Terbatas pada fitur yang disediakan
InternetπŸ”΄ Butuh internet untuk akses dari luar🟒 Selalu online
BackupπŸ”΄ Tanggung jawab sendiri🟒 Biasanya di-backup provider
ReliabilityπŸ”΄ Single point of failure🟒 Redundant infrastructure

2. Persiapan Hardware

Daftar Komponen

KomponenRekomendasiEst. Harga
Raspberry PiRaspberry Pi 4 Model B (4GB/8GB RAM)Rp 1.200.000 - 1.500.000
SSD/SSD ExternalSSD 256GB-1TB via USB 3.0 enclosureRp 300.000 - 1.000.000
USB 3.0 EnclosureSATA to USB 3.0 (UASP support)Rp 80.000
MicroSD Card32GB A2 class (untuk boot)Rp 80.000
Power SupplyOfficial RPi PSU USB-C 5V/3ARp 150.000
Ethernet CableCat6 ke routerRp 30.000
Casing + FanCasing dengan kipas aktifRp 100.000
UPS (opsional)Mini UPS untuk perlindungan mati listrikRp 200.000

Setup Awal Raspberry Pi

# ============================================
# Setup Raspberry Pi OS untuk Home Server
# Gunakan Raspberry Pi OS Lite (64-bit, headless)
# ============================================

# 1. Flash OS menggunakan Raspberry Pi Imager
#    Pilih: Raspberry Pi OS Lite (64-bit)
#    Advanced options: set hostname, enable SSH, set user

# 2. Boot dan SSH masuk
ssh pi@raspberrypi.local

# 3. Update sistem
sudo apt update && sudo apt upgrade -y

# 4. Set static IP (edit /etc/dhcpcd.conf)
sudo tee -a /etc/dhcpcd.conf <<'EOF'
interface eth0
static ip_address=192.168.1.10/24
static routers=192.168.1.1
static domain_name_servers=1.1.1.1 8.8.8.8
EOF
sudo systemctl restart dhcpcd

# 5. Mount SSD external
# Cek nama device SSD
lsblk
# Misal: /dev/sda

# Format SSD (sekali saja!)
sudo mkfs.ext4 /dev/sda1

# Buat mount point
sudo mkdir -p /mnt/storage

# Mount SSD
sudo mount /dev/sda1 /mnt/storage

# Set permission
sudo chown -R pi:pi /mnt/storage

# Auto-mount saat boot (tambahkan ke /etc/fstab)
echo '/dev/sda1 /mnt/storage ext4 defaults,noatime 0 2' | sudo tee -a /etc/fstab

# 6. Install utilitas dasar
sudo apt install -y htop curl wget git tmux \
  net-tools unattended-upgrades

# 7. Enable automatic security updates
sudo dpkg-reconfigure -plow unattended-upgrades

# 8. Konfigurasi firewall dasar
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow from 192.168.1.0/24
sudo ufw enable
sudo ufw status

3. Docker & Docker Compose

Docker adalah platform containerization yang memungkinkan kita menjalankan aplikasi dalam container yang terisolasi. Docker Compose memudahkan deploy beberapa layanan sekaligus dengan satu file konfigurasi.

# ============================================
# Install Docker dan Docker Compose
# ============================================

# Install Docker
curl -fsSL https://get.docker.com | sh

# Tambahkan user pi ke grup docker
sudo usermod -aG docker pi

# Aktifkan Docker
sudo systemctl enable docker
sudo systemctl start docker

# Verifikasi
docker --version
docker compose version

# Install Portainer (Docker management UI)
docker volume create portainer_data

docker run -d \
  --name portainer \
  --restart=always \
  -p 9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

# Akses Portainer: http://192.168.1.10:9000

# ============================================
# Docker Compose untuk semua layanan
# ============================================

# Buat direktori untuk konfigurasi
mkdir -p ~/home-server
cd ~/home-server

# Buat file docker-compose.yml
cat <<'EOF' > docker-compose.yml
version: '3.8'

services:
  # ===== Pi-hole DNS Ad Blocker =====
  pihole:
    image: pihole/pihole:latest
    container_name: pihole
    restart: unless-stopped
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "8053:80/tcp"
    environment:
      TZ: 'Asia/Jakarta'
      WEBPASSWORD: 'ubah-password-ini'
      DNSMASQ_LISTENING: 'all'
    volumes:
      - ./pihole/etc-pihole:/etc/pihole
      - ./pihole/etc-dnsmasq.d:/etc/dnsmasq.d
    cap_add:
      - NET_ADMIN
    networks:
      - server-net

  # ===== WireGuard VPN =====
  wireguard:
    image: linuxserver/wireguard:latest
    container_name: wireguard
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      TZ: 'Asia/Jakarta'
      SERVERURL: 'auto'
      SERVERPORT: '51820'
      PEERS: '3'
      PEERDNS: 'auto'
    volumes:
      - ./wireguard/config:/config
      - /lib/modules:/lib/modules
    ports:
      - "51820:51820/udp"
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    networks:
      - server-net

  # ===== Jellyfin Media Server =====
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    ports:
      - "8096:8096"
    environment:
      TZ: 'Asia/Jakarta'
    volumes:
      - ./jellyfin/config:/config
      - ./jellyfin/cache:/cache
      - /mnt/storage/media:/media:ro
    networks:
      - server-net

  # ===== Uptime Kuma (Monitoring) =====
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - ./uptime-kuma/data:/app/data
    networks:
      - server-net

networks:
  server-net:
    driver: bridge
EOF

# Jalankan semua layanan
docker compose up -d

# Cek status
docker compose ps
docker compose logs -f

4. NAS dengan Samba

Network Attached Storage (NAS) memungkinkan Anda berbagi file ke semua perangkat di jaringan rumah (PC, laptop, smart TV, HP). Samba menggunakan protokol SMB/CIFS yang didukung oleh Windows, macOS, Linux, Android, dan iOS.

# ============================================
# Setup Samba NAS
# ============================================

# 1. Install Samba
sudo apt install samba samba-common-bin -y

# 2. Backup konfigurasi default
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

# 3. Konfigurasi Samba
sudo tee /etc/samba/smb.conf <<'EOF'
[global]
   workgroup = HOMENET
   server string = Raspberry Pi NAS
   security = user
   map to guest = never
   dns proxy = no
   interfaces = eth0
   bind interfaces only = yes

   # Optimasi performa
   socket options = TCP_NODELAY IPTOS_LOWDELAY
   read raw = yes
   write raw = yes
   max xmit = 65535
   dead time = 15
   getwd cache = yes

[shared]
   comment = Shared Storage
   path = /mnt/storage/shared
   browseable = yes
   read only = no
   create mask = 0664
   directory mask = 0775
   valid users = @nasusers

[media]
   comment = Media Files
   path = /mnt/storage/media
   browseable = yes
   read only = no
   create mask = 0664
   directory mask = 0775
   valid users = @nasusers

[backup]
   comment = Backup Folder
   path = /mnt/storage/backup
   browseable = yes
   read only = no
   create mask = 0664
   directory mask = 0775
   valid users = @nasusers
EOF

# 4. Buat direktori
sudo mkdir -p /mnt/storage/{shared,media,backup}
sudo chown -R pi:pi /mnt/storage

# 5. Buat user Samba
sudo groupadd nasusers
sudo usermod -aG nasusers pi
sudo smbpasswd -a pi
# Masukkan password untuk akses Samba

# 6. Restart Samba
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd

# 7. Test dari Windows:
#    Buka File Explorer β†’ ketik: \192.168.1.10shared
#    Atau map network drive

# 8. Test dari Linux/Mac:
#    smbclient //192.168.1.10/shared -U pi

# 9. Mount otomatis di Windows:
#    File Explorer β†’ This PC β†’ Map Network Drive
#    Drive: Z:
#    Folder: 192.168.1.10shared
#    Centang "Reconnect at sign-in"

# 10. Mount otomatis di Linux:
#     Tambahkan ke /etc/fstab:
# //192.168.1.10/shared /mnt/nas cifs credentials=/home/pi/.smbcreds,uid=1000,gid=1000 0 0

# File ~/.smbcreds:
# username=pi
# password=your-samba-password
πŸ’‘ Performa NAS

Dengan Raspberry Pi 4 Gigabit Ethernet dan SSD via USB 3.0, kecepatan baca/tulis Samba bisa mencapai 80-110 MB/s. Ini cukup untuk streaming video 4K dan transfer file besar. Gunakan SSD (bukan HDD) untuk random I/O yang lebih baik.

5. Pi-hole DNS Ad Blocker

Pi-hole adalah DNS sinkhole yang berfungsi sebagai ad blocker untuk seluruh jaringan. Cukup set Pi-hole sebagai DNS server di router, dan semua perangkat di rumah (termasuk smart TV dan HP) akan terbebas dari iklan tanpa perlu install aplikasi apapun.

Cara Kerja Pi-hole

Diagram: Pi-hole DNS Filtering
PI-HOLE: How It Works
═════════════════════

  Perangkat (HP/Laptop/TV)        Internet
         β”‚                            β”‚
         β”‚ 1. DNS request:             β”‚
         β”‚ "ads.google.com"            β”‚
         β”‚                             β”‚
         β–Ό                             β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                     β”‚
  β”‚   Pi-hole    β”‚ 2. Cek blocklist    β”‚
  β”‚   (DNS)      β”‚                     β”‚
  β”‚              β”‚                     β”‚
  β”‚ Blocked?     β”‚                     β”‚
  β”‚ β”Œβ”€β”€β”€β”        β”‚                     β”‚
  β”‚ β”‚YESβ”‚β†’ Return β”‚                     β”‚
  β”‚ β”‚   β”‚  0.0.0.0β”‚ ← Iklan diblokir!  β”‚
  β”‚ β””β”€β”€β”€β”˜        β”‚                     β”‚
  β”‚ β”Œβ”€β”€β”€β”        β”‚                     β”‚
  β”‚ β”‚ NOβ”‚β†’ Forward│────────────────────→│ 3. Forward
  β”‚ β”‚   β”‚  requestβ”‚                     β”‚    ke upstream
  β”‚ β””β”€β”€β”€β”˜        │←────────────────────│ 4. Balas IP
  └──────────────│                     β”‚
         β”‚                             β”‚
         β”‚ 5. Return IP (legit)        β”‚
         β–Ό                             β”‚
     Perangkat menerima website        β”‚
     tanpa iklan! πŸŽ‰                  β”‚

  Statistik: Biasanya 20-40% traffic
  adalah iklan/tracker β†’ dihemat!
# ============================================
# Konfigurasi Pi-hole (setelah Docker deploy)
# ============================================

# 1. Akses Pi-hole web interface
#    Buka: http://192.168.1.10:8053/admin
#    Login dengan password yang di-set di docker-compose

# 2. Tambahkan blocklist tambahan
#    Settings β†’ DNS β†’ Upstream DNS Servers
#    Pilih: Custom
#    Tambahkan:
#    - 1.1.1.1 (Cloudflare)
#    - 8.8.8.8 (Google)
#    - 9.9.9.9 (Quad9)

# 3. Tambahkan adlist (blocklist tambahan)
#    Adlists β†’ paste URL berikut:
# https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
# https://raw.githubusercontent.com/AdAway/adaway.android/master/hosts.txt
# https://www.github.developerdan.com/hosts/lists/ads-and-tracking-extended.txt
#    Klik "Add" lalu "Update Gravity"

# 4. Set Pi-hole sebagai DNS di Router
#    Login ke router (biasanya 192.168.1.1)
#    Network Settings β†’ DHCP β†’ DNS Server
#    Set Primary DNS: 192.168.1.10 (IP Pi-hole)
#    Set Secondary DNS: 1.1.1.1 (fallback)

# 5. Atau set manual per perangkat:
#    Windows: Settings β†’ Network β†’ DNS β†’ 192.168.1.10
#    Android: WiFi β†’ Advanced β†’ DNS β†’ 192.168.1.10
#    iPhone: WiFi β†’ Configure DNS β†’ Manual β†’ 192.168.1.10

# 6. Whitelist domain yang salah terblokir
#    Pi-hole Admin β†’ Whitelist
#    Tambahkan domain yang dibutuhkan:
#    - play.google.com
#    - android.clients.google.com
#    - connectivitycheck.gstatic.com

# 7. Statistik via CLI
docker exec pihole pihole -c    # Summary
docker exec pihole pihole -q    # Query log

6. WireGuard VPN Server

WireGuard adalah VPN modern yang sangat cepat dan ringan. Dengan WireGuard di Raspberry Pi, Anda bisa mengakses jaringan rumah (NAS, Pi-hole, CCTV) dari mana saja di internet secara aman.

Cara Kerja VPN

Diagram: WireGuard VPN Architecture
WIREGUARD VPN: Remote Access
═══════════════════════════

  Di Kafe/WiFi Publik               Di Rumah
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚  Laptop  β”‚    Encrypted        β”‚ RPi +        β”‚
  β”‚  + WG    │═══tunnel═══════════│ WireGuard    β”‚
  β”‚  Client  β”‚    (UDP 51820)      β”‚ Server       β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
       β”‚                                  β”‚
       β”‚  Akses seolah di rumah:          β”‚ LAN 192.168.1.x
       β”‚  β€’ NAS files (192.168.1.10)      β”‚
       β”‚  β€’ Pi-hole DNS                   β”‚
       β”‚  β€’ CCTV cameras                  β”‚
       β”‚  β€’ Printer                       β”‚
       β”‚                                  β”‚
       β”‚  IP publik:                      β”‚
       β”‚  10.66.66.1 ←→ 10.66.66.2      β”‚
       β”‚  (tunnel addresses)              β”‚

  Keuntungan WireGuard:
  β€’ Sangat cepat (kernel-level encryption)
  β€’ Konfigurasi sederhana (public/private key)
  β€’ Battery-friendly di mobile
  β€’ Codebase kecil (~4000 lines vs OpenVPN 100K+)
# ============================================
# Konfigurasi WireGuard VPN
# ============================================

# 1. WireGuard sudah di-deploy via Docker Compose
#    Cek peers yang sudah dibuat:
docker exec wireguard wg

# 2. Ambil konfigurasi client
#    File ada di ./wireguard/config/peer1/peer1.conf
cat ./wireguard/config/peer1/peer1.conf

# Contoh output:
# [Interface]
# Address = 10.66.66.2/32
# PrivateKey = 
# DNS = 10.66.66.1
#
# [Peer]
# PublicKey = 
# Endpoint = your-public-ip:51820
# AllowedIPs = 0.0.0.0/0

# 3. Dapatkan IP publik rumah
curl ifconfig.me
# Contoh: 103.xxx.xxx.xxx

# 4. Setup port forwarding di router:
#    External Port: 51820/UDP
#    Internal IP: 192.168.1.10
#    Internal Port: 51820/UDP

# 5. Install WireGuard client:
#    - Windows: https://www.wireguard.com/install/
#    - Android: WireGuard dari Play Store
#    - iPhone: WireGuard dari App Store
#    - Linux: sudo apt install wireguard

# 6. Import konfigurasi ke client:
#    - Scan QR code (ada di docker logs)
docker logs wireguard 2>&1 | grep -A 20 "QR"
#    - Atau import file .conf langsung

# 7. Dynamic DNS (jika IP publik berubah)
#    Gunakan No-IP atau DuckDNS:
#    Daftar di https://www.duckdns.org
#    Buat cron job update IP:
crontab -e
# Tambahkan:
*/5 * * * * curl -s "https://www.duckdns.org/update?domains=MYDOMAIN&token=MYTOKEN&ip=" > /dev/null

# 8. Test VPN:
#    Aktifkan VPN di client
#    Buka: http://192.168.1.10:8053 (Pi-hole)
#    Harus bisa diakses dari luar!
⚠️ Keamanan VPN

Selalu gunakan public key authentication (bukan password). Ganti port default 51820 ke port acak untuk mengurangi scanning. Pastikan firewall hanya mengizinkan port VPN dari luar. Monitor log untuk koneksi mencurigakan.

7. Media Server (Jellyfin)

Jellyfin adalah media server open source (alternatif Plex/Emby) yang memungkinkan streaming film, musik, dan foto dari Raspberry Pi ke semua perangkat: smart TV, HP, tablet, laptop. Jellyfin 100% gratis tanpa fitur terkunci.

# ============================================
# Konfigurasi Jellyfin Media Server
# ============================================

# 1. Jellyfin sudah di-deploy via Docker Compose
#    Akses: http://192.168.1.10:8096

# 2. Setup wizard:
#    - Bahasa: Indonesia
#    - Buat akun admin
#    - Tambahkan media library:
#      Movies: /media/movies
#      TV Shows: /media/tvshows
#      Music: /media/music
#      Photos: /media/photos

# 3. Struktur folder media yang benar:
# /mnt/storage/media/
# β”œβ”€β”€ movies/
# β”‚   β”œβ”€β”€ Movie Name (2024)/
# β”‚   β”‚   └── Movie Name (2024).mkv
# β”‚   └── Another Movie (2023)/
# β”‚       └── Another Movie (2023).mp4
# β”œβ”€β”€ tvshows/
# β”‚   β”œβ”€β”€ Show Name/
# β”‚   β”‚   β”œβ”€β”€ Season 01/
# β”‚   β”‚   β”‚   β”œβ”€β”€ S01E01.mkv
# β”‚   β”‚   β”‚   └── S01E02.mkv
# β”‚   β”‚   └── Season 02/
# β”‚   └── Another Show/
# β”œβ”€β”€ music/
# β”‚   β”œβ”€β”€ Artist/
# β”‚   β”‚   β”œβ”€β”€ Album/
# β”‚   β”‚   β”‚   └── track.mp3
# └── photos/
#     β”œβ”€β”€ 2024/
#     └── vacation/

# 4. Install client apps:
#    - Smart TV: Cari "Jellyfin" di app store
#    - Android: Jellyfin dari Play Store
#    - iPhone: Jellyfin dari App Store
#    - Browser: langsung buka http://192.168.1.10:8096
#    - Desktop: Jellyfin Media Player

# 5. Hardware transcoding (opsional, untuk performa):
#    Raspberry Pi 4 mendukung hardware decoding H.264
#    Tambahkan di docker-compose.yml untuk jellyfin:
#    devices:
#      - /dev/video10:/dev/video10  # H264 decoder
#      - /dev/video11:/dev/video11  # H264 encoder
#      - /dev/video12:/dev/video12  # ISP

# 6. Download media dengan yt-dlp (opsional):
sudo apt install yt-dlp -y
yt-dlp -o "/mnt/storage/media/movies/%(title)s.%(ext)s" \
  "URL_VIDEO"

# 7. Remote access via VPN:
#    Setelah WireGuard aktif, akses Jellyfin dari mana saja
#    via http://192.168.1.10:8096

8. Self-Hosted Services Lainnya

Selain layanan utama di atas, berikut beberapa layanan self-hosted bermanfaat lain yang bisa dijalankan di Raspberry Pi:

Tambahan ke Docker Compose

# ============================================
# Tambahkan ke docker-compose.yml
# ============================================

  # ===== Nextcloud (Cloud Storage Pribadi) =====
  nextcloud:
    image: nextcloud:latest
    container_name: nextcloud
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      TZ: 'Asia/Jakarta'
      MYSQL_HOST: nextcloud-db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: 'securepassword'
    volumes:
      - ./nextcloud/html:/var/www/html
      - /mnt/storage/nextcloud-data:/var/www/html/data
    networks:
      - server-net

  nextcloud-db:
    image: mariadb:10
    container_name: nextcloud-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'rootpassword'
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: 'securepassword'
    volumes:
      - ./nextcloud/db:/var/lib/mysql
    networks:
      - server-net

  # ===== Home Assistant (Smart Home) =====
  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    container_name: homeassistant
    restart: unless-stopped
    network_mode: host
    environment:
      TZ: 'Asia/Jakarta'
    volumes:
      - ./homeassistant:/config
    privileged: true

Layanan Lain yang Direkomendasikan

LayananFungsiDocker ImagePort
VaultwardenPassword manager (Bitwarden)vaultwarden/server8888
Nginx Proxy ManagerReverse proxy + SSLjc21/nginx-proxy-manager80,443,81
Tandoor RecipesResep masakan digitalvabene1111/recipes8081
GiteaGit server pribadigitea/gitea3000
HomepageDashboard untuk semua layananghcr.io/gethomepage/homepage3002
DuplicatiBackup otomatislinuxserver/duplicati8200

9. Keamanan & Maintenance

Checklist Keamanan

#AksiDeskripsiStatus
1SSH Key AuthDisable password login, gunakan SSH keyβœ…
2Firewall (UFW)Hanya buka port yang diperlukanβœ…
3Auto UpdatesAktifkan unattended-upgradesβœ…
4Fail2banBlokir IP yang gagal login berulangβœ…
5VPN Only AccessLayanan internal hanya via VPNβœ…
6Docker SecurityJangan run container sebagai rootβœ…
7Backup OtomatisBackup konfigurasi ke SSD/NAS terpisahβœ…
8MonitoringUptime Kuma untuk alert layanan downβœ…
# ============================================
# Setup Fail2ban
# ============================================

sudo apt install fail2ban -y

# Konfigurasi
sudo tee /etc/fail2ban/jail.local <<'EOF'
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
EOF

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Cek banned IP
sudo fail2ban-client status sshd

# ============================================
# Backup Script Otomatis
# ============================================

cat <<'EOF' > ~/backup.sh
#!/bin/bash
BACKUP_DIR="/mnt/storage/backup/home-server"
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p $BACKUP_DIR/$DATE

# Backup Docker configs
cp -r ~/home-server $BACKUP_DIR/$DATE/

# Backup Pi-hole custom lists
cp -r ~/home-server/pihole $BACKUP_DIR/$DATE/

# Backup WireGuard configs
cp -r ~/home-server/wireguard $BACKUP_DIR/$DATE/

# Hapus backup lama (>30 hari)
find $BACKUP_DIR -maxdepth 1 -mtime +30 -exec rm -rf {} \;

echo "Backup completed: $DATE"
EOF

chmod +x ~/backup.sh

# Jadwalkan backup setiap hari jam 3 pagi
(crontab -l 2>/dev/null; echo "0 3 * * * ~/backup.sh >> /var/log/backup.log 2>&1") | crontab -
πŸ’‘ Performa & Tips
  • Gunakan SSD via USB 3.0 untuk semua data β€” hindari microSD untuk storage intensif
  • Aktifkan log2ram untuk mengurangi write ke SD card: sudo apt install log2ram
  • Monitor suhu: vcgencmd measure_temp β€” pastikan di bawah 70Β°C
  • Gunakan UPS mini untuk mencegah corrupt saat mati listrik mendadak
  • Restart otomatis jika hang: sudo apt install watchdog

10. Quiz: Uji Pemahamanmu!

Setelah membaca tutorial di atas, jawablah 5 pertanyaan berikut untuk menguji pemahamanmu tentang Raspberry Pi Home Server:

Pertanyaan 1: Apa fungsi utama Pi-hole dalam jaringan rumah?

a) Mempercepat koneksi internet
b) Memblokir iklan dan tracker di level DNS untuk seluruh jaringan
c) Menyimpan file foto dan video
d) Mengganti router WiFi

Pertanyaan 2: Mengapa WireGuard direkomendasikan dibanding OpenVPN?

a) WireGuard lebih mudah dikonfigurasi, lebih cepat, dan memiliki codebase yang jauh lebih kecil
b) OpenVPN sudah tidak didukung
c) WireGuard tidak memerlukan enkripsi
d) Keduanya persis sama

Pertanyaan 3: Mengapa disarankan menggunakan SSD (bukan microSD) untuk storage NAS?

a) SSD lebih murah dari microSD
b) SSD memiliki performa I/O yang jauh lebih baik dan umur pakai lebih lama untuk operasi baca/tulis intensif
c) microSD tidak bisa digunakan sama sekali
d) SSD tidak memerlukan kabel

Pertanyaan 4: Apa fungsi dari Docker Compose dalam home server?

a) Mengganti sistem operasi Raspberry Pi
b) Mengelola dan mendefinisikan beberapa layanan Docker sekaligus dalam satu file YAML
c) Menghapus semua container
d) Menginstall Raspberry Pi OS

Pertanyaan 5: Apa yang harus dilakukan pertama kali untuk mengamankan SSH di Raspberry Pi?

a) Menghapus SSH sepenuhnya
b) Mengganti port SSH ke angka random
c) Disable password login dan gunakan SSH key authentication, tambahkan firewall
d) Tidak perlu apa-apa, SSH sudah aman defaultnya
πŸ” Zoom
100%
🎨 Tema