Cloud bill tiba-tiba naik dua kali lipat di akhir bulan — itu yang bikin gue akhirnya memutuskan untuk set up personal development server sendiri di rumah. Bukan karena gue anti-cloud, tapi karena untuk kebutuhan development sehari-hari, bayar VPS terus-terusan itu boros kalau kamu punya hardware nganggur di sudut kamar.
Artikel ini bukan teori. Ini setup yang gue pakai sekarang: mini PC bekas, Ubuntu Server, dan beberapa tool yang bikin workflow development jadi lebih smooth.
Hardware: Mulai dari Yang Ada
Kamu nggak perlu beli server baru. Beberapa opsi yang masuk akal:
- Mini PC bekas (Intel NUC, Beelink, atau sejenisnya) — harga Rp 1–3 juta di Tokopedia, RAM 8–16 GB sudah cukup.
- Laptop lama yang sudah nggak dipakai — asal bisa boot Linux, langsung bisa jadi server.
- Raspberry Pi 4 (4GB/8GB) — kalau budget mepet dan workload ringan.
Spec minimum yang gue rekomendasikan:
- RAM: 8 GB (16 GB kalau mau jalanin Docker banyak container)
- Storage: SSD 128 GB (HDD boleh, tapi lambat untuk build)
- CPU: Minimal dual-core, Intel Core i3 generasi ke-8 ke atas
Gue pakai Beelink Mini S12 Pro dengan RAM 16 GB dan SSD 500 GB. Total habis sekitar Rp 2,4 juta bekas. Sudah lebih dari cukup untuk development Node.js, Python, Go, plus beberapa container Docker.
Install Ubuntu Server: Bersih dan Minimal
Download Ubuntu Server LTS (22.04 atau 24.04) dari ubuntu.com. Jangan pakai Desktop — overhead-nya nggak perlu untuk server development.
Buat bootable USB dengan dd (Linux/macOS) atau Rufus (Windows), lalu boot dari USB dan ikuti installer. Pilih opsi minimized kalau ada, dan aktifkan OpenSSH server saat instalasi — ini penting supaya kamu bisa remote dari laptop utama.
Setelah install selesai dan server reboot, langkah pertama:
# Update semua package
sudo apt update && sudo apt upgrade -y
# Install tools dasar
sudo apt install -y curl wget git htop net-tools ufw fail2ban
# Set timezone
sudo timedatectl set-timezone Asia/Jakarta
# Cek IP lokal server
ip addr show | grep 'inet '
Catat IP lokal server kamu (biasanya 192.168.x.x). Dari sekarang, semua akses lewat SSH dari laptop.
Konfigurasi SSH yang Aman
Default SSH itu cukup, tapi ada beberapa hal yang perlu dikencengin sebelum server ini kamu pakai serius.
# Di laptop kamu, generate SSH key kalau belum ada
ssh-keygen -t ed25519 -C "dev-server-key"
# Copy public key ke server
ssh-copy-id username@192.168.x.x
Setelah key sudah di-copy, edit config SSH di server:
sudo nano /etc/ssh/sshd_config
Ubah atau tambahkan baris ini:
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
Ganti port dari 22 ke 2222 (atau port lain) — ini nurunin noise dari bot scanner secara signifikan. Setelah simpan, restart SSH:
sudo systemctl restart sshd
# Jangan tutup session lama dulu!
# Buka terminal baru dan test koneksi dengan port baru:
ssh -p 2222 username@192.168.x.x
Gotcha yang gue kena: Gue lupa update firewall sebelum ganti port SSH, jadi terkunci keluar dari server sendiri. Urutan yang benar:
# Izinkan port baru di firewall SEBELUM restart SSH
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
# Baru restart SSH
sudo systemctl restart sshd
Tambahkan juga config di ~/.ssh/config di laptop kamu supaya koneksi lebih gampang:
Host devserver
HostName 192.168.x.x
User username
Port 2222
IdentityFile ~/.ssh/id_ed25519
Sekarang kamu bisa SSH cukup dengan ssh devserver.
Install Docker dan Docker Compose
Ini bagian yang bikin personal development server jadi powerful. Dengan Docker, kamu bisa spin up environment baru tanpa polusi ke sistem utama.
# Install Docker pakai script resmi
curl -fsSL https://get.docker.com | sudo sh
# Tambah user kamu ke group docker
sudo usermod -aG docker $USER
# Logout dan login lagi supaya group-nya aktif
# Atau pakai:
newgrp docker
# Verifikasi
docker run hello-world
Docker Compose sudah include di Docker versi terbaru sebagai plugin. Test dengan:
docker compose version
# Output: Docker Compose version v2.x.x
Contoh docker-compose.yml untuk stack development web yang sering gue pakai:
version: '3.9'
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: devuser
POSTGRES_PASSWORD: devpassword
POSTGRES_DB: devdb
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: unless-stopped
redis:
image: redis:7-alpine
ports:
- "6379:6379"
restart: unless-stopped
adminer:
image: adminer
ports:
- "8080:8080"
restart: unless-stopped
volumes:
pgdata:
Simpan file ini, lalu:
docker compose up -d
# Cek status container
docker compose ps
# Akses Adminer dari browser laptop:
# http://192.168.x.x:8080
Dari laptop kamu, database Postgres langsung bisa diakses di 192.168.x.x:5432. Nggak perlu install Postgres lokal.
Set Up Static IP Lokal
IP lokal server kamu bisa berubah kalau router di-restart. Ini nyebelin karena kamu harus update config SSH dan semua connection string. Fix-nya: assign static IP lewat router (DHCP reservation) atau langsung dari Ubuntu.
Cara paling mudah adalah lewat router — masuk ke admin panel router (biasanya 192.168.1.1), cari menu DHCP Reservation atau Static DHCP, lalu bind MAC address server ke IP yang kamu mau.
Kalau mau dari sisi Ubuntu pakai Netplan:
# Cek nama interface jaringan
ip link show
# Biasanya eth0 atau enp3s0
# Edit konfigurasi Netplan
sudo nano /etc/netplan/00-installer-config.yaml
Isi file-nya:
network:
version: 2
ethernets:
enp3s0:
dhcp4: no
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
# Apply konfigurasi
sudo netplan apply
# Verifikasi
ip addr show enp3s0
Sekarang server kamu selalu di 192.168.1.100, apapun yang terjadi.
Remote Development dengan VS Code
Ini yang bikin set up personal development server jadi nyaman banget: kamu bisa edit kode di server langsung dari VS Code di laptop, tanpa harus copy-paste file.
Install extension Remote - SSH di VS Code. Setelah itu:
- Tekan
Ctrl+Shift+P→ ketikRemote-SSH: Connect to Host - Pilih
devserver(dari config SSH yang kamu buat tadi) - VS Code akan install VS Code Server di remote machine secara otomatis
- Buka folder project di server, dan kamu langsung coding seperti biasa
Terminal di VS Code juga langsung jalan di server. Jadi npm install, go build, atau apapun itu dieksekusi di server — bukan di laptop kamu.
Gotcha: Kalau project kamu butuh port forwarding (misalnya dev server jalan di port 3000), VS Code Remote SSH bisa forward port otomatis. Klik tab Ports di VS Code, tambah port 3000, dan kamu bisa akses localhost:3000 di browser laptop yang sebenernya jalan di server.
Monitoring Sederhana dengan htop dan Netdata
Kamu perlu tahu kondisi server — RAM usage, CPU load, disk space — terutama kalau lagi build project besar atau jalanin banyak container.
htop sudah cukup untuk cek cepat:
htop
Tapi kalau mau dashboard yang lebih visual dan bisa diakses dari browser, install Netdata:
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sudo sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
Setelah install, akses dashboard di http://192.168.1.100:19999. Kamu bisa lihat real-time metrics CPU, RAM, disk, network, dan bahkan Docker container stats.
Langkah Lanjutan
Ini yang gue lakuin setelah setup dasar selesai:
1. Tambah Nginx sebagai reverse proxy — supaya kamu bisa akses service dengan nama domain lokal (misalnya api.dev.local) daripada harus ingat port.
sudo apt install -y nginx
2. Set up automated backup — minimal backup volume Docker dan folder project ke external drive atau NAS. Gue pakai rsync dengan cron job harian.
# Contoh cron job backup harian jam 2 pagi
crontab -e
# Tambahkan:
0 2 * * * rsync -avz /home/username/projects/ /mnt/backup/projects/
3. Tailscale untuk akses dari luar jaringan — kalau kamu mau akses development server dari kafe atau kantor, Tailscale adalah cara paling mudah. Install di server dan laptop, kamu dapat VPN mesh yang langsung jalan tanpa konfigurasi port forwarding di router.
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
Setelah itu, server kamu punya IP Tailscale (biasanya 100.x.x.x) yang bisa diakses dari mana saja.
Setup ini sudah gue pakai hampir setahun. Cloud bill untuk development turun drastis — sekarang cuma bayar VPS kecil untuk production, bukan untuk eksperimen. Hardware one-time cost, listrik mini PC itu hemat (sekitar 15–25 watt), dan kamu punya kontrol penuh atas environment development kamu.
Kalau kamu stuck di bagian mana pun — terutama bagian SSH atau Netplan — drop pertanyaan di kolom komentar.