● session: ok — tmux attached

Mr. A.
Sistem yang tenang, satu per satu.

Programmer, bekerja dengan menggunakan sistem operasi Linux, dan sysadmin. Menulis kode untuk backend dan tooling internal, menjaga kontainer tetap berjalan di atas Debian dan Ubuntu, dan memilih tool yang sudah diuji oleh orang lain selama bertahun-tahun.

scroll untuk membaca
§ 01 / TENTANG

Saya tidak terburu-buru. Sistem yang baik dibangun pelan.

Saya memulai karier sebagai mahasiswa magang di Kantor Pelabuhan Batam. Dari sana saya belajar bahwa sistem yang baik bukan yang paling canggih, tapi yang paling bisa diandalkan saat segalanya berjalan kacau. Sekarang, setelah sepuluh tahun, saya menulis kode untuk backend, API, dan tooling internal serta menjaga infrastruktur tetap berdiri.

Saya memilih Debian untuk server, Ubuntu LTS untuk workstation, dan Docker sebagai lapisan yang menyatukan keduanya. Bahasa utama saya PHP (Laravel & Codeigniter 4), namun saya juga menulis Go dan Node.js saat tuntutan performa atau prototipe cepat mengharuskan.

Pekerjaan saya sederhana: memastikan hal-hal yang seharusnya berjalan, berjalan. Hal-hal yang seharusnya tidak pecah, tidak pecah. Dan ketika semuanya pecah, ada dokumentasi server dan runbook yang saya tulis tiga tahun lalu yang masih bisa dibaca.

PILAR / 01
Container-first
Setiap service dikemas dalam Docker. Reproduksibel di laptop, identik di server.
PILAR / 02
Stable
Debian bookworm & Ubuntu LTS. Bukan yang terbaru — yang terpercaya.
PILAR / 03
Documented
Runbook untuk setiap prosedur. Tidak ada pengetahuan yang hanya ada di kepala saya.
§ 02 / KAPABILITAS

Tiga topi yang saya pakai. Sering bertukar di hari yang sama.

01 / DEV

Programmer

php · laravel · ci4 · node · vue · nuxt

Menulis kode untuk backend, API, frontend, hingga aplikasi hybrid Android. Menggunakan VS Code dan Zed sebagai editor utama, didukung oleh Ollama dan OpenCode sebagai asisten AI lokal yang berjalan di mesin sendiri. Sementara nano tetap dipakai untuk konfigurasi cepat di server.

Bagian terbesar dari pekerjaan saya bukan menulis kode baru, tapi membaca kode lama dan memutuskan apa yang harus dipertahankan, apa yang harus ditulis ulang, dan apa yang harus dihapus besok pagi.

02 / OS

Linux

debian · ubuntu · proxmox · virtualbox

Bekerja dengan menggunakan sistem operasi Linux setiap hari. Paham kernel parameter, cgroups v2, dan kapan harus memilih Debian daripada Ubuntu (atau sebaliknya). Mengelola jaringan dengan Mikrotik dan Pi-Hole, serta mengelola virtualisasi penuh menggunakan Proxmox dan VirtualBox untuk layanan yang tidak bisa dikontainerisasi.

Filosofi saya: sistem yang baik adalah sistem yang tidak Anda sadari ada. Tidak ada notifikasi, tidak ada pop-up, tidak ada restart mendadak. Hanya diam dan bekerja.

03 / OPS

Sysadmin

docker · nginx · gammu · gitlab · qemu

Menjaga kontainer tetap berdiri. Mengkonfigurasi Nginx reverse proxy, PostgreSQL di dalam volume, Gammu untuk SMS gateway, hingga game server. Mengelola mesin virtual dengan QEMU untuk lingkungan testing dan layanan legacy. On-call pukul 3 pagi, postmortem di pagi hari, hardening di sore hari.

Pekerjaan sysadmin yang baik tidak terlihat. Jika sistem diam selama berbulan-bulan dan tidak ada yang menghubungi saya di tengah malam, saya sudah melakukan pekerjaan dengan benar.

§ 03 / PERALATAN

Peralatan harian. Bukan yang terbaru — yang terpercaya.

Daftar berikut bukan daftar belanja. Ini tool yang saya gunakan dalam produksi dan proyek selama satu dekade terakhir, lengkap dengan tingkat penguasaan (skala 5.0).

