Membongkar Cache, Menyambung Tunnel: Hidupkan Kembali Joomla Lama dari Lokal ke Publik
Membongkar Cache, Menyambung Tunnel: Hidupkan Kembali Joomla Lama dari Lokal ke Publik
Dalam bab sebelumnya, mungkin kita telah membicarakan betapa rapuhnya asumsi kita terhadap sistem yang "tampaknya" berjalan normal; kini, kita akan menyelami sebuah kasus nyata di mana untuk sekadar membuat sebuah situs lama bisa diakses lagi, diperlukan penyelamatan berlapis dari database, konfigurasi, cache, hingga arsitektur jaringan.
Pagi itu, kopi di tangan kanan, mouse di tangan kiri. Di layar ada sebuah folder proyek lama, namanya ‘client_2015’. Isinya? Sebuah situs Joomla yang terakhir kali disentuh mungkin saat harga BBM masih di bawah enam ribu. Tugasnya sederhana, katanya: “Bikin bisa diakses lagi, mas. Cuma untuk arsip.” Kalimat-kalimat seperti ini selalu punya ruang bawah tanah yang luas. “Cuma untuk arsip” artinya: pulihkan semuanya, tampilannya harus utuh, tautannya harus jalan, tapi anggarannya cukup untuk beli dua tiga cup kopi premium. Dunia memang absurd.
Langkah pertama selalu terlihat paling bersih: restore database. Export dari server lama, import ke lokal. Tabel-tabel itu kembali bernapas di phpMyAdmin yang baru. *Configuration.php* dibuka. Parameter host, user, password database disesuaikan. Semua prosedur standar. Lalu, klik buka di browser lokal. “Halaman tidak dapat ditampilkan.” Bukan error 404 yang sopan, tapi halaman putih polos, kadang disertai secuil teks tentang kesalahan SQL. Begitulah sistem lama menyapa: dengan diam-diam memberontak.
Di sinilah kerja sunyi dimulai. Asumsi pertama: konfigurasi salah. Diperiksa lagi. Sudah benar. Asumsi kedua: versi PHP tidak cocok. Server lama pakai PHP 5.6, lokal pakai 8.x. Turunkan ke 7.4. Halaman muncul! Tapi… separuh. CSS berantakan, gambar hilang, menunya pada ngumpet. Tampilannya seperti rumah yang atapnya dibongkar separuh. Ini bukan masalah versi PHP lagi. Ini soal ingatan.
Joomla, seperti banyak sistem CMS lama, punya memori yang keras kepala. Dia menyimpan jalan pintas, tata letak, bahkan lokasi file, di sebuah tempat bernama cache. Bukan cache browser, tapi cache internalnya sendiri. Selama bertahun-tahun dia mengumpulkan ‘jalan tol’ untuk menampilkan halaman dengan cepat. Ketika kita pindahkan dia ke lingkungan baru, jalan tol itu masih ada di peta, tapi jalan raya fisiknya sudah berbeda. Dia tetap nekat lewat jalan tol yang sudah tidak ada. Hasilnya? Error, atau tampilan yang setengah-setengah.
Maka, dimulailah proses membongkar cache. Bukan sekadar klik ‘Clear Cache’ di admin panel—karena admin panel-nya sendiri tidak bisa diakses. Ini kerja tangan. Masuk ke database, cari tabel `jos_cache`, `jos_modules`, `jos_sessions`. Kosongkan. Cari folder `/cache/` dan `/tmp/` di struktur file. Hapus isinya. Setiap penghapusan seperti membuka jendela yang tertutup cat. Sedikit cahaya masuk.
Refresh halaman. Masih aneh. Lalu teringat: ‘Live Site’. Ada konfigurasi SEF (Search Engine Friendly) URL. Di *Configuration.php*, ada variabel `$live_site`. Nilainya masih mengarah ke domain lama yang sudah mati, ‘http://www.clientku2015.com’. Sistem Joomla ini, dalam kebingungannya, mencoba redirect asset (CSS, JS, gambar) ke alamat lama itu. Karena alamat itu tak terjawab, asset-asset itu hilang. Ganti nilai `$live_site` jadi kosong. Refresh lagi.
Lambat laun, seperti foto polaroid yang keluar dari cairan, tampilan situs mulai muncul. Gambar muncul satu per satu. Menu turun dengan malu-malu. Rasanya… lega. Seperti menemukan suara dari pita kaset tua yang sudah diduga rusak. Tapi ini baru di lokal. Di mesin ini saja. Dia masih terisolasi, seperti spesimen dalam botol kaca.
Tahap berikutnya: membawanya ke dunia luar. ‘Cuma untuk arsip’ berarti harus bisa diakses dari internet, tapi tidak perlu hosting penuh dengan SSH dan konfigurasi ribet. Di sinilah Cloudflare Tunnel masuk. Sebuah tool kecil bernama `cloudflared`. Filosofinya menarik: alih-alih kita membuka lubang di router (port forwarding) yang seperti membuka jendela kamar tidur ke jalan raya, kita pasang sebuah terowongan pribadi yang tersambung dari server lokal kita langsung ke jaringan Cloudflare. Dunia luar yang mengakses domain publik hanya melihat ujung terowongan yang rapi di Cloudflare, tanpa pernah menyentuh atau tahu di mana persisnya ‘server’ lokal itu bersembunyi. Ini seperti memiliki alamat kotak pos di tengah kota, sementara rumahmu sebenarnya di lembah terpencil.
Proses instalasi *cloudflared* sederhana. Download, autentikasi, buat tunnel, dapat ID. Lalu tentukan service yang akan diexpose: `http://localhost:8888` (di mana XAMPP/WAMP berjalan). Jalankan tunnel. Dalam hitungan detik, dashboard Cloudflare memberi sebuah subdomain acak seperti `https://client-2015.trycloudflare.com`. Klik.
Dan… redirect loop. Halaman terus memuat ulang, berputar-putar tak berujung, seperti anjing yang kejar ekornya sendiri. Frustrasi? Sedikit. Tapi justru di titik ini kerja sunyi menjadi meditasi. Redirect loop pada Joomla yang diakses via tunnel seringkali adalah soal konteks yang bercabang. Sistem Joomla melihat permintaan datang dari domain `trycloudflare.com`, tapi di konfigurasinya, dia punya pengaturan SSL dan base URL yang mungkin memaksa redirect ke HTTP atau HTTPS tertentu. Sementara, Cloudflare Tunnel secara default meneruskan traffic sebagai HTTP ke lokal, tetapi menyajikannya sebagai HTTPS ke publik. Ketidakcocokan skema (http/https) dan domain inilah yang membuat sistem bingung, terus-menerus mengarahkan ulang, mencari ‘kondisi yang benar’ yang tak pernah ia temui.
Solusinya? Kembali ke konfigurasi. Di *Configuration.php*, pastikan `$force_ssl` di set ke ‘0’ atau ‘none’. Di pengaturan Global Configuration di admin panel (yang kini sudah bisa diakses), pastikan pengaturan ‘Live Site’ benar-benar kosong, dan ‘Use URL Rewriting’ sesuai. Kadang, kita juga perlu masuk ke tabel `jos_redirect`, mengosongkannya, karena mungkin ada aturan redirect lama yang mengacaukan.
Setelah penyesuaian itu, tunnel di-restart. Klik lagi subdomain Cloudflare. Kali ini, halaman muncul. Sempurna. Tampilan utuh, menu berfungsi, tautan internal mengarah dengan benar. Situs dari 2015 itu berdiri lagi di internet, diakses dari subdomain Cloudflare, namun berjalan dari laptop di meja kerja yang sama dengan secangkir kopi tadi. Ada sebuah kepuasan yang dalam dan sunyi. Tidak ada yang bertepuk tangan. Tidak ada notifikasi pujian. Hanya log di terminal yang menunjukkan koneksi tunnel stabil, dan browser yang menampilkan sebuah potongan waktu yang berhasil dihidupkan kembali.
Proses ini mengajarkan satu hal: sistem, terutama yang tua, bukan sekadar kode. Dia adalah konteks yang membeku. Ada cache yang adalah ingatannya. Ada konfigurasi yang adalah asumsinya tentang dunia. Ada link yang adalah jalur hubungannya. Ketika kita memindahkannya, kita tidak boleh hanya memindahkan file dan database. Kita harus memindahkan, atau lebih tepatnya menyelaraskan kembali, konteksnya. Membongkar cache adalah melupakan ingatan yang keliru. Memperbaiki konfigurasi adalah memberitahunya peta dunia yang baru. Menyambung tunnel adalah memberinya sebuah identitas baru yang aman untuk berinteraksi.
Semua ini tidak terlihat. Pengguna akhir hanya akan melihat sebuah situs lama yang bisa dibuka. Mereka tidak akan bertanya tentang cache yang dikosongkan, atau tunnel yang jadi jembatan, atau perjuangan melawan redirect loop. Itu baik-baik saja. Karena sebagian besar kerja terpenting memang demikian: sunyi, teknis, dan hanya diketahui oleh sistem itu sendiri dan orang yang merawatnya. Keberhasilan adalah ketika semua kompleksitas itu tersembunyi di balik sebuah halaman web yang loading-nya lancar.
Proses ini, yang jarang terlihat oleh pengguna akhir, mengingatkan kita bahwa kerja sunyi sistem sesungguhnya adalah seni merawat konteks—bukan hanya kode—agar setiap lapisan, dari lokal hingga publik, dapat bersuara dalam harmoni yang konsisten dan aman.
FAQ (Tanya Jawab Receh)
Q: Kok repot amat sih? Kan tinggal pindahin folder dan database?
A: Iya, kalo hidup sesederhana itu, kita semua sudah bahagia. Tapi faktanya, sistem lama itu seperti nenek yang pindah rumah: bukan cuma barangnya, tapi kenangan, kebiasaan, dan prasangka tentang letak kamar mandi yang harus diatur ulang.
Q: PHP 8 gak bisa? Harus turun ke 7.4?
A: Bisa saja. Tapi butuh waktu untuk ‘menerjemahkan’ bahasa PHP 5.6 ke 8. Waktu itu seringkali lebih mahal daripada sekadar menurunkan versi. Kadang, kepraktisan adalah bentuk kecerdasan yang lain.
Q: Cloudflare Tunnel itu bayar?
A: Untuk kasus kayak gini, nggak. Mereka punya tier gratis yang cukup untuk tunnel beberapa service. Ini salah satu keajaiban zaman sekarang: infrastruktur canggih bisa dicicipi gratis.
Q: Apa nggak takut kalo laptop mati, situsnya mati?
A: Tentu takut. Makanya ini cuma untuk arsip sementara atau testing. Untuk arsip permanen, harus di-*freeze* dan dipindah ke hosting statis. Tapi tunnel ini solusi yang cepat dan… hidup. Ada pohon yang ditanam di pot, nggak harus langsung di kebun.
Q: Paling males kalau udah nyangkut di redirect loop. Tips cepat?
A: 1. Cek *Configuration.php*: `$force_ssl`, `$live_site`. 2. Cek pengaturan ‘Use HTTPS’ di admin panel. 3. Kosongkan tabel redirect dan non-aktifkan plugin redirect jika ada. 4. Lihat log tunnel dan log error PHP. Biasanya jawabannya berteriak di situ, cuma kita aja yang kadang tutup telinga.
Q: Kerja kayak gini ngenes nggak sih? Cuma ngurusi barang rongsokan.
A: Tergantung lihatnya sebagai apa. Kalo lihatnya sebagai rongsokan, ya ngenes. Kalo lihatnya sebagai paleontologi digital—menggali, merakit, dan memahami kehidupan sistem di era lain—ini bisa cukup mengasyikkan. Dan dibayar. Lumayan buat tambah kopi.
Dismantling Cache, Connecting Tunnels: Reviving an Old Joomla from Local to Public
In the previous chapter, we might have discussed how fragile our assumptions are about systems that "seem" to run normally; now, we will dive into a real case where, just to make an old site accessible again, a layered rescue is required—from the database, configuration, cache, to network architecture.
That morning, coffee in the right hand, mouse in the left. On the screen was an old project folder named ‘client_2015’. Its contents? A Joomla site last touched perhaps when fuel prices were below six thousand. The task was simple, they said: "Just make it accessible again, for archive purposes." Sentences like these always have a vast basement. "Just for archive" means: restore everything, the display must be intact, the links must work, but the budget is enough for two or three cups of premium coffee. The world is indeed absurd.
The first step always looks the cleanest: restore the database. Export from the old server, import to local. Those tables start breathing again in a fresh phpMyAdmin. Open *Configuration.php*. Adjust the database host, user, password parameters. All standard procedures. Then, click open in the local browser. "Page cannot be displayed." Not a polite 404 error, but a plain white page, sometimes accompanied by a snippet of SQL error text. That's how old systems greet you: with a silent rebellion.
This is where the quiet work begins. First assumption: wrong configuration. Check again. It's correct. Second assumption: PHP version mismatch. The old server used PHP 5.6, local uses 8.x. Downgrade to 7.4. The page appears! But… half of it. CSS is messy, images missing, menus in hiding. The display is like a house with half its roof torn off. This is no longer a PHP version issue. This is about memory.
Joomla, like many old CMS systems, has a stubborn memory. It stores shortcuts, layouts, even file locations, in a place called cache. Not browser cache, but its own internal cache. For years it collected 'highways' to display pages quickly. When we move it to a new environment, those highways are still on the map, but the physical roads are different. It still stubbornly tries to use highways that no longer exist. The result? Errors, or a half-baked display.
So begins the process of dismantling the cache. Not just clicking ‘Clear Cache’ in the admin panel—because the admin panel itself is inaccessible. This is manual labor. Go into the database, look for tables `jos_cache`, `jos_modules`, `jos_sessions`. Empty them. Find the `/cache/` and `/tmp/` folders in the file structure. Delete their contents. Each deletion is like opening a window painted shut. A little light enters.
Refresh the page. Still weird. Then I remember: ‘Live Site’. There's SEF (Search Engine Friendly) URL configuration. In *Configuration.php*, there's a variable `$live_site`. Its value still points to the old dead domain, ‘http://www.clientku2015.com’. In its confusion, this Joomla system tries to redirect assets (CSS, JS, images) to that old address. Since that address doesn't respond, those assets are lost. Change the `$live_site` value to empty. Refresh again.
Slowly, like a polaroid photo developing in solution, the site's appearance begins to emerge. Images appear one by one. The menu dropdowns shyly. It feels… relieving. Like recovering sound from an old cassette tape presumed broken. But this is only local. Only on this machine. It's still isolated, like a specimen in a glass jar.
Next stage: bringing it to the outside world. 'Just for archive' means it must be accessible from the internet, but doesn't need full hosting with SSH and complicated configuration. This is where Cloudflare Tunnel comes in. A small tool called `cloudflared`. Its philosophy is interesting: instead of poking a hole in the router (port forwarding) which is like opening a bedroom window to a highway, we install a private tunnel that connects from our local server directly to the Cloudflare network. The outside world accessing the public domain only sees the neat end of the tunnel at Cloudflare, without ever touching or knowing exactly where that 'local server' is hiding. It's like having a PO box address downtown, while your actual house is in a remote valley.
The *cloudflared* installation process is simple. Download, authenticate, create a tunnel, get an ID. Then specify the service to expose: `http://localhost:8888` (where XAMPP/WAMP runs). Run the tunnel. Within seconds, the Cloudflare dashboard provides a random subdomain like `https://client-2015.trycloudflare.com`. Click.
And… redirect loop. The page keeps reloading, spinning endlessly, like a dog chasing its own tail. Frustrating? A bit. But it's precisely at this point that the quiet work becomes meditation. A redirect loop on Joomla accessed via a tunnel is often about split context. The Joomla system sees the request coming from the `trycloudflare.com` domain, but in its configuration, it has SSL and base URL settings that might force a redirect to a specific HTTP or HTTPS scheme. Meanwhile, Cloudflare Tunnel by default forwards traffic as HTTP to local, but serves it as HTTPS to the public. This mismatch in scheme (http/https) and domain is what confuses the system, causing it to redirect endlessly, searching for the 'correct condition' it never finds.
The solution? Back to configuration. In *Configuration.php*, make sure `$force_ssl` is set to ‘0’ or ‘none’. In the Global Configuration in the admin panel (which is now accessible), ensure the ‘Live Site’ setting is truly empty, and ‘Use URL Rewriting’ is appropriate. Sometimes, you also need to go to the `jos_redirect` table and empty it, because there might be old redirect rules causing chaos.
After those adjustments, restart the tunnel. Click the Cloudflare subdomain again. This time, the page appears. Perfectly. Display intact, menus functional, internal links point correctly. The site from 2015 stands again on the internet, accessed via a Cloudflare subdomain, yet running from the laptop on the same desk as that cup of coffee. There's a deep and quiet satisfaction. No one applauds. No praise notifications. Only the terminal log showing a stable tunnel connection, and the browser displaying a slice of time successfully revived.
This process teaches one thing: a system, especially an old one, is not just code. It is frozen context. There is cache, which is its memory. There is configuration, which is its assumption about the world. There are links, which are its relational pathways. When we move it, we must not just move files and databases. We must move, or more accurately, reconcile, its context. Dismantling the cache is making it forget faulty memories. Fixing the configuration is telling it a new world map. Connecting a tunnel is giving it a new, secure identity to interact with.
None of this is visible. The end user will only see an old site that can be opened. They won't ask about the emptied cache, or the tunnel acting as a bridge, or the struggle against the redirect loop. That's fine. Because most of the most important work is like that: silent, technical, and known only to the system itself and the person maintaining it. Success is when all that complexity is hidden behind a web page that loads smoothly.
This process, rarely seen by end users, reminds us that the quiet work of a system is truly the art of maintaining context—not just code—so that every layer, from local to public, can speak in consistent and secure harmony.
FAQ (Casual Q&A)
Q: Why so complicated? Can't you just move the folder and database?
A: Yes, if life were that simple, we'd all be happy. But the fact is, old systems are like grandmothers moving house: it's not just the belongings, but the memories, habits, and prejudices about the bathroom location that need rearranging.
Q: PHP 8 won't work? Have to downgrade to 7.4?
A: It can. But it takes time to 'translate' PHP 5.6 language to 8. That time is often more costly than simply downgrading. Sometimes, practicality is another form of intelligence.
Q: Is Cloudflare Tunnel paid?
A: For cases like this, nope. They have a free tier sufficient for tunneling several services. It's one of the wonders of this age: sophisticated infrastructure can be sampled for free.
Q: Aren't you afraid if the laptop dies, the site dies?
A: Of course. That's why this is only for temporary archiving or testing. For permanent archive, it must be *frozen* and moved to static hosting. But this tunnel is a quick and… alive solution. Sometimes you plant a tree in a pot, it doesn't have to be directly in the garden.
Q: The worst is getting stuck in a redirect loop. Any quick tips?
A: 1. Check *Configuration.php*: `$force_ssl`, `$live_site`. 2. Check the ‘Use HTTPS’ setting in the admin panel. 3. Empty the redirect table and disable any redirect plugin if present. 4. Look at the tunnel log and PHP error log. Usually the answer is screaming there, it's just that we sometimes cover our ears.
Q: Isn't work like this kind of depressing? Just dealing with junk.
A: It depends on how you see it. If you see it as junk, then yes, depressing. If you see it as digital paleontology—digging, assembling, and understanding system life from another era—it can be quite fascinating. And you get paid. Good enough for extra coffee.
Thank you for stopping by! If you enjoy the content and would like to show your support, how about treating me to a cup of coffee? �� It’s a small gesture that helps keep me motivated to continue creating awesome content. No pressure, but your coffee would definitely make my day a little brighter. ☕️ Buy Me Coffee

Post a Comment for "Membongkar Cache, Menyambung Tunnel: Hidupkan Kembali Joomla Lama dari Lokal ke Publik"
Post a Comment
You are welcome to share your ideas with us in comments!