Showing Posts From

Docker

đŸ’» Laptop Bekas Jadi Home Server Proxmox.

đŸ’» Laptop Bekas Jadi Home Server Proxmox.

Sekitar 1 tahun yang lalu, saya punya laptop yang secara fisik sudah rusak seperti casing pecah, engsel patah, dan keyboard bermasalah. Namun motherboard dan komponen lainnya masih berfungsi. đŸ€ Waktu itu saya berpikir, hmm.. bagaimana kalau dijadikan eksperimen home server aja? Dengan budget seadanya, saya membuat casing manual (DIY) dari karton tebal, semacam bahan yang biasa dipakai untuk kotak kado (cardbox). Namun tentunya ini kurang ideal untuk airflow dan keamanan jangka panjang. Prosesnya unik dan tricky. Seperti membongkar part/komponen secara hati-hati sambil mengamati objek lebih detail. Saya juga membuat prototype layout komponen dan casing untuk simulasi ukuran maupun posisi dengan tools Figma. Setelah beberapa kali melakukan pengujian di OS native, akhirnya saya menginstall Proxmox Virtual Environment (VE), sebuah platform virtualisasi berbasis Debian GNU/Linux. Setelah itu, laptop pun siap di-setup menjadi home lab tempat eksperimen virtualisasi, install berbagai OS (Windows/Linux), hingga menjalankan Docker apps. Meskipun motherboard laptop tidak memenuhi minimum requirements Windows 11, uniknya pada percobaan tetap bisa diinstall lewat dukungan compatibility layer di Proxmox, seperti UEFI, Secure Boot, vTPM, VirtIO drivers, dan Balloon yang bisa di-customize. Awalnya saya cukup overwhelmed dan banyak lakukan kesalahan, seperti salah assign IP address dan subnetting. Namun justru itu yang membuat saya semakin penasaran dan terus discovery hal baru. Honorable & unforgettable experience! Spesifikasi device: Toshiba Satellite L840 Intel Core i3 Gen 2 RAM 6GB (2GB + 4GB) SSD standar 128GB + ext storageWaktu itu saya belum mengenal solusi tunneling seperti Cloudflare Tunnel dan Ngrok, jadi masih sebatas jaringan LAN via kabel Ethernet maupun WiFi lokal. Belum bisa diakses publik. Overall, saya sangat menikmati prosesnya. ✍ Notes: Ini adalah proyek hobi. Do at your own risk. Gunakanlah device dan tools yang proper. Ada yang pernah bikin hal serupa? đŸ€”

Pengalaman Hackathon Railway

Pengalaman Hackathon Railway

