[{"data":1,"prerenderedAt":846},["ShallowReactive",2],{"navigation":3,"\u002Fen\u002Fblog\u002Fvibe-coding-deployment-problems":497,"surround:\u002Fen\u002Fblog\u002Fvibe-coding-deployment-problems":841},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,295,307,423,451,490],{"title":5,"path":6,"stem":7},"Build and Deploy a Modern Website in 5 Minutes","\u002Fen\u002Fblog\u002Fbuild-with-loveable","en\u002F3.blog\u002F1.build-with-loveable",{"title":9,"path":10,"stem":11},"The Vercel Alternative for the German Mittelstand: Sovereign Hosting on Hetzner with lowcloud","\u002Fen\u002Fblog\u002Fdigital-sovereignty-lowcloud-vs-vercel-b2b","en\u002F3.blog\u002F10.digital-sovereignty-lowcloud-vs-vercel-b2b",{"title":13,"path":14,"stem":15},"Cloud Sovereignty Framework: How the EU Is Finally Making Cloud Sovereignty Measurable","\u002Fen\u002Fblog\u002Fcloud-sovereignty-framework","en\u002F3.blog\u002F12.cloud-sovereignty-framework",{"title":17,"path":18,"stem":19},"Avoiding Cloud Vendor Lock-in: What Real Sovereignty Means Technically","\u002Fen\u002Fblog\u002Fcloud-vendor-lock-in","en\u002F3.blog\u002F13.cloud-vendor-lock-in",{"title":21,"path":22,"stem":23},"Digital Sovereignty with Kubernetes: When Is Open Source Truly Sovereign?","\u002Fen\u002Fblog\u002Fkubernetes-digital-sovereignty","en\u002F3.blog\u002F14.kubernetes-digital-sovereignty",{"title":25,"path":26,"stem":27},"What Is DevOps as a Service and When Does It Actually Make Sense?","\u002Fen\u002Fblog\u002Fdevops-as-a-service","en\u002F3.blog\u002F15.devops-as-a-service",{"title":29,"path":30,"stem":31},"Cloud Sovereignty Governance: Why This Topic Belongs in the Boardroom, Not the Server Room","\u002Fen\u002Fblog\u002Fcloud-sovereignty-governance","en\u002F3.blog\u002F16.cloud-sovereignty-governance",{"title":33,"path":34,"stem":35},"PaaS vs. DaaS: What","\u002Fen\u002Fblog\u002Fpaas-vs-daas","en\u002F3.blog\u002F17.paas-vs-daas",{"title":37,"path":38,"stem":39},"Sovereign Cloud: Can SaaS Really Maintain Control Over Your Data?","\u002Fen\u002Fblog\u002Fsovereign-cloud-saas-data-control","en\u002F3.blog\u002F18.sovereign-cloud-saas-data-control",{"title":41,"path":42,"stem":43},"DevOps vs. DevOps as a Service – Which One Fits Your Team?","\u002Fen\u002Fblog\u002Fdevops-vs-devops-as-a-service","en\u002F3.blog\u002F19.devops-vs-devops-as-a-service",{"title":45,"path":46,"stem":47},"Docker Fundamentals -  Understanding Container Virtualization","\u002Fen\u002Fblog\u002Fhow-docker-works","en\u002F3.blog\u002F2.how-docker-works",{"title":49,"path":50,"stem":51},"The 7 Biggest DevOps Problems in SMBs – And How to Fix Them","\u002Fen\u002Fblog\u002Fdevops-problems-smb","en\u002F3.blog\u002F20.devops-problems-smb",{"title":53,"path":54,"stem":55},"PostgreSQL Helm Chart: How to Deploy Postgres on Kubernetes","\u002Fen\u002Fblog\u002Fpostgresql-helm-chart-kubernetes","en\u002F3.blog\u002F21.postgresql-helm-chart-kubernetes",{"title":57,"path":58,"stem":59},"Platform Engineering vs. DevOps – What","\u002Fen\u002Fblog\u002Fplatform-engineering-vs-devops","en\u002F3.blog\u002F22.platform-engineering-vs-devops",{"title":61,"path":62,"stem":63},"Cloud Act vs. GDPR: The Risk for EU Businesses","\u002Fen\u002Fblog\u002Fcloud-act-vs-gdpr","en\u002F3.blog\u002F23.cloud-act-vs-gdpr",{"title":65,"path":66,"stem":67},"Cut IT Costs with Automation: The Biggest Lever","\u002Fen\u002Fblog\u002Freduce-it-costs-automation","en\u002F3.blog\u002F24.reduce-it-costs-automation",{"title":69,"path":70,"stem":71},"NIS2 Compliance for DevOps Teams: What You Need to Do","\u002Fen\u002Fblog\u002Fnis2-compliance-devops","en\u002F3.blog\u002F25.nis2-compliance-devops",{"title":73,"path":74,"stem":75},"Self-Hosted EU Alternatives: Host LibreOffice & More","\u002Fen\u002Fblog\u002Fself-hosted-eu-alternatives","en\u002F3.blog\u002F26.self-hosted-eu-alternatives",{"title":77,"path":78,"stem":79},"DORA Compliance for DevOps: What the EU Resilience Act Means","\u002Fen\u002Fblog\u002Fdora-compliance-devops","en\u002F3.blog\u002F27.dora-compliance-devops",{"title":81,"path":82,"stem":83},"Cloud TCO: Hidden Costs AWS, Azure & GCP Don't Show You","\u002Fen\u002Fblog\u002Fcloud-tco-hidden-costs","en\u002F3.blog\u002F28.cloud-tco-hidden-costs",{"title":85,"path":86,"stem":87},"Data Residency vs. Data Sovereignty: What Really Matters","\u002Fen\u002Fblog\u002Fdata-residency-vs-data-sovereignty","en\u002F3.blog\u002F29.data-residency-vs-data-sovereignty",{"title":89,"path":90,"stem":91},"Self-Host n8n on Hetzner: Complete Docker Setup Guide","\u002Fen\u002Fblog\u002Fself-hosted-n8n-on-hetzner","en\u002F3.blog\u002F3.self-hosted-n8n-on-hetzner",{"title":93,"path":94,"stem":95},"Manual Deployments: An Underestimated Risk for SMBs","\u002Fen\u002Fblog\u002Fmanual-deployment-risks","en\u002F3.blog\u002F30.manual-deployment-risks",{"title":97,"path":98,"stem":99},"DevOps Tool Sprawl: How It Happens and How to Stop It","\u002Fen\u002Fblog\u002Fdevops-tool-sprawl","en\u002F3.blog\u002F31.devops-tool-sprawl",{"title":101,"path":102,"stem":103},"Kubernetes Monitoring: Using Logs and Metrics Effectively","\u002Fen\u002Fblog\u002Fkubernetes-monitoring-logs-metrics","en\u002F3.blog\u002F32.kubernetes-monitoring-logs-metrics",{"title":105,"path":106,"stem":107},"OB7 Case Study: Website Deployment Without Infrastructure Overhead","\u002Fen\u002Fblog\u002Fob7-case-study-lowcloud-deployment","en\u002F3.blog\u002F33.ob7-case-study-lowcloud-deployment",{"title":109,"path":110,"stem":111},"DevOps in SMBs: Why Missing Roles Become a Real Risk","\u002Fen\u002Fblog\u002Fmissing-devops-roles-smb","en\u002F3.blog\u002F34.missing-devops-roles-smb",{"title":113,"path":114,"stem":115},"Simplify Kubernetes Configuration: The Path to Human-Readable Cloud","\u002Fen\u002Fblog\u002Fsimplify-kubernetes-configuration","en\u002F3.blog\u002F35.simplify-kubernetes-configuration",{"title":117,"path":118,"stem":119},"Collaborative DevOps: How Modern Teams Build Cloud Apps Together","\u002Fen\u002Fblog\u002Fcollaborative-devops-teams","en\u002F3.blog\u002F36.collaborative-devops-teams",{"title":121,"path":122,"stem":123},"Knowledge Documentation in DevOps Teams: How to Actually Reduce Your Bus Factor","\u002Fen\u002Fblog\u002Fdevops-knowledge-documentation-bus-factor","en\u002F3.blog\u002F37.devops-knowledge-documentation-bus-factor",{"title":125,"path":126,"stem":127},"What Is PaaS? Platform as a Service Explained","\u002Fen\u002Fblog\u002Fwhat-is-paas","en\u002F3.blog\u002F38.what-is-paas",{"title":129,"path":130,"stem":131},"EU AI Act Hosting: What Changes for AI Workload Operators","\u002Fen\u002Fblog\u002Feu-ai-act-hosting","en\u002F3.blog\u002F39.eu-ai-act-hosting",{"title":133,"path":134,"stem":135},"Docker Compose Tutorial: Managing Multi-Container Apps Made Easy","\u002Fen\u002Fblog\u002Fdocker-compose-for-beginners","en\u002F3.blog\u002F4.docker-compose-for-beginners",{"title":137,"path":138,"stem":139},"Full-Stack Developer Reality: What the Title Actually Means","\u002Fen\u002Fblog\u002Ffull-stack-developer-reality","en\u002F3.blog\u002F40.full-stack-developer-reality",{"title":141,"path":142,"stem":143},"Cloud Egress Fees Compared: AWS vs. Azure vs. GCP Pricing","\u002Fen\u002Fblog\u002Fcloud-egress-fees","en\u002F3.blog\u002F41.cloud-egress-fees",{"title":145,"path":146,"stem":147},"Bring Your Own Cloud: What the Model Means and Why It","\u002Fen\u002Fblog\u002Fbring-your-own-cloud","en\u002F3.blog\u002F42.bring-your-own-cloud",{"title":149,"path":150,"stem":151},"Zero-Config Kubernetes: Why Simplicity Wins","\u002Fen\u002Fblog\u002Fzero-config-kubernetes","en\u002F3.blog\u002F43.zero-config-kubernetes",{"title":153,"path":154,"stem":155},"Minimalist Cloud Architecture: Why Less Complexity Means More Stability","\u002Fen\u002Fblog\u002Fminimalist-cloud-architecture","en\u002F3.blog\u002F44.minimalist-cloud-architecture",{"title":157,"path":158,"stem":159},"Software Deployment for SMBs: How Small Teams Ship Faster","\u002Fen\u002Fblog\u002Fsmb-software-deployment","en\u002F3.blog\u002F45.smb-software-deployment",{"title":161,"path":162,"stem":163},"EU Data Act: What Businesses and DevOps Teams Need to Know","\u002Fen\u002Fblog\u002Feu-data-act-business-devops","en\u002F3.blog\u002F46.eu-data-act-business-devops",{"title":165,"path":166,"stem":167},"Data Governance Act: What SMBs and DevOps Teams Need to Know","\u002Fen\u002Fblog\u002Fdata-governance-act-devops-guide","en\u002F3.blog\u002F47.data-governance-act-devops-guide",{"title":169,"path":170,"stem":171},"Cloud Agnostic Architecture: Meaning and Trade-offs","\u002Fen\u002Fblog\u002Fcloud-agnostic-architecture","en\u002F3.blog\u002F48.cloud-agnostic-architecture",{"title":173,"path":174,"stem":175},"Kubernetes Migration: What You Need to Know Before You Start","\u002Fen\u002Fblog\u002Fkubernetes-migration-guide","en\u002F3.blog\u002F49.kubernetes-migration-guide",{"title":177,"path":178,"stem":179},"Self-Host Docmost with Docker Compose and Traefik: Complete Guide","\u002Fen\u002Fblog\u002Fself-host-docmost-with-docker-and-traefik","en\u002F3.blog\u002F5.self-host-docmost-with-docker-and-traefik",{"title":181,"path":182,"stem":183},"AI Agent Infrastructure: What You Really Need for Production","\u002Fen\u002Fblog\u002Fai-agent-infrastructure","en\u002F3.blog\u002F50.ai-agent-infrastructure",{"title":185,"path":186,"stem":187},"Managed Services ROI: Why Self-Hosting Costs More Than You Think","\u002Fen\u002Fblog\u002Fmanaged-services-roi","en\u002F3.blog\u002F51.managed-services-roi",{"title":189,"path":190,"stem":191},"lowcloud vs. DevOps as a Service Providers Compared","\u002Fen\u002Fblog\u002Flowcloud-vs-devops-service-providers","en\u002F3.blog\u002F52.lowcloud-vs-devops-service-providers",{"title":193,"path":194,"stem":195},"Kubernetes vs. Docker Swarm: Key Differences and Why K8s Won","\u002Fen\u002Fblog\u002Fkubernetes-vs-docker-swarm","en\u002F3.blog\u002F53.kubernetes-vs-docker-swarm",{"title":197,"path":198,"stem":199},"Hetzner Kubernetes Hosting with lowcloud","\u002Fen\u002Fblog\u002Fhetzner-kubernetes-hosting","en\u002F3.blog\u002F54.hetzner-kubernetes-hosting",{"title":201,"path":202,"stem":203},"MinIO Alternatives Compared: RustFS, SeaweedFS, and Garage","\u002Fen\u002Fblog\u002Fminio-alternatives","en\u002F3.blog\u002F55.minio-alternatives",{"title":205,"path":206,"stem":207},"What is Docker Swarm? Container Orchestration Built In","\u002Fen\u002Fblog\u002Fwhat-is-docker-swarm","en\u002F3.blog\u002F56.what-is-docker-swarm",{"title":209,"path":210,"stem":211},"What Is a Helm Chart? The Package Manager for Kubernetes","\u002Fen\u002Fblog\u002Fwhat-is-a-helm-chart","en\u002F3.blog\u002F57.what-is-a-helm-chart",{"title":213,"path":214,"stem":215},"Docker vs Kubernetes: Compose, Swarm, and K8s Compared","\u002Fen\u002Fblog\u002Fdocker-vs-kubernetes","en\u002F3.blog\u002F58.docker-vs-kubernetes",{"title":217,"path":218,"stem":219},"What Is Kustomize? Managing Kubernetes Configs Cleanly","\u002Fen\u002Fblog\u002Fwhat-is-kustomize","en\u002F3.blog\u002F59.what-is-kustomize",{"title":221,"path":222,"stem":223},"What Is Kubernetes? A Practical Guide to Container Orchestration","\u002Fen\u002Fblog\u002Fwhat-is-kubernetes","en\u002F3.blog\u002F6.what-is-kubernetes",{"title":225,"path":226,"stem":227},"The Best Heroku Alternatives in 2026","\u002Fen\u002Fblog\u002Fheroku-alternatives","en\u002F3.blog\u002F60.heroku-alternatives",{"title":229,"path":230,"stem":231},"Build and Deploy a Website Using Claude Code (From Zero to Live)","\u002Fen\u002Fblog\u002Fbuild-and-deploy-website-claude-code","en\u002F3.blog\u002F61.build-and-deploy-website-claude-code",{"title":233,"path":234,"stem":235},"lowcloud vs. Coolify: Self-hosted PaaS or managed?","\u002Fen\u002Fblog\u002Flowcloud-vs-coolify","en\u002F3.blog\u002F62.lowcloud-vs-coolify",{"title":237,"path":238,"stem":239},"lowcloud vs. Dokploy: Multi-node self-host or managed?","\u002Fen\u002Fblog\u002Flowcloud-vs-dokploy","en\u002F3.blog\u002F63.lowcloud-vs-dokploy",{"title":241,"path":242,"stem":243},"Your First Website with Claude: A Beginner Guide with Prompts","\u002Fen\u002Fblog\u002Ffirst-website-with-claude","en\u002F3.blog\u002F64.first-website-with-claude",{"title":245,"path":246,"stem":247},"Setting Up Claude Code: A Beginner's Configuration Guide","\u002Fen\u002Fblog\u002Fclaude-code-setup-beginners","en\u002F3.blog\u002F65.claude-code-setup-beginners",{"title":249,"path":250,"stem":251},"Vibe Coding: The Typical Deployment Problems","\u002Fen\u002Fblog\u002Fvibe-coding-deployment-problems","en\u002F3.blog\u002F66.vibe-coding-deployment-problems",{"title":253,"path":254,"stem":255},"Dokploy vs Coolify: Which Tool Fits When?","\u002Fen\u002Fblog\u002Fdokploy-vs-coolify","en\u002F3.blog\u002F67.dokploy-vs-coolify",{"title":257,"path":258,"stem":259},"Vercel vs Netlify: The Difference – and When lowcloud Fits","\u002Fen\u002Fblog\u002Fvercel-vs-netlify","en\u002F3.blog\u002F68.vercel-vs-netlify",{"title":261,"path":262,"stem":263},"Why Use Containers and Deploy With Them","\u002Fen\u002Fblog\u002Fwhy-deploy-with-containers","en\u002F3.blog\u002F69.why-deploy-with-containers",{"title":265,"path":266,"stem":267},"The Cloud Illusion: Why a Server Location in Germany Doesn’t Guarantee Digital Sovereignty","\u002Fen\u002Fblog\u002Fcloud-illusion-digital-sovereignty","en\u002F3.blog\u002F7.cloud-illusion-digital-sovereignty",{"title":269,"path":270,"stem":271},"Best S3-Compatible Object Storage Providers (2026 Comparison)","\u002Fen\u002Fblog\u002Fs3-compatible-object-storage","en\u002F3.blog\u002F8.s3-compatible-object-storage",{"title":273,"path":274,"stem":275},"Deployment as a Bottleneck: When AI Codes Faster Than You Can Deploy","\u002Fen\u002Fblog\u002Fdeployment-bottleneck","en\u002F3.blog\u002F9.deployment-bottleneck",{"title":277,"path":278,"stem":279,"children":280,"icon":294},"Getting Started","\u002Fen\u002Fdocs\u002Fgetting-started","en\u002F1.docs\u002F1.getting-started\u002F1.index",[281,284,289],{"title":282,"path":278,"stem":279,"icon":283},"Introduction","i-lucide-house",{"title":285,"path":286,"stem":287,"icon":288},"Get Started","\u002Fen\u002Fdocs\u002Fgetting-started\u002Fget-started","en\u002F1.docs\u002F1.getting-started\u002F2.get-started","i-lucide-rocket",{"title":290,"path":291,"stem":292,"icon":293},"How It Works","\u002Fen\u002Fdocs\u002Fgetting-started\u002Fhow-it-works","en\u002F1.docs\u002F1.getting-started\u002F3.how-it-works","i-lucide-lightbulb",false,{"title":296,"path":297,"stem":298,"children":299,"icon":294},"Guides","\u002Fen\u002Fdocs\u002Fguides","en\u002F1.docs\u002F2.guides\u002F1.index",[300,302],{"title":296,"path":297,"stem":298,"icon":301},"i-lucide-book-open",{"title":303,"path":304,"stem":305,"icon":306},"Connect a Container Registry","\u002Fen\u002Fdocs\u002Fguides\u002Fcontainer-registries","en\u002F1.docs\u002F2.guides\u002F2.container-registries","i-lucide-container",{"title":308,"icon":294,"path":309,"stem":310,"children":311,"page":294},"Platform","\u002Fen\u002Fdocs\u002Fplatform","en\u002F1.docs\u002F2.platform",[312,332,384],{"title":282,"path":313,"stem":314,"children":315,"icon":294},"\u002Fen\u002Fdocs\u002Fplatform\u002Fintroduction","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F1.index",[316,319,324,329],{"title":317,"path":313,"stem":314,"icon":318},"Overview","i-lucide-cloud",{"title":320,"path":321,"stem":322,"icon":323},"Use Cases","\u002Fen\u002Fdocs\u002Fplatform\u002Fintroduction\u002Fwhen-to-use","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F2.when-to-use","i-lucide-compass",{"title":325,"path":326,"stem":327,"icon":328},"Features","\u002Fen\u002Fdocs\u002Fplatform\u002Fintroduction\u002Fwhat-you-get","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F3.what-you-get","i-lucide-package-check",{"title":285,"path":330,"stem":331,"icon":288},"\u002Fen\u002Fdocs\u002Fplatform\u002Fintroduction\u002Fget-started","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F4.get-started",{"title":333,"path":334,"stem":335,"children":336,"icon":294},"Web Services","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F01.index",[337,340,345,350,354,359,364,369,374,379],{"title":338,"path":334,"stem":335,"icon":339},"Source Options","i-lucide-app-window",{"title":341,"path":342,"stem":343,"icon":344},"Build Strategies","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fbuild-strategies","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F02.build-strategies","i-lucide-hammer",{"title":346,"path":347,"stem":348,"icon":349},"Configuration","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fconfiguration","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F03.configuration","i-lucide-settings",{"title":351,"path":352,"stem":353,"icon":288},"Deploying","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fdeploying","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F04.deploying",{"title":355,"path":356,"stem":357,"icon":358},"Domains","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fdomains","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F05.domains","i-lucide-globe",{"title":360,"path":361,"stem":362,"icon":363},"Service Networking","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fconnecting-services","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F06.connecting-services","i-lucide-network",{"title":365,"path":366,"stem":367,"icon":368},"Env Variables","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fenvironment-variables","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F07.environment-variables","i-lucide-key-round",{"title":370,"path":371,"stem":372,"icon":373},"Storage","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fpersistent-storage","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F08.persistent-storage","i-lucide-hard-drive",{"title":375,"path":376,"stem":377,"icon":378},"Defaults","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Flimits","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F09.limits","i-lucide-gauge",{"title":380,"path":381,"stem":382,"icon":383},"Billing","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fbilling","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F10.billing","i-lucide-credit-card",{"title":385,"path":386,"stem":387,"children":388,"icon":294},"Databases","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F1.index",[389,392,397,402,407,410,415,420],{"title":390,"path":386,"stem":387,"icon":391},"Templates","i-lucide-database",{"title":393,"path":394,"stem":395,"icon":396},"Create","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fcreate","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F2.create","i-lucide-plus",{"title":398,"path":399,"stem":400,"icon":401},"Connect","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fconnect","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F3.connect","i-lucide-plug",{"title":403,"path":404,"stem":405,"icon":406},"Public Access","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fpublic-access","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F4.public-access","i-lucide-radio-tower",{"title":370,"path":408,"stem":409,"icon":373},"\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fstorage","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F5.storage",{"title":411,"path":412,"stem":413,"icon":414},"Management","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fmanagement","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F6.management","i-lucide-sliders-horizontal",{"title":416,"path":417,"stem":418,"icon":419},"Operations","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Foperational-notes","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F7.operational-notes","i-lucide-clipboard-list",{"title":380,"path":421,"stem":422,"icon":383},"\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fbilling","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F8.billing",{"title":424,"path":425,"stem":426,"children":427,"icon":294},"App Services","\u002Fen\u002Fdocs\u002Fapp-services","en\u002F1.docs\u002F3.app-services\u002F1.index",[428,429,433,437,441,446],{"title":424,"path":425,"stem":426,"icon":288},{"title":430,"path":431,"stem":432,"icon":349},"Build Settings","\u002Fen\u002Fdocs\u002Fapp-services\u002Fbuild-settings","en\u002F1.docs\u002F3.app-services\u002F2.build-settings",{"title":365,"path":434,"stem":435,"icon":436},"\u002Fen\u002Fdocs\u002Fapp-services\u002Fenvironment-variables","en\u002F1.docs\u002F3.app-services\u002F3.environment-variables","i-lucide-key",{"title":438,"path":439,"stem":440,"icon":358},"Custom Domains","\u002Fen\u002Fdocs\u002Fapp-services\u002Fcustom-domains","en\u002F1.docs\u002F3.app-services\u002F4.custom-domains",{"title":442,"path":443,"stem":444,"icon":445},"Health Checks","\u002Fen\u002Fdocs\u002Fapp-services\u002Fhealth-checks","en\u002F1.docs\u002F3.app-services\u002F5.health-checks","i-lucide-heart-pulse",{"title":447,"path":448,"stem":449,"icon":450},"Autoscaling","\u002Fen\u002Fdocs\u002Fapp-services\u002Fautoscaling","en\u002F1.docs\u002F3.app-services\u002F6.autoscaling","i-lucide-scaling",{"title":452,"path":453,"stem":454,"children":455,"icon":294},"Helm Releases","\u002Fen\u002Fdocs\u002Fhelm-releases","en\u002F1.docs\u002F4.helm-releases\u002F1.index",[456,458,462,467,471,476,480,485],{"title":452,"path":453,"stem":454,"icon":457},"i-lucide-package",{"title":459,"path":460,"stem":461,"icon":391},"Deploy PostgreSQL","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-postgresql","en\u002F1.docs\u002F4.helm-releases\u002F2.deploy-postgresql",{"title":463,"path":464,"stem":465,"icon":466},"Deploy Redis","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-redis","en\u002F1.docs\u002F4.helm-releases\u002F3.deploy-redis","i-lucide-zap",{"title":468,"path":469,"stem":470,"icon":466},"Deploy Valkey","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-valkey","en\u002F1.docs\u002F4.helm-releases\u002F3.deploy-valkey",{"title":472,"path":473,"stem":474,"icon":475},"Deploy n8n","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-n8n","en\u002F1.docs\u002F4.helm-releases\u002F4.deploy-n8n","i-lucide-workflow",{"title":477,"path":478,"stem":479,"icon":373},"Deploy RustFS","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-rustfs","en\u002F1.docs\u002F4.helm-releases\u002F5.deploy-rustfs",{"title":481,"path":482,"stem":483,"icon":484},"Deploy OpenSearch","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-opensearch","en\u002F1.docs\u002F4.helm-releases\u002F6.deploy-opensearch","i-lucide-search",{"title":486,"path":487,"stem":488,"icon":489},"Deploy Keycloak","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-keycloak","en\u002F1.docs\u002F4.helm-releases\u002F7.deploy-keycloak","i-lucide-shield-check",{"title":491,"path":492,"stem":493,"children":494,"icon":294},"Glossary","\u002Fen\u002Fdocs\u002Fglossary","en\u002F1.docs\u002F5.glossary\u002F1.index",[495],{"title":491,"path":492,"stem":493,"icon":496},"i-lucide-book-a",{"id":498,"title":249,"authors":499,"badge":505,"body":506,"date":832,"description":833,"extension":834,"image":835,"lastUpdated":505,"meta":837,"navigation":838,"path":250,"published":838,"seo":839,"stem":251,"tags":505,"__hash__":840},"posts\u002Fen\u002F3.blog\u002F66.vibe-coding-deployment-problems.md",[500],{"name":501,"to":502,"avatar":503},"Thomas Ens","\u002Fabout\u002Fthomasens",{"src":504},"\u002Fimages\u002Fblog\u002Fauthors\u002Fthomas.jpeg",null,{"type":507,"value":508,"toc":816},"minimark",[509,513,516,560,565,573,576,583,587,590,704,707,711,714,721,724,728,738,755,758,762,767,774,778,784,788,794,798,801,805,808],[510,511,512],"p",{},"You built an app over a weekend with Cursor, Lovable, or Replit, and it runs cleanly on your machine. Then you push it to a server, and suddenly nothing starts. The database is empty, an environment variable is missing, or strangers are reading your customer data.",[510,514,515],{},"This is exactly where vibe coding falls apart. Getting to a prototype takes an hour, getting to a production-ready app takes a lot longer, because AI agents optimize for \"it works for me\" and not for \"it runs safely for a thousand users\". This post walks you through the typical problems when deploying vibe-coding projects and how to clear them out of the way.",[517,518,519,525],"blockquote",{},[510,520,521],{},[522,523,524],"strong",{},"The key points",[526,527,528,540,549,552],"ul",{},[529,530,531,532,539],"li",{},"45 percent of AI-generated code fails security benchmarks based on the OWASP Top 10, and AI code contains roughly 2.7 times more vulnerabilities than human-written code (",[533,534,538],"a",{"href":535,"rel":536},"https:\u002F\u002Fwww.softwareseni.com\u002Fai-generated-code-security-risks-why-vulnerabilities-increase-2-74x-and-how-to-prevent-them\u002F",[537],"nofollow","Veracode",", 2025).",[529,541,542,543,548],{},"A May 2026 security scan found that out of 380,000 AI-generated apps, around 5,000 were publicly reachable with no authentication at all, about 40 percent of those holding sensitive data (",[533,544,547],{"href":545,"rel":546},"https:\u002F\u002Fdigital-magazin.de\u002Fvibe-coding-leck-380-000-generierte-apps\u002F",[537],"RedAccess via digital-magazin.de",", 2026).",[529,550,551],{},"The most common deployment blockers are missing environment variables, mismatched runtime versions, and services that only exist locally.",[529,553,554,555,548],{},"96 percent of developers do not fully trust AI code, yet only 48 percent always review it before committing (",[533,556,559],{"href":557,"rel":558},"https:\u002F\u002Fwww.hostinger.com\u002Fblog\u002Fvibe-coding-statistics",[537],"Stack Overflow via Hostinger",[561,562,564],"h2",{"id":563},"why-do-vibe-coded-apps-run-locally-but-break-in-production","Why do vibe-coded apps run locally but break in production?",[510,566,567,568,572],{},"Vibe-coded apps break on deployment because the generated code makes assumptions that only hold on your machine. An existing ",[569,570,571],"code",{},".env"," file, a specific Node version, a database running in the background: locally it is all there. On a fresh server it is missing, and the app does not even start.",[510,574,575],{},"The real reason runs deeper. An AI agent generates code that solves the task, then stops. It does not ask where the secrets will come from later, who is allowed to call the endpoint, or what happens when ten people write at the same time. Experienced developers do exactly that automatically. Studies show that AI code is often functionally fine but skips the security fundamentals, database protection, and edge cases a human covers instinctively.",[510,577,578,579,582],{},"On top of that comes a trust problem. 96 percent of developers do not fully trust AI code, yet only 48 percent review it before every commit (",[533,580,559],{"href":557,"rel":581},[537],", 2026). Among vibe coders without a developer background, that review rate is even lower. The result: code that works locally moves into production unchecked, and the risk shifts to exactly where it is most expensive.",[561,584,586],{"id":585},"the-most-common-deployment-problems-with-vibe-code","The most common deployment problems with vibe code",[510,588,589],{},"Most failed deployments trace back to a handful of recurring patterns. They are less spectacular than a hacked system, but they hit everyone moving from \"runs locally\" to \"runs on the server\". The table below shows the five most common ones, why they stay invisible locally, and how to fix them.",[591,592,593,612],"table",{},[594,595,596],"thead",{},[597,598,599,603,606,609],"tr",{},[600,601,602],"th",{},"Problem",[600,604,605],{},"Why it works locally",[600,607,608],{},"Why it breaks in production",[600,610,611],{},"Fix",[613,614,615,638,652,673,690],"tbody",{},[597,616,617,621,626,631],{},[618,619,620],"td",{},"Missing environment variables",[618,622,623,625],{},[569,624,571],{}," sits in the project folder",[618,627,628,629],{},"The server does not know the ",[569,630,571],{},[618,632,633,634,637],{},"Maintain a ",[569,635,636],{},".env.example",", set variables on the platform",[597,639,640,643,646,649],{},[618,641,642],{},"Hardcoded secrets",[618,644,645],{},"The API key sits in the code and goes unnoticed",[618,647,648],{},"The key ends up in the Git repo and is publicly readable",[618,650,651],{},"Secrets manager, secret scanning before commit",[597,653,654,657,660,663],{},[618,655,656],{},"Mismatched runtime version",[618,658,659],{},"Node 20 installed locally",[618,661,662],{},"The server runs Node 18, the build fails",[618,664,665,666,669,670],{},"Pin the version in ",[569,667,668],{},".nvmrc"," or ",[569,671,672],{},"Dockerfile",[597,674,675,678,681,684],{},[618,676,677],{},"Missing services",[618,679,680],{},"Database and Redis run locally in Docker",[618,682,683],{},"No Redis exists on the server",[618,685,686,687],{},"Ship services via ",[569,688,689],{},"docker-compose.yml",[597,691,692,695,698,701],{},[618,693,694],{},"No authentication",[618,696,697],{},"You are alone locally, nobody accesses it",[618,699,700],{},"The endpoint is openly reachable on the internet",[618,702,703],{},"Add an auth layer and access control before go-live",[510,705,706],{},"Two of these are especially dangerous. Hardcoded secrets and missing authentication do not just produce a broken app, they expose data. An Escape.tech investigation from October 2025 found over 400 exposed API keys and 175 cases with personal data across 5,600 AI-generated apps. The other three mostly cost you time and nerves at launch.",[561,708,710],{"id":709},"what-we-see-with-vibe-coders-in-practice","What we see with vibe coders in practice",[510,712,713],{},"At lowcloud, projects regularly land on our desk that a founder or a small team built themselves, often without a classic DevOps background. The pattern repeats: the app came together impressively fast, works in the demo, and on the first real deployment half the operational layer is missing. No secrets management, no health check, no backup, no logging.",[510,715,716,717,720],{},"The most common things we see are hardcoded credentials and databases without access control. That matches the big scan from May 2026: out of 380,000 apps built with tools like Lovable, Replit, and Base44, around 5,000 were reachable with no authentication at all, about 40 percent of them holding sensitive data such as hospital staff schedules, chat logs, and financial transactions (",[533,718,547],{"href":545,"rel":719},[537],", 2026). These are not edge cases, this is the normal state of quickly deployed AI apps.",[510,722,723],{},"Our take after the last few months: vibe coding is great for validating an idea. The jump to production, though, is not another prompt, it is a discipline of its own. Anyone who underestimates this step builds themselves a leak they only notice when it is too late. This is exactly the transition we take off teams' hands, so the prototype becomes a service you can leave online with a clear conscience.",[561,725,727],{"id":726},"how-do-you-get-vibe-code-safely-into-production","How do you get vibe code safely into production?",[510,729,730,731,669,734,737],{},"The most important step is to treat deployment as its own phase, not as a final prompt. Vibe coding gets you to a working state, but operations, security, and reproducibility you have to add deliberately. Four measures cover the bulk of the problems above. If you want to see the full flow once, step by step, our guides walk through how to ",[533,732,733],{"href":230},"build and deploy a website with Claude Code",[533,735,736],{"href":6},"ship a site built with Lovable",".",[510,739,740,741,743,744,746,747,749,750,548],{},"First, secret scanning before every commit. A pre-commit hook with a scanner like TruffleHog catches hardcoded API keys before they reach the repo. Second, all configuration via environment variables, documented in a ",[569,742,636],{},". Anything that changes between local and production belongs in a variable. Third, make the environment reproducible. A ",[569,745,672],{}," or a ",[569,748,689],{}," pins the runtime version and services so local and server run identically. According to field reports, this eliminates around 80 percent of version and service mismatches (",[533,751,754],{"href":752,"rel":753},"https:\u002F\u002Fnevercodealone.de\u002Fde\u002Fvibe-coding\u002Fvibe-coding-best-practices\u002Fdeployment-probleme-lokal-vs-server-vibe-coding-2026",[537],"nevercodealone.de",[510,756,757],{},"Fourth, and this is the point AI almost always skips: a real code review with a security lens before go-live. Check authentication, authorization, and input validation deliberately, because AI fails especially reliably on XSS and injection. If you lack the time or know-how for that, this is exactly the moment to bring in a platform partner who takes over the operations and security part.",[561,759,761],{"id":760},"frequently-asked-questions","Frequently asked questions",[763,764,766],"h3",{"id":765},"is-vibe-coding-code-inherently-insecure","Is vibe-coding code inherently insecure?",[510,768,769,770,773],{},"Not inherently, but statistically risky. 45 percent of AI-generated code samples fail OWASP Top 10 benchmarks, and AI code contains roughly 2.7 times more vulnerabilities than human-written code (",[533,771,538],{"href":535,"rel":772},[537],", 2025). The code is often functionally correct, but the gaps sit in security and edge cases. With review and automated scans, you can lower the risk significantly.",[763,775,777],{"id":776},"why-does-my-app-run-locally-but-not-on-the-server","Why does my app run locally but not on the server?",[510,779,780,781,783],{},"Almost always, something is missing on the server that was a given locally: an environment variable, the right Node or Python version, or a service like a database. The AI code assumes your local environment. A reproducible environment via Docker and a maintained ",[569,782,636],{}," solve most of these startup problems.",[763,785,787],{"id":786},"which-deployment-mistake-is-the-most-dangerous","Which deployment mistake is the most dangerous?",[510,789,790,791,548],{},"Hardcoded secrets and missing authentication. Both lead not to a broken app but to exposed data. The May 2026 scan found around 5,000 publicly reachable AI apps with no login at all, many of them holding real personal data (",[533,792,547],{"href":545,"rel":793},[537],[763,795,797],{"id":796},"as-a-vibe-coder-do-i-need-a-devops-expert","As a vibe coder, do I need a DevOps expert?",[510,799,800],{},"Not necessarily your own, but someone who owns the operational part. Secrets management, backups, monitoring, and access control are a discipline of their own alongside coding. Many small teams bring in a platform partner for this instead of staffing a dedicated DevOps role.",[561,802,804],{"id":803},"conclusion","Conclusion",[510,806,807],{},"Vibe coding has radically shortened the path to a prototype, but not the path to a production-ready app. AI agents deliver code that runs and skip everything that makes up operations and security: secrets management, access control, reproducible environments, and an honest review. The most common deployment problems are rarely exotic, they are the same missing fundamentals every time. Anyone who knows them and treats deployment as its own phase turns a weekend prototype into a service they can leave online with a clear conscience.",[510,809,810,811,815],{},"Want to get your vibe-coding app safely into production without becoming a DevOps team yourself? ",[533,812,814],{"href":813},"\u002Fen\u002Fcontact","Talk to us about your project",", and we will take over the operations and security part.",{"title":817,"searchDepth":818,"depth":818,"links":819},"",2,[820,821,822,823,824,831],{"id":563,"depth":818,"text":564},{"id":585,"depth":818,"text":586},{"id":709,"depth":818,"text":710},{"id":726,"depth":818,"text":727},{"id":760,"depth":818,"text":761,"children":825},[826,828,829,830],{"id":765,"depth":827,"text":766},3,{"id":776,"depth":827,"text":777},{"id":786,"depth":827,"text":787},{"id":796,"depth":827,"text":797},{"id":803,"depth":818,"text":804},"2026-06-01","Vibe-coded apps run locally but break in production. The most common deployment problems, from missing secrets to an exposed database, and how to fix them.","md",{"src":836},"\u002Fimages\u002Fblog\u002Fvibe-coding-deployment-problems.jpg",{},true,{"title":249,"description":833},"hktINvcyTZo4Fqh9qgDjsMpGV2CWdINWcfarS-tKWjw",[842,844],{"title":245,"path":246,"stem":247,"description":843,"children":-1},"Get Claude Code running in 15 minutes: install, login, CLAUDE.md, and the settings that actually matter for your first real coding session.",{"title":253,"path":254,"stem":255,"description":845,"children":-1},"Coolify vs Dokploy compared: architecture, deployments, databases, security and operations. A pragmatic guide to choosing the right self-hosting tool.",1780334513558]