[{"data":1,"prerenderedAt":232},["ShallowReactive",2],{"navigation":3,"/blog/blooper-cloudflare-env-vars":142,"surround-blooper-cloudflare-env-vars":220},[4],{"title":5,"path":6,"stem":7,"children":8,"page":141},"Blog","/blog","blog",[9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137],{"title":10,"path":11,"stem":12},"How to Increase Free Tier Memory on AWS EC2","/blog/aws-ec2-ram","blog/aws-ec2-ram",{"title":14,"path":15,"stem":16},"Blooper: The Disappearing Cloudflare Variables","/blog/blooper-cloudflare-env-vars","blog/blooper-cloudflare-env-vars",{"title":18,"path":19,"stem":20},"Blooper: Hardcoded Content Links cause 404s","/blog/blooper-hardcoded-nuxt-content-links","blog/blooper-hardcoded-nuxt-content-links",{"title":22,"path":23,"stem":24},"Blooper: The Invisible SEO","/blog/blooper-nuxt-seo-env","blog/blooper-nuxt-seo-env",{"title":26,"path":27,"stem":28},"Blooper: The SSR Crash of Doom","/blog/blooper-ssr-feedback-form","blog/blooper-ssr-feedback-form",{"title":30,"path":31,"stem":32},"Blooper: The YouTube Crawl Budget Killer","/blog/blooper-video-crawl-budget","blog/blooper-video-crawl-budget",{"title":34,"path":35,"stem":36},"Blooper: PWA Redirecting SPA Routes","/blog/blooper-vite-pwa-ssr-redirects","blog/blooper-vite-pwa-ssr-redirects",{"title":38,"path":39,"stem":40},"The Developer's Guide to Avoiding Cloud Billing Traps in 2026","/blog/cloud-billing-traps-2026","blog/cloud-billing-traps-2026",{"title":42,"path":43,"stem":44},"Disk Management in Linux","/blog/disk-management-in-linux","blog/disk-management-in-linux",{"title":46,"path":47,"stem":48},"Docker Devtools Stage | Powerlevel, OhMyZSH, tmux, fuzzy finder, autocomplete etc","/blog/docker-devtools","blog/docker-devtools",{"title":50,"path":51,"stem":52},"Docker container | Resolving Permission Denied Woes: A Decade-Long Struggle Unraveled","/blog/docker-non-root-user-perms","blog/docker-non-root-user-perms",{"title":54,"path":55,"stem":56},"The Ultimate Guide to Free Tier Hosting Platforms (Serverless & Containers)","/blog/free-hosting-platforms-guide","blog/free-hosting-platforms-guide",{"title":58,"path":59,"stem":60},"Git commands | underrated","/blog/git-commands-underrated","blog/git-commands-underrated",{"title":62,"path":63,"stem":64},"Journey: Taming Edge Caching and KV Storage","/blog/journey-github-streak-caching","blog/journey-github-streak-caching",{"title":66,"path":67,"stem":68},"Kubernetes Cluster Setup Guide","/blog/k8s-setup","blog/k8s-setup",{"title":70,"path":71,"stem":72},"Linux WiFi Drivers","/blog/linux-wifi-drivers","blog/linux-wifi-drivers",{"title":74,"path":75,"stem":76},"pfSense basic firewall setup","/blog/pfsense-basic-firewall-setup","blog/pfsense-basic-firewall-setup",{"title":78,"path":79,"stem":80},"pfSense Quickstart","/blog/pfsense-quickstart","blog/pfsense-quickstart",{"title":82,"path":83,"stem":84},"Postmortem: Cloudflare Worker Missing Dependency on Deploy","/blog/postmortem-cloudflare-worker-dependency-deploy","blog/postmortem-cloudflare-worker-dependency-deploy",{"title":86,"path":87,"stem":88},"Postmortem: Serverless HTTP Driver Transaction Failures","/blog/postmortem-neon-http-transactions","blog/postmortem-neon-http-transactions",{"title":90,"path":91,"stem":92},"Postmortem: The Ghost in the Chrome Cache (Nuxt & Cloudflare Pages)","/blog/postmortem-nuxt-cloudflare-chunk-error","blog/postmortem-nuxt-cloudflare-chunk-error",{"title":94,"path":95,"stem":96},"Postmortem: Nuxt Content 404s on Staging Deployments","/blog/postmortem-nuxt-content-404-staging","blog/postmortem-nuxt-content-404-staging",{"title":98,"path":99,"stem":100},"Postmortem: 500 Internal Server Error on ISR Routes","/blog/postmortem-nuxt-content-payload-extraction","blog/postmortem-nuxt-content-payload-extraction",{"title":102,"path":103,"stem":104},"Post-Mortem: Intrusive Database Driver Refactoring","/blog/postmortem-proxy-re-architecting","blog/postmortem-proxy-re-architecting",{"title":106,"path":107,"stem":108},"Post-Mortem: Cloudflare Worker Connection Hang & Resilient DB Fallbacks","/blog/postmortem-worker-db-connection-hang","blog/postmortem-worker-db-connection-hang",{"title":110,"path":111,"stem":112},"Pro Tip: Sandboxing Cloudflare Workers for AI Agents","/blog/pro-tip-wrangler-local-dev-trick","blog/pro-tip-wrangler-local-dev-trick",{"title":114,"path":115,"stem":116},"Proxmox DNS Management","/blog/proxmox-dns","blog/proxmox-dns",{"title":118,"path":119,"stem":120},"Proxmox Recovery","/blog/proxmox-recovery","blog/proxmox-recovery",{"title":122,"path":123,"stem":124},"Proxmox WiFi Connection Story","/blog/proxmox-wifi","blog/proxmox-wifi",{"title":126,"path":127,"stem":128},"roadauth-rails api jwt cors","/blog/rodauth-jwt","blog/rodauth-jwt",{"title":130,"path":131,"stem":132},"SOCKS5 Proxy Quickstart","/blog/sock5-proxy","blog/sock5-proxy",{"title":134,"path":135,"stem":136},"tmux status bar toggle","/blog/tmux-status","blog/tmux-status",{"title":138,"path":139,"stem":140},"UFW - Cheatsheet","/blog/ufw-cheatsheet","blog/ufw-cheatsheet",false,{"id":143,"title":14,"authors":144,"badge":150,"body":152,"date":209,"description":210,"extension":211,"image":212,"imageComponent":213,"meta":214,"navigation":215,"path":15,"pinned":141,"seo":216,"seoImage":217,"stem":16,"__hash__":219},"posts/blog/blooper-cloudflare-env-vars.md",[145],{"name":146,"to":147,"avatar":148},"Rahul Dhole","/",{"src":149},"/profile.png",{"label":151},"Blooper",{"type":153,"value":154,"toc":202},"minimark",[155,160,177,181,188,192],[156,157,159],"h2",{"id":158},"the-blunder","The Blunder",[161,162,163,164,168,169,172,173,176],"p",{},"I kept adding ",[165,166,167],"code",{},"MATRIX_URL"," and ",[165,170,171],{},"MATRIX_SERVER_NAME"," to the Cloudflare dashboard as plain text environment variables. Every time I ran ",[165,174,175],{},"wrangler deploy",", they vanished into the void.",[156,178,180],{"id":179},"the-duh-moment","The \"Duh\" Moment",[161,182,183,184,187],{},"Wrangler is a neat freak. If a plain text variable isn't explicitly written in the ",[165,185,186],{},"wrangler.toml"," file, Wrangler deletes it from Cloudflare during deployment to keep the deployed state perfectly synced with the repository configuration. (Secrets, thankfully, are spared from this purge).",[156,189,191],{"id":190},"the-fix","The Fix",[161,193,194,195,197,198,201],{},"Just hardcode the non-secret URLs in ",[165,196,186],{}," under ",[165,199,200],{},"[vars]",". Problem solved! 🤦‍♂️",{"title":203,"searchDepth":204,"depth":204,"links":205},"",2,[206,207,208],{"id":158,"depth":204,"text":159},{"id":179,"depth":204,"text":180},{"id":190,"depth":204,"text":191},"2026-06-24","Why environment variables added via the Cloudflare dashboard kept vanishing after deployment.","md",null,{"type":151},{},true,{"title":14,"description":210},{"src":218},"https://placehold.co/800x400/0f172a/3b82f6?text=Disappearing+Cloudflare+Vars","DEY8RtyWxTZVne1mS2ilIkJaSk2vsiGe4edVGu169Dw",[221,227],{"title":10,"path":11,"stem":12,"description":222,"imageComponent":223,"seoImage":225,"children":-1},"How to Increase Free Tier Memory on AWS EC2 - Dive into the details of how to increase free tier memory on aws ec2 with this quick guide.",{"type":224},"Cloud",{"src":226},"https://placehold.co/800x400/0f172a/3b82f6?text=How+to+Increase+Free+Tier+Memory+on+AWS+EC2",{"title":18,"path":19,"stem":20,"description":228,"imageComponent":229,"seoImage":230,"children":-1},"Why you should never hardcode UI navigation links to specific markdown file paths.",{"type":151},{"src":231},"https://placehold.co/800x400/0f172a/3b82f6?text=Hardcoded+Links+404s",1787398226792]