Pada bulan Agustus lalu, saya mengikuti Hackathon yang diselenggarakan oleh Railway (https://railway.com/?referralCode=cJaK1i), sebuah layanan cloud (PaaS) untuk menjalankan aplikasi. Challengenya adalah membuat template dan long-form content. Pada saat itu, saya mengajukan template WordPress dengan MariaDB & Redis caching. Sederhana, but it works well. Meskipun belum menang, submission saya tetap dinyatakan valid. Sesuai ketentuan hackathon, setiap submission valid memperoleh $25 credits. Anehnya adalah, project saya termasuk dalam honorable mentions pada segmen kompleksitas project (https://blog.railway.com/p/hackathon-2025-winners), meskipun saya merasa hal itu bukanlah sesuatu yang kompleks. Beberapa pekan kemudian, saya cukup terkejut saat melihat ada tambahan kredit masuk ke akun saya. Setelah ditelusuri, ternyata sumbernya adalah kickback penggunaan template. Dapat sekitar 25% selama template digunakan. Temuan ini memotivasi saya untuk membuat template lain, seperti Firefox Browser, Portainer, dan CloudBeaver. Pada dasarnya, hanya diperlukan pemahaman umum mengenai container dan Docker, ditambah pemahaman tentang cara kerja Railway. Namun demikian, setelah beberapa kali mengajukan template, saya terkena pembatasan tidak bisa submit template lagi. Setelah bertanya melalui email, ternyata terdapat pelanggaran Terms of Use. Saya kurang teliti dalam membaca aturan. Dari kejadian ini, saya belajar bahwa setiap proses kreatif selalu memiliki dimensi teknis sekaligus etis yang sama pentingnya. Next time akan saya perhatikan lebih baik lagi. Saya tetap berharap bisa kembali membuat template, baik di Railway maupun di platform lain. Bagi saya, aktivitas membuat template adalah hal yang menyenangkan sekaligus menantang. Apalagi jika ada visualisasinya seperti di Railway dan n8n. Adakah di antara teman-teman yang juga suka bangun template? đŸ€” Bagi yang ingin deep-dive baca sejarahnya: Deploy WordPress with Redis on Railway

Deploy WordPress with Redis on Railway

Deploy WordPress with Redis on Railway

When running WordPress, performance matters. By default, WordPress stores most of its transient data and cache in the database. This works fine for smaller sites, but as your traffic grows or when you run multiple WordPress instances, database queries can become a bottleneck. That’s where Redis comes in. Redis is an in-memory data store that can drastically speed up WordPress by caching frequently accessed data, reducing the load on the database, and improving page load times. In other words — fewer queries hitting MariaDB/MySQL, and faster responses for your visitors. In this tutorial, we’ll walk through how to: Deploy WordPress and Redis on Railway Install and configure the Redis Object Cache plugin for WordPress Use the WORDPRESS_CONFIG_EXTRA environment variable to connect WordPress to Redis without manually editing wp-config.php (Optional) Expand the same setup into a multi-tenant stack with one database, one Redis cache, and multiple WordPress sitesThis guide is written to be practical — we’ll start from a regular WordPress deployment, then add Redis step-by-step until everything is connected and optimized. You can also use my prebuilt template on Railway here: https://railway.com/deploy/wordpress-with-redis Step 1 - Use Template for Create Regular WordPressThis is the looks when the deployment has finished: Step 2 - Configure Your WordPress Just like regular setup, like filling out the details what kind of site of this, creating the accounts, and more. Step 3 - Install Redis Cache Plugin Go to Plugins → Add Plugin Search for “Redis Object Cache” plugin, then install and Activate the plugin As you can see, the redis is unreachable. It’s normal because we’re not install/deploy the Redis service yet. Step 4 - Deploy Redis Cache Click “ + Create” button in the top right of the canvas screen Type “Resdis”, add it, and wait for a coupule of seconds As you can see, there are no line between WordPress and Redis. Thats normal because we’re not setup a connection yet. Even we’ve deployed Redis on the same project, it doesn’t automatically detected. The localhost IP address (127.0.0.1) is referred to the WordPress docker image service itself, not the Redis service. Step 5 - Configure Environment Variables on WordPress There are many ways to set up Redis on WordPress, such as modifying the wp-config.php file, running it locally, or even connecting via tunneling. In this case, we’re using a simpler method by leveraging the WORDPRESS_CONFIG_EXTRA environment variable provided by WordPress itself. This variable allows us to add extra configuration to the WordPress instance, such as defining the Redis connection URL. Click WordPress service → Go to Variables tabs → Click “New Variable” Fill the fields: VARIABLE_NAME WORDPRESS_CONFIG_EXTRA VALUE: define('DOMAIN_CURRENT_SITE','${{RAILWAY_PUBLIC_DOMAIN}}');define('WP_HOME','https://${{RAILWAY_PUBLIC_DOMAIN}}');define('WP_SITEURL','https://${{RAILWAY_PUBLIC_DOMAIN}}');define('WP_REDIS_HOST','${{Redis.RAILWAY_PRIVATE_DOMAIN}}');define('WP_REDIS_PORT',6379);define('WP_REDIS_PASSWORD','${{Redis.REDIS_PASSWORD}}');define('WP_REDIS_SCHEME','tcp');Here if you want to see the value more pretty: define('DOMAIN_CURRENT_SITE', '${{RAILWAY_PUBLIC_DOMAIN}}'); define('WP_HOME', 'https://${{RAILWAY_PUBLIC_DOMAIN}}'); define('WP_SITEURL', 'https://${{RAILWAY_PUBLIC_DOMAIN}}'); define('WP_REDIS_HOST', '${{Redis.RAILWAY_PRIVATE_DOMAIN}}'); define('WP_REDIS_PORT', 6379); define('WP_REDIS_PASSWORD', '${{Redis.REDIS_PASSWORD}}'); define('WP_REDIS_SCHEME', 'tcp'); Add and save it Now all of them are connected, we can observe by detecting there lines between them. At this time, the WordPress service is expected to able detect the Redis service within the project. To make it sure, go back to the Redis Object Cache plugin page and refresh it regularly. And yes, it now reachable. It utitlizing a Railway internal networking to connect between services. We can notice the redis.railway.internal on the WP_REDIS_HOST environment variable. Step 6 - Enable Redis Object Cache Last but not least, enable the caching functionality And that’s it ! Your WordPress site is now supercharged with Redis caching, running smoothly on Railway. 🚀 With this setup, you’re already getting a noticeable performance boost, especially for sites with a lot of dynamic content. And the best part? You did it all without touching wp-config.php manually, thanks to WORDPRESS_CONFIG_EXTRA. Of course, this is just the beginning. You can expand this stack to power multiple sites, experiment with different caching strategies, or even integrate more services into your Railway project. Hope this guide helps you speed up your WordPress. And if it does, maybe treat yourself to a good coffee while watching your site load faster than ever. ☕✹ Tip (Optional): With this stack, you can also build a multi-tenant architecture. For example, using a single database server (MariaDB/MySQL), a single caching layer (Redis), and multiple WordPress instances, such as 3 or 5 websites running simultaneously. For now, though, we’ll stop here.

☔ Setup Personal Mini Server dengan Coolify

☔ Setup Personal Mini Server dengan Coolify

Membangun mini-infra & DevOps untuk eksperimen, automation, side project, hobi, dan lain-lain. Izinkan saya berbagi ✹ Untuk provider server/VPS sebenarnya bebas. Tapi karena semua free trial saya sudah expired di GCP, Azure, Alibaba Cloud, dkk di tahun-tahun sebelumnya, dan pada saat itu belum kepikiran buat seperti ini, jadi... Kali ini saya pakai AWS, lebih tepatnya AWS Lightsail. Alasannya simpel, karena masih ada alokasi free trial ±3 bulan yang belum terpakai. FYI, free trial ini berlaku untuk akun yang belum pernah pakai Lightsail, meski akunnya sudah lama (saya user sejak 2021). Spesifikasi instance yang saya pakai: Region: Singapore (latency ~35ms dari ISP rumah) Spec: 2-core CPU, 2GB RAM, 60G disk, OS Ubuntu 24 LTS Tambahan: Swapfile 8GB untuk backup saat ram penuhUntuk platform self-host PaaS, kali ini saya pakai Coolify, fiturnya cukup lengkap untuk kebutuhan DevOps. Web proxy-nya default pakai Traefik. Pendukung & integrasi: DNS management: Cloudflare (free plan) Storage & backup reguler: Cloudflare R2 (free 10GB) Email notifikasi: Resend (free 3000 pesan/bulan) Monitoring sederhana: Dashdot (web), atau htop (ssh)Coolify menyediakan banyak template aplikasi & microservices bawaan. Kalau mau custom, bisa langsung pakai Dockerfile atau docker-compose. Saat ini server saya gunakan untuk beban ringan-sedang, seperti otomasi n8n dan blogging dengan Ghost CMS. Untuk use-case seperti ini, saya belum butuh (dan belum belajar) logging dan monitoring yang advanced. Jadi Prometheus dan Grafana skip dulu. Paling cukup pakai Portainer untuk manage/observe container. Sejauh ini sudah dipakai selama ± ⅔ bulan. Alhamdulillah aman jaya. Asalkan jangan gegabah eksekusi perintah horror seperti "sudo rm -rf /" đŸ’„ Untuk workload yang lebih tinggi, biasanya saya summon vps baru dengan tipe spot/preemptible, agar lebih hemat cost per-jamnya. Tapi, dengan trade off sewaktu-waktu vps dapat dihentikan. ⚠ Catatan penting: Untuk penggunaan kritikal dan berisiko tinggi seperti transaksi finansial atau layanan kesehatan yang dapat berdampak pada kerugian materiil atau bahkan nyawa, sebaiknya berkonsultasi dengan DevOps Engineer profesional yang berpengalaman di bidang tersebut. Semoga bermanfaat! 🚀 [Day 18/100] hashtag#100HariMenulis - s.id/100HariNulis

Membuat Web Proxy dengan Squid dari VPS Apapun. Cepat & Simpel

Membuat Web Proxy dengan Squid dari VPS Apapun. Cepat & Simpel

Disclaimer: Artikel ini dibuat berdasarkan pengalaman pribadi dan juga pengetahuan yang terbatas. Ada kemungkinan ketidaksesuaian informasi. Intro — Apa itu Web Proxy? Web proxy adalah layanan “perantara” antara pengguna (user) dan internet yang bertugas meneruskan permintaan akses situs. Ketika kita mengakses situs (atau server) pakai web proxy, proxy tadi yg akan menghubungi situs tujuan atas nama kita, kemudian mengirimkan kembali hasilnya. Background — Kenapa pakai Web Proxy? Bermula dari keresahan pribad. Terkadang saat membuka website, ada gangguan yang menyebabkan tidak bisa diakses, padahal tidak sedang diblokir. Pada kasus saya, saat saya menggunakan jaringan Wi-Fi rumah terdapat error saat mengakses Dribbble (https://dribbble.com/). Nampak seperti tidak nyambung. Jika berhasil loading pun, sepertinya banyak gambar / aset lain yang gagal di-load. Press enter or click to view image in full size Hmm.. Padahal jika diakses memakai mobile data (pakai kuota), aksesnya aman-aman saja. Tapi kalau diakses lewat Wi-Fi, justru malah tidak nyambung. Sudah gonta-ganti provider DNS juga tidak ngefek. Problem ini sudah lama terjadi. Nah, dari fenomena tadi, aku ber hipotesis bahwa ada masalah pada koneksi antara ISP (provider internet) WiFi rumah dengan server milik Dribbble. Daripada emosi, mending coba cari solusi ya kan
 Nah, di sini, proxy bertindak sebagai “makelar” atau penghubung antara komputer/laptop kita dengan si server yang akan di tuju. Dia berada di tengah2 sambungan. Dia bertugas menyampaikan request dari client ke server, serta menerima response dari server ke client. Saat kita sudah terhubung dengan web proxy, seolah2 si web proxy itulah yang mengirimkan request ke server. Jadi, di mata server, yang menghampiri dirinya adalah si proxy tadi, bukan client (laptop/pc) yang saat ini kita gunakan. Yaa, setidaknya kita tahu bahwa ada alternatif untuk akses ke sana. Ini pun juga bukan solusi pakem, namun hanya sementara, atau saat dibutuhkan saja. Jika kalian ada solusi yg lebih baik, bisa langsung komen2 saja yaa. Oke gas, yuk mulai eksekusi
. Siapkan VPSPada kasus ini menggunakan GCP (Google Cloud Platform), namun bisa juga pakai provider/platform lain. Spesifikasi: OS Debian 11, shared CPU, storage 10 GB, lokasi di Singapore. Jenis VM adalah SPOT machine (ephemeral), agar hemat biaya Pastikan port sudah di-allow. Bisa di whitelist dulu di pengaturan firewall Login ke VPS melalui SSHUpdate Sistem dan Install Squid Karena di linux debian, pakai apt sudo apt update -y sudo apt install squid -y Press enter or click to view image in full size Konfigurasi Squid Atur pengaturan Squid di file config nya sudo nano /etc/squid/squid.conf Maka tampilannya kurang lebih akan seperti ini. Ada banyak informasi dan dokumentasi. Press enter or click to view image in full size Namun, kita akan langsung skip saja to the point yaa, yaitu konfigurasi agar dapat berfungsi secara praktis. Scroll ke bawah sampai nemu bagian “http_access deny all”.Note: Scroll nya emg banyak. Scroll bisa pakai mouse atau pencet tombol panah maupun Page Up/Down di keyboard. Di sini kita bisa atur2 konfigurasinya. Misalkan mau dibuat bebas siapapun bisa gunakan VM ini, atau dibuat strict utk alamat IP tertenu, ganti port, dan lain sebagainya. Namun, utk kali ini kita buat mudah saja dulu, yaitu memungkinkan utk digunakan semua orang. Maka rubah “http_access deny all” menjadi “http_access allow all”. Press enter or click to view image in full size Jika sudah selesai mengaturnya, maka simpan dengan cara menekan “Ctrl+X”, lalu tekan “Y” utk simpan. Press enter or click to view image in full size Restart Service Squid Konfigurasi yang sudah disimpan tadi masih belum dieksekusi oleh sistem. Maka dari itu, kita perlu me-restart service nya agar memuat konfigurasi yang terbaru. Atau bisa juga dengan melakukan reboot. systemctl restart squid Utk tahapan konfigurasi sudah selesai. Saatnya melakukan pengujian. Test Koneksi Coba kita sambungkan dengan IP address tersebut. Jika kita memakai Windows, bisa langsung dirubah di bagian Proxy. Lalu isikan alamat server beserta port nya. Secara default, Squid beroperasi pada port 3128. Press enter or click to view image in full sizePress enter or click to view image in full size Lalu, untuk pengecekan apakah benar2 sudah tersambung koneksi dengan web proxy tersebut, dapat menggunakan alat pendeteksi ip address kita. Misalkan dengan membuka https://whatismyipaddress.com/ Di sini sudah terpantau sudah berubah sesuai dgn ekspektasi. ISP dari Google, di area Singapore (tempat VM berada). Press enter or click to view image in full size Di test buka Dribbble, alhamdulillah terpantau aman. Press enter or click to view image in full size Jika sudah tidak dipakai VM nya, maka sebaiknya dimatikan saja untuk menghemat pengeluaran biaya yaa
 Semoga bermanfaat đŸ€ Baarakallah fiikum Proxy Google Cloud Platform Vps Networking