Mac OS
os · 5.0
Linux Server
os · 5.0
Docker
kontainer · 4.0
Ubuntu
os · 4.0
PHP
backend · 4.5
Laravel / Lumen
framework · 4.0
Codeigniter 4
framework · 4.5
Node.js / Express
backend · 4.5
Python
scripting · 3.5
Vue / Nuxt
frontend · 4.0
AngularJS
frontend · 4.0
Cordova / Capacitor
hybrid mobile · 4.0
Bootstrap / Vuetify
css framework · 4.0
Shell Script
otomasi · 4.0
Nginx
reverse proxy · 4.0
Apache2
web server · 4.0
Caddy
web server · 3.0
PostgreSQL
database · 4.0
MySQL / MariaDB
database · 4.0
MongoDB / SQLite
database · 4.0
SQL Server / Oracle
database · 3.5
GitLab
ci/cd · repo · 4.0
Gitea
self-hosted git · 4.0
Portainer
docker ui · 4.0
Cloudflare
dns · proxy · 4.5
VirtualBox
virtualisasi · 4.0
Proxmox
virtualisasi · 4.0
QEMU / KVM
virtualisasi · 3.5
Gammu
sms gateway · 3.0
Zimbra / Poste.io
mail server · 3.0
Uptime Kuma
monitoring · 4.5
FRP
reverse tunnel · 4.0
Mikrotik
networking · 3.5
Pi-Hole / DD-WRT
networking · 3.5
Game Server
minecraft · 4.0
SSH
remote · 5.0
nano
cli editor · 5.0
VS Code
gui editor · 4.5
Zed
gui editor · 4.0
OpenCode
ai coding · 4.0
Ollama
local llm · 4.0
§ 04 / TIMELINE

Sepuluh tahun, beberapa institusi, satu filosofi yang sama.

2024 — sekarang

Programmer (Fullstack) — Badan Pendapatan Daerah Kepulauan Riau

Mengembangkan aplikasi dashboard Jasa Raharja dan sistem pengaduan online. Bekerja sebagai fullstack developer untuk aplikasi web dan REST API, memastikan layanan publik berjalan stabil.

laravel codeigniter vue rest-api
2019 — 2023

Senior Programmer & Sysadmin — Diskominfo Kota Batam

Mengelola server Docker, memelihara repository GitLab, dan membangun berbagai aplikasi E-Government seperti SIBABE, E-Monev, SIJAKON, hingga aplikasi mobile menggunakan Cordova. Melakukan backup server, konfigurasi database, dan menjaga dokumentasi infrastruktur tetap update.

docker gitlab-ci e-government cordova nginx
2016 — 2018

Programmer — PT. AKYWEB.COM & Diskominfo Batam

Memulai sebagai pengembang website frontend dan backend untuk berbagai proyek e-commerce dan portal pemerintahan. Membangun portal batam.go.id, sistem E-Planning, E-Budgeting, hingga portal MPP. Juga mengerjakan proyek freelance aplikasi mobile.

php jquery bootstrap mysql
2015

Teknik IT & Jaringan — Kantor Pelabuhan Laut BP Batam (DATIN)

Titik awal karier. Menangani infrastruktur IT dan jaringan di lingkungan pelabuhan. Belajar dasar-dasar sysadmin, networking, dan pentingnya dokumentasi di lapangan.

networking hardware it-support
2011 — 2015

D4 Teknik Multimedia dan Jaringan — Politeknik Negeri Batam

Masa kuliah. Belajar integrasi antara pengembangan multimedia dan infrastruktur jaringan. Fondasi pemikiran sistematis dan debugging mulai dibentuk di sini.

pemograman server multimedia
§ 05 / TERMINAL

Cara saya melihat diri sendiri. Dalam output mesin.

mr.a@workstation — zsh
mr.a@workstation ~ $ whoami
mr.a — programmer, linux user, sysadmin
 
mr.a@workstation ~ $ uname -a
Linux workstation 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 x86_64 GNU/Linux
 
mr.a@workstation ~ $ systemctl is-active docker
active
 
mr.a@workstation ~ $ docker --version
Docker version 27.3.1, build ce12230
mr.a@workstation — zsh
mr.a@workstation ~/projects $ docker ps --format "table {{.Names}}\t{{.Status}}"
NAMES STATUS
nginx-proxy Up 16 days
postgres Up 16 days
gitlab-ce Up 9 days
portainer Up 16 days
sibabe-app Up 30 days
gammu-sms Up 16 days
uptime-kuma Up 16 days
frps Up 16 days
ollama Up 4 days
 
