[{"data":1,"prerenderedAt":404},["ShallowReactive",2],{"navigation_docs":3,"section-navigation-docs":130,"-comparisons-vs-coolify":164,"-comparisons-vs-coolify-siblings":382},[4,8,50,54,58,62,66,70,74,78,82,86,90,94,98,102,106,110,114,118,122,126],{"title":5,"path":6,"stem":7},"Quickstart","\u002Fdocs\u002Fquickstart","docs\u002F01.quickstart",{"title":9,"path":10,"stem":11,"children":12},"Guides","\u002Fdocs\u002Fguides","docs\u002F02.guides\u002Findex",[13,14,18,22,26,30,34,38,42,46],{"title":9,"path":10,"stem":11},{"title":15,"path":16,"stem":17},"Next.js","\u002Fdocs\u002Fguides\u002Fnextjs","docs\u002F02.guides\u002F1.nextjs",{"title":19,"path":20,"stem":21},"Nuxt","\u002Fdocs\u002Fguides\u002Fnuxt","docs\u002F02.guides\u002F2.nuxt",{"title":23,"path":24,"stem":25},"SvelteKit","\u002Fdocs\u002Fguides\u002Fsveltekit","docs\u002F02.guides\u002F3.sveltekit",{"title":27,"path":28,"stem":29},"Astro","\u002Fdocs\u002Fguides\u002Fastro","docs\u002F02.guides\u002F4.astro",{"title":31,"path":32,"stem":33},"Express","\u002Fdocs\u002Fguides\u002Fexpress","docs\u002F02.guides\u002F5.express",{"title":35,"path":36,"stem":37},"FastAPI","\u002Fdocs\u002Fguides\u002Ffastapi","docs\u002F02.guides\u002F6.fastapi",{"title":39,"path":40,"stem":41},"Django","\u002Fdocs\u002Fguides\u002Fdjango","docs\u002F02.guides\u002F7.django",{"title":43,"path":44,"stem":45},"Laravel","\u002Fdocs\u002Fguides\u002Flaravel","docs\u002F02.guides\u002F8.laravel",{"title":47,"path":48,"stem":49},"Go","\u002Fdocs\u002Fguides\u002Fgo","docs\u002F02.guides\u002F9.go",{"title":51,"path":52,"stem":53},"Services","\u002Fdocs\u002Fservices","docs\u002F03.services",{"title":55,"path":56,"stem":57},"Deployments","\u002Fdocs\u002Fdeployments","docs\u002F04.deployments",{"title":59,"path":60,"stem":61},"Builds","\u002Fdocs\u002Fbuilds","docs\u002F05.builds",{"title":63,"path":64,"stem":65},"Variables","\u002Fdocs\u002Fvariables","docs\u002F06.variables",{"title":67,"path":68,"stem":69},"Domains","\u002Fdocs\u002Fdomains","docs\u002F07.domains",{"title":71,"path":72,"stem":73},"PostgreSQL","\u002Fdocs\u002Fpostgres","docs\u002F08.postgres",{"title":75,"path":76,"stem":77},"Object storage","\u002Fdocs\u002Fobject-storage","docs\u002F09.object-storage",{"title":79,"path":80,"stem":81},"Volumes","\u002Fdocs\u002Fvolumes","docs\u002F10.volumes",{"title":83,"path":84,"stem":85},"Key-value store","\u002Fdocs\u002Fredis","docs\u002F11.redis",{"title":87,"path":88,"stem":89},"Workspaces","\u002Fdocs\u002Fworkspaces","docs\u002F12.workspaces",{"title":91,"path":92,"stem":93},"Projects","\u002Fdocs\u002Fprojects","docs\u002F13.projects",{"title":95,"path":96,"stem":97},"Environments","\u002Fdocs\u002Fenvironments","docs\u002F14.environments",{"title":99,"path":100,"stem":101},"Eject","\u002Fdocs\u002Feject","docs\u002F15.eject",{"title":103,"path":104,"stem":105},"API","\u002Fdocs\u002Fapi","docs\u002F16.api",{"title":107,"path":108,"stem":109},"CLI","\u002Fdocs\u002Fcli","docs\u002F17.cli",{"title":111,"path":112,"stem":113},"Claude Plugin & MCP","\u002Fdocs\u002Fclaude-plugin","docs\u002F18.claude-plugin",{"title":115,"path":116,"stem":117},"Metrics","\u002Fdocs\u002Fmetrics","docs\u002F19.metrics",{"title":119,"path":120,"stem":121},"Logs","\u002Fdocs\u002Flogs","docs\u002F20.logs",{"title":123,"path":124,"stem":125},"Billing","\u002Fdocs\u002Fbilling","docs\u002F21.billing",{"title":127,"path":128,"stem":129},"Self-hosting","\u002Fdocs\u002Fself-hosting","docs\u002F22.self-hosting",[131,132,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],{"title":5,"path":6,"stem":7},{"title":9,"path":10,"stem":11,"children":133,"page":-1},[134,135,136,137,138,139,140,141,142,143],{"title":9,"path":10,"stem":11},{"title":15,"path":16,"stem":17},{"title":19,"path":20,"stem":21},{"title":23,"path":24,"stem":25},{"title":27,"path":28,"stem":29},{"title":31,"path":32,"stem":33},{"title":35,"path":36,"stem":37},{"title":39,"path":40,"stem":41},{"title":43,"path":44,"stem":45},{"title":47,"path":48,"stem":49},{"title":51,"path":52,"stem":53},{"title":55,"path":56,"stem":57},{"title":59,"path":60,"stem":61},{"title":63,"path":64,"stem":65},{"title":67,"path":68,"stem":69},{"title":71,"path":72,"stem":73},{"title":75,"path":76,"stem":77},{"title":79,"path":80,"stem":81},{"title":83,"path":84,"stem":85},{"title":87,"path":88,"stem":89},{"title":91,"path":92,"stem":93},{"title":95,"path":96,"stem":97},{"title":99,"path":100,"stem":101},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"path":116,"stem":117},{"title":119,"path":120,"stem":121},{"title":123,"path":124,"stem":125},{"title":127,"path":128,"stem":129},{"id":165,"title":166,"actions":167,"body":168,"description":373,"extension":374,"meta":375,"navigation":376,"path":378,"seo":379,"stem":380,"__hash__":381},"solutions\u002F2.comparisons\u002F7.vs-coolify.md","Lucity vs Coolify: Open-Source PaaS Comparison",null,{"type":169,"value":170,"toc":357},"minimark",[171,175,178,181,186,189,224,228,233,236,239,242,245,248,252,255,263,267,270,273,276,280,283,286,290,293,296,299,303,306,309,312,316,333,337],[172,173,174],"p",{},"This is the comparison we get asked about most. Both Lucity and Coolify are open-source. Both let you self-host. Both aim to replace Heroku, Railway, and Render with something you own. So what's the difference?",[172,176,177],{},"Architecture. Everything else follows from that.",[172,179,180],{},"Coolify runs Docker Compose on servers you connect via SSH. Lucity runs Kubernetes with standard Helm releases. Same goal, fundamentally different paths to get there. Neither is universally better. They're designed for different scales and different philosophies.",[182,183,185],"h2",{"id":184},"where-coolify-excels","Where Coolify Excels",[172,187,188],{},"Coolify has earned its 38,000+ GitHub stars. Here's why:",[190,191,192,200,206,212,218],"ul",{},[193,194,195,199],"li",{},[196,197,198],"strong",{},"Dramatically simpler setup",": One curl command installs Coolify on any server. No Kubernetes cluster, no Helm, no operators. SSH access and Docker are all you need. The time from \"I have a server\" to \"my app is running\" is measured in minutes.",[193,201,202,205],{},[196,203,204],{},"Lower barrier to entry",": If you know Docker, you know enough to use Coolify. No Kubernetes knowledge required. The web UI is clean and approachable.",[193,207,208,211],{},[196,209,210],{},"280+ one-click services",": Pre-configured templates for PostgreSQL, Redis, WordPress, Plausible, n8n, Gitea, and hundreds more. Click, configure, deploy.",[193,213,214,217],{},[196,215,216],{},"Incredibly affordable",": Self-hosted is free, forever. All features included. The cloud plan is $5\u002Fmonth. Your real cost is just the server; a $5\u002Fmonth VPS can run Coolify plus a few small apps.",[193,219,220,223],{},[196,221,222],{},"Active community",": Frequent releases, responsive maintainer, growing ecosystem. Coolify has momentum and a community that cares.",[182,225,227],{"id":226},"where-lucity-differs","Where Lucity Differs",[229,230,232],"h3",{"id":231},"the-ceiling-problem","The Ceiling Problem",[172,234,235],{},"Coolify's simplicity comes from Docker Compose. And Docker Compose is great, until it isn't.",[172,237,238],{},"Need horizontal scaling? Docker Compose doesn't do that. Need rolling deployments with zero-downtime guarantees? Docker Compose does stop-old-start-new. Need to schedule workloads across multiple nodes based on resource availability? Docker Compose doesn't have a scheduler. Docker Swarm support is experimental.",[172,240,241],{},"This isn't a criticism of Coolify. It's a fundamental constraint of the architecture. Coolify is optimized for simplicity at small scale, and it delivers exactly that.",[172,243,244],{},"Lucity uses Kubernetes. Horizontal auto-scaling, rolling deployments, health-check-based routing, resource scheduling across nodes. These are built-in primitives, not wishlist features. The tradeoff is complexity: you need a Kubernetes cluster, and Kubernetes has a learning curve.",[172,246,247],{},"But here's the thing: Lucity's dashboard abstracts Kubernetes the same way Coolify abstracts Docker. You interact with projects, services, and environments, not pods, deployments, and ingresses. The Kubernetes power is there when you need it, hidden when you don't.",[229,249,251],{"id":250},"ejectability","Ejectability",[172,253,254],{},"Coolify deploys your apps as Docker containers, which are portable. But Coolify itself has no eject command. If you outgrow Coolify or decide to leave, you're taking your Dockerfiles and rebuilding your deployment setup: reverse proxy config, environment variables, database connections, SSL, the works.",[172,256,257,258,262],{},"Lucity ejects to standard Kubernetes. Run ",[259,260,261],"code",{},"lucity eject"," and you get a complete infrastructure-as-code setup: the Helm chart, the computed values for each environment, PostgreSQL clusters and buckets as standard operator resources, and a setup guide explaining how to run it all without Lucity. The platform is designed to be left.",[229,264,266],{"id":265},"release-history-and-environment-promotion","Release History and Environment Promotion",[172,268,269],{},"Coolify deploys on push. Each environment builds independently from source. There's no concept of promoting a tested image from staging to production; each environment runs its own build.",[172,271,272],{},"Lucity deploys every change as a new revision of a standard Helm release, one release per project per environment, stored in your cluster. Promotion copies an image digest from one environment to another and re-applies. The exact image that passed staging tests runs in production. No rebuild, no \"it works on my machine,\" no drift between environments.",[172,274,275],{},"For a solo developer deploying a side project, this distinction doesn't matter. For a team shipping a SaaS product with paying customers, it matters a lot.",[229,277,279],{"id":278},"stateless-architecture","Stateless Architecture",[172,281,282],{},"Coolify stores its state in a database (SQLite or PostgreSQL). If that database is lost and you don't have a backup, you're reconfiguring everything from scratch. The Coolify instance is a single point of failure for deployments. If it goes down, you can't deploy (though running apps continue working).",[172,284,285],{},"Lucity has no central database. All state is derived from Kubernetes, the OCI registry, and the identity provider. If the Lucity platform goes down entirely, your applications keep running, the Helm release revisions in your cluster still hold your full deployment history, and you can recover or eject at any time. There's nothing to back up because there's no state that isn't already in a system designed for durability.",[229,287,289],{"id":288},"security-posture","Security Posture",[172,291,292],{},"In January 2026, Coolify disclosed 11 critical CVEs, including command injection, authentication bypass, and root-level code execution vulnerabilities. 52,000+ exposed instances were at risk. Seven of the CVEs were found by an AI pentesting tool.",[172,294,295],{},"For a platform that manages servers via SSH with root access, this is worth serious consideration. The Coolify team patched the issues, but the attack surface of a system that SSHs into servers and executes Docker commands is inherently large.",[172,297,298],{},"Lucity interacts with Kubernetes via the API server, uses OIDC for authentication, and stores secrets in Kubernetes Secrets (or external secret managers). The attack surface is Kubernetes-standard, which benefits from the security scrutiny of the entire CNCF ecosystem.",[182,300,302],{"id":301},"the-honest-tradeoff","The Honest Tradeoff",[172,304,305],{},"Coolify is simpler to set up and operate at small scale. That's not a minor advantage; it's the whole point. If you're running 1-5 services on 1-3 servers, Coolify gets you there faster with less infrastructure knowledge.",[172,307,308],{},"Lucity is more capable at larger scale and gives you a clean exit. If you're running a production SaaS with multiple environments, need release history and environment promotion, or anticipate growing beyond what Docker Compose can handle, Lucity is built for that trajectory.",[172,310,311],{},"The question isn't \"which is better.\" It's \"where are you going?\"",[182,313,315],{"id":314},"who-should-choose-coolify","Who Should Choose Coolify",[190,317,318,321,324,327,330],{},[193,319,320],{},"Solo developers and small teams self-hosting side projects or internal tools",[193,322,323],{},"Teams deploying 1-10 services on a few servers who don't need Kubernetes",[193,325,326],{},"Developers who want a Heroku-like experience on their own hardware, today",[193,328,329],{},"Teams where simplicity and low cost matter more than scalability and portability",[193,331,332],{},"Anyone who finds Kubernetes overkill for their current needs (and they might be right)",[182,334,336],{"id":335},"who-should-choose-lucity","Who Should Choose Lucity",[190,338,339,342,345,348,351,354],{},[193,340,341],{},"Teams building a SaaS product that will need to scale horizontally",[193,343,344],{},"Teams that need release history, environment promotion, and rollback",[193,346,347],{},"Teams that want to own their infrastructure config and have a clean eject path",[193,349,350],{},"Teams that need EU data residency for compliance (Swiss coming soon)",[193,352,353],{},"Teams that anticipate outgrowing Docker Compose and want to avoid a painful migration later",[193,355,356],{},"Teams that want open-source PaaS with production-grade Kubernetes under the hood",{"title":358,"searchDepth":359,"depth":359,"links":360},"",2,[361,362,370,371,372],{"id":184,"depth":359,"text":185},{"id":226,"depth":359,"text":227,"children":363},[364,366,367,368,369],{"id":231,"depth":365,"text":232},3,{"id":250,"depth":365,"text":251},{"id":265,"depth":365,"text":266},{"id":278,"depth":365,"text":279},{"id":288,"depth":365,"text":289},{"id":301,"depth":359,"text":302},{"id":314,"depth":359,"text":315},{"id":335,"depth":359,"text":336},"Compare Lucity and Coolify, two open-source PaaS platforms with fundamentally different architectures. Docker Compose simplicity vs Kubernetes ejectability.","md",{},{"title":377},"vs Coolify","\u002Fcomparisons\u002Fvs-coolify",{"title":166,"description":373},"2.comparisons\u002F7.vs-coolify","PCcV_tYjb-f2CdGADymhG516x0RmaQUSvh-e_HfY5bU",[383,387,391,395,399,403],{"path":384,"title":385,"description":386},"\u002Fcomparisons\u002Fvs-railway","Lucity vs Railway: Open-Source Railway Alternative","Compare Lucity and Railway. Same deploy experience, but open-source, self-hostable, and ejectable to standard Kubernetes.",{"path":388,"title":389,"description":390},"\u002Fcomparisons\u002Fvs-render","Lucity vs Render: Open-Source Render Alternative","Compare Lucity and Render. Both simple to use, but Lucity is open-source, self-hostable, and ejectable to standard Kubernetes.",{"path":392,"title":393,"description":394},"\u002Fcomparisons\u002Fvs-heroku","Lucity vs Heroku: Open-Source Heroku Alternative","Compare Lucity and Heroku. Modern Kubernetes-native PaaS with ejectability, open-source, and no Salesforce tax.",{"path":396,"title":397,"description":398},"\u002Fcomparisons\u002Fvs-vercel","Lucity vs Vercel: Full-Stack Vercel Alternative","Compare Lucity and Vercel. Vercel excels at frontend, Lucity handles the full stack with databases, workers, and ejectability.",{"path":400,"title":401,"description":402},"\u002Fcomparisons\u002Fvs-fly-io","Lucity vs Fly.io: Open-Source Fly.io Alternative","Compare Lucity and Fly.io. Fly.io runs apps at the edge on custom hardware. Lucity is open-source, self-hostable, and ejectable to standard Kubernetes.",{"path":378,"title":166,"description":373},1793355964534]