Server produksi Live
Server ini menjalankan database dan aplikasi untuk produk di halaman Rilis. Saya merakit hardware-nya, memasang Proxmox VE 9, dan mengujinya seperti sistem produksi: memindai port dari luar, mematikan container, menghitung akibat satu disk mati. Aktif sejak ; project pertama di atasnya Crypt-Man.
Spesifikasi
| Hypervisor | Proxmox VE 9.2, kernel 7.0 |
|---|---|
| CPU / RAM | Ryzen 9 9900X · 32 GB |
| Disk | 2× NVMe 2 TB (rpool) + 2× HDD 4 TB (tank), ZFS mirror |
| Container | web, redis, app (Crypt-Man), db (LXC Debian) |
| Database | MySQL 8.4 LTS, hanya di bridge internal |
| Akses masuk | Cloudflare Tunnel untuk publik; Tailscale untuk admin; satu tunnel WireGuard ke router cabang |
| Backup | dump MySQL, vzdump, snapshot ZFS harian; salinan off-site terenkripsi GPG |
Yang sudah diverifikasi
- Penyimpanan. Dua ZFS mirror, kedua partisi boot terisi: tetap boot walau satu NVMe mati.
- Isolasi. MySQL hanya di bridge internal; firewall per container dan host default-deny.
- Akses. Tanpa port web atau database ke internet; masuk lewat Cloudflare Tunnel, Tailscale dengan ACL, dan satu tunnel WireGuard. SSH hanya kunci, 2FA di web UI, fail2ban, pembaruan keamanan otomatis.
- Edge. Cloudflare Tunnel untuk aplikasi; Cloudflare Worker untuk halaman statis agar tetap hidup saat server mati.
- Backup. Dump MySQL, vzdump, snapshot ZFS harian, salinan off-site GPG; penjaga backup memeriksa struktur dump.
- Pemantauan. Dashboard sendiri membaca satu aliran JSON lewat SSH: daya CPU, keausan NVMe, umur scrub, status backup.
Tiga pelajaran yang saya bawa
- Uji dari luar, jangan asumsikan:
bind-addresssaja tidak menutup semua port MySQL. - Pasang mekanisme rollback sebelum mengubah firewall dari jarak jauh.
- Verifikasi arsitektur image sebelum menyalahkan hardware.
Mau tanya soal keputusan di server ini? Saya senang membahasnya.