mr.a@workstation ~/projects $
$SHELL = /usr/bin/zsh $EDITOR = /usr/bin/nano $GUI_EDITOR = code, zed $AI_TOOL = opencode, ollama $COLORSCHEME = gruvbox-dark
§ 06 / CATATAN

Catatan yang saya simpan. Agar tidak lupa, agar tidak diulang.

2024.11.10

Mengemas Laravel dan Codeigniter 4 dalam satu server

Cara menjalankan dua aplikasi PHP berbeda framework di satu mesin Debian menggunakan Docker dan Nginx reverse proxy tanpa konflik dependency.

#laravel #codeigniter4 #docker #nginx
2024.10.28

FRP: menghubungkan server lokal ke publik tanpa buka port

Menggunakan FRP (Fast Reverse Proxy) untuk meneruskan service dari server Debian lokal di rumah ke VPS publik. Server game Minecraft, Gammu SMS gateway, dan web app Laravel semuanya bisa diakses dari luar tanpa IP publik di rumah.

#frp #debian #networking #reverse-tunnel
2024.08.22

Game server Minecraft di Docker: otomatisasi dan backup

Mendeploy server Minecraft dengan Docker Compose di Ubuntu LTS, lengkap dengan restart policy, RCON untuk manajemen, dan backup otomatis dunia ke volume lokal.

#minecraft #docker #ubuntu #game-server
2024.06.15

Gammu sebagai SMS Gateway di balik Nginx

Mengkonfigurasi Gammu di Debian untuk berjalan sebagai service, menangani modem USB yang sering disconnect, dan meneruskan SMS masuk ke aplikasi web via webhook.

#gammu #debian #nginx #sms-gateway
2024.04.02

Nuxt 3 dan Express.js: memisahkan SSR dan API

Kenapa saya memilih menjalankan Nuxt 3 sebagai frontend yang terpisah dari Express.js backend, dan bagaimana keduanya berkomunikasi via jaringan internal Docker.

#nuxt #vue #express #docker
2024.01.18

Membangun aplikasi hybrid Android dengan Cordova

Catatan menulis aplikasi mobile SIJAKON menggunakan Cordova dan Capacitor. Bagaimana mengintegrasikan backend Laravel dan menerbitkannya ke Playstore tanpa pusing.

#cordova #capacitor #laravel #mobile
§ 07 / FILOSOFI

Cara saya bekerja. Lima prinsip teknis yang tidak pernah saya langgar.

Sebagian didapat dari postmortem yang menyakitkan di tengah malam, sebagian dari kesalahan konfigurasi yang berakibat fatal. Ini bukan teori, tapi praktik harian.

PRINSIP / 01

Reproduksibilitas adalah segalanya.

Jika sebuah aplikasi berjalan di laptop saya, ia harus berjalan persis sama di server produksi. Docker memastikan tidak ada lagi alasan "di laptop saya jalan". Konfigurasi server ditulis sebagai kode, bukan dijahit manual.

PRINSIP / 02

Stabil lebih baik dari modern.

Debian stable, Ubuntu LTS, dan PHP yang sudah teruji. Saya tidak mengejar framework terbaru setiap bulan. Saya mengejar sistem yang tidak crash di tahun ketiga. Teknologi yang membosankan adalah teknologi yang bisa dipercaya.

PRINSIP / 03

Otomasi mengurangi kesalahan manusia.

Setup server manual hanya boleh dilakukan sekali. Setelah itu, Ansible, shell script, atau CI/CD GitLab yang mengambil alih pekerjaan berulang. Manusia lelah dan bisa salah ketik; script tidak. Backup database dan deploy aplikasi juga harus otomatis, bukan sekadar diingat.

PRINSIP / 04

Pantau sebelum pecah.

Anda tidak bisa memperbaiki server yang tidak terpantau. Uptime Kuma memantau setiap service 24/7. Jika ada yang jatuh, saya tahu lebih dulu daripada pengguna.

PRINSIP / 05

Backup bukan opsi, tapi keharusan.

Data bisa hilang karena disk rusak, salah hapus, atau ransomware. Backup harian otomatis ke volume terpisah atau server lain adalah satu-satunya hal yang menyelamatkan pekerjaan Anda. Uji restore backup itu wajib, sekali dalam tiga bulan.

§ 08 / KOLABORASI

Butuh bantuan untuk proyek Anda? Mari berbicara dengan tim saya.

Jika Anda membutuhkan jasa pengembangan aplikasi, manajemen server, atau konsultasi infrastruktur, silakan menghubungi leader project manager saya di tautan berikut.

digitasian.com