[{"data":1,"prerenderedAt":404},["ShallowReactive",2],{"navigation":3,"page-\u002Ftroubleshooting\u002Fdomain-issues":213,"surround-\u002Ftroubleshooting\u002Fdomain-issues":399},[4,17,48,79,95,118,133,144,155,167,186],{"title":5,"path":6,"stem":7,"children":8,"icon":16,"exact":11},"Getting started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12],{"title":10,"path":6,"stem":7,"exact":11,"children":-1},"Introduction",true,{"title":13,"path":14,"stem":15,"exact":11,"children":-1},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":18,"path":19,"stem":20,"children":21,"icon":47,"exact":11},"Reference","\u002Freference","10.reference\u002F1.index",[22,23,27,31,35,39,43],{"title":18,"path":19,"stem":20,"exact":11,"children":-1},{"title":24,"path":25,"stem":26,"exact":11,"children":-1},"Variables","\u002Freference\u002Fvariables","10.reference\u002F2.variables",{"title":28,"path":29,"stem":30,"exact":11,"children":-1},"Hostnames and DNS","\u002Freference\u002Fhostnames-and-dns","10.reference\u002F3.hostnames-and-dns",{"title":32,"path":33,"stem":34,"exact":11,"children":-1},"Statuses","\u002Freference\u002Fstatuses","10.reference\u002F4.statuses",{"title":36,"path":37,"stem":38,"exact":11,"children":-1},"Limits","\u002Freference\u002Flimits","10.reference\u002F5.limits",{"title":40,"path":41,"stem":42,"exact":11,"children":-1},"Sizes","\u002Freference\u002Fsizes","10.reference\u002F6.sizes",{"title":44,"path":45,"stem":46,"exact":11,"children":-1},"The GitHub App","\u002Freference\u002Fgithub-app","10.reference\u002F7.github-app","i-lucide-book-open",{"title":49,"path":50,"stem":51,"children":52,"icon":78,"exact":11},"Troubleshooting","\u002Ftroubleshooting","11.troubleshooting\u002F1.index",[53,54,58,62,66,70,74],{"title":49,"path":50,"stem":51,"exact":11,"children":-1},{"title":55,"path":56,"stem":57,"exact":11,"children":-1},"Build failures","\u002Ftroubleshooting\u002Fbuild-failures","11.troubleshooting\u002F2.build-failures",{"title":59,"path":60,"stem":61,"exact":11,"children":-1},"Start and health failures","\u002Ftroubleshooting\u002Fstart-and-health-failures","11.troubleshooting\u002F3.start-and-health-failures",{"title":63,"path":64,"stem":65,"exact":11,"children":-1},"Reference failures","\u002Ftroubleshooting\u002Freference-failures","11.troubleshooting\u002F4.reference-failures",{"title":67,"path":68,"stem":69,"exact":11,"children":-1},"Failures that are Kuppit's","\u002Ftroubleshooting\u002Ffailures-that-are-kuppits","11.troubleshooting\u002F5.failures-that-are-kuppits",{"title":71,"path":72,"stem":73,"exact":11,"children":-1},"Domain issues","\u002Ftroubleshooting\u002Fdomain-issues","11.troubleshooting\u002F6.domain-issues",{"title":75,"path":76,"stem":77,"exact":11,"children":-1},"No preview for a pull request","\u002Ftroubleshooting\u002Fno-preview-for-a-pull-request","11.troubleshooting\u002F7.no-preview-for-a-pull-request","i-lucide-life-buoy",{"title":80,"path":81,"stem":82,"children":83,"icon":94,"exact":11},"Concepts","\u002Fconcepts","2.concepts\u002F1.index",[84,86,90],{"title":85,"path":81,"stem":82,"exact":11,"children":-1},"The Kuppit model",{"title":87,"path":88,"stem":89,"exact":11,"children":-1},"The application graph","\u002Fconcepts\u002Fthe-application-graph","2.concepts\u002F2.the-application-graph",{"title":91,"path":92,"stem":93,"exact":11,"children":-1},"How a service runs","\u002Fconcepts\u002Fhow-a-service-runs","2.concepts\u002F3.how-a-service-runs","i-lucide-shapes",{"title":96,"path":97,"stem":98,"children":99,"icon":117,"exact":11},"Deployments","\u002Fdeployments","3.deployments\u002F1.index",[100,101,105,109,113],{"title":96,"path":97,"stem":98,"exact":11,"children":-1},{"title":102,"path":103,"stem":104,"exact":11,"children":-1},"Builds","\u002Fdeployments\u002Fbuilds","3.deployments\u002F2.builds",{"title":106,"path":107,"stem":108,"exact":11,"children":-1},"Redeploy and roll back","\u002Fdeployments\u002Fredeploy-and-rollback","3.deployments\u002F3.redeploy-and-rollback",{"title":110,"path":111,"stem":112,"exact":11,"children":-1},"Logs","\u002Fdeployments\u002Flogs","3.deployments\u002F4.logs",{"title":114,"path":115,"stem":116,"exact":11,"children":-1},"When a deployment fails","\u002Fdeployments\u002Fwhen-a-deployment-fails","3.deployments\u002F5.when-a-deployment-fails","i-lucide-cloud-upload",{"title":119,"path":120,"stem":121,"children":122,"icon":132,"exact":11},"Resources","\u002Fresources","4.resources\u002F1.index",[123,124,128],{"title":119,"path":120,"stem":121,"exact":11,"children":-1},{"title":125,"path":126,"stem":127,"exact":11,"children":-1},"Web services","\u002Fresources\u002Fweb-services","4.resources\u002F2.web-services",{"title":129,"path":130,"stem":131,"exact":11,"children":-1},"PostgreSQL","\u002Fresources\u002Fpostgresql","4.resources\u002F3.postgresql","i-lucide-boxes",{"title":134,"icon":135,"path":136,"stem":137,"children":138,"page":143,"exact":11},"Configuration","i-lucide-sliders-horizontal","\u002Fconfiguration","5.configuration",[139],{"title":140,"path":141,"stem":142,"exact":11,"children":-1},"Environment variables","\u002Fconfiguration\u002Fvariables","5.configuration\u002F1.variables",false,{"title":145,"path":146,"stem":147,"children":148,"icon":154,"exact":11},"Networking","\u002Fnetworking","6.networking\u002F1.index",[149,150],{"title":145,"path":146,"stem":147,"exact":11,"children":-1},{"title":151,"path":152,"stem":153,"exact":11,"children":-1},"Reaching a database","\u002Fnetworking\u002Freaching-a-database","6.networking\u002F2.reaching-a-database","i-lucide-network",{"title":156,"path":157,"stem":158,"children":159,"icon":166,"exact":11},"Domains","\u002Fdomains","7.domains\u002F1.index",[160,162],{"title":161,"path":157,"stem":158,"exact":11,"children":-1},"Hostnames",{"title":163,"path":164,"stem":165,"exact":11,"children":-1},"Custom domains","\u002Fdomains\u002Fcustom-domains","7.domains\u002F2.custom-domains","i-lucide-globe",{"title":168,"path":169,"stem":170,"children":171,"icon":185,"exact":11},"Environments","\u002Fenvironments","8.environments\u002F1.index",[172,173,177,181],{"title":168,"path":169,"stem":170,"exact":11,"children":-1},{"title":174,"path":175,"stem":176,"exact":11,"children":-1},"Preview environments","\u002Fenvironments\u002Fpreview-environments","8.environments\u002F2.preview-environments",{"title":178,"path":179,"stem":180,"exact":11,"children":-1},"Named environments","\u002Fenvironments\u002Fnamed-environments","8.environments\u002F3.named-environments",{"title":182,"path":183,"stem":184,"exact":11,"children":-1},"Deleting an environment","\u002Fenvironments\u002Fdeleting-an-environment","8.environments\u002F4.deleting-an-environment","i-lucide-git-branch",{"title":187,"path":188,"stem":189,"children":190,"icon":212,"exact":11},"Guides","\u002Fguides","9.guides\u002F1.index",[191,192,196,200,204,208],{"title":187,"path":188,"stem":189,"exact":11,"children":-1},{"title":193,"path":194,"stem":195,"exact":11,"children":-1},"Deploy a Nuxt application","\u002Fguides\u002Fdeploy-a-nuxt-application","9.guides\u002F2.deploy-a-nuxt-application",{"title":197,"path":198,"stem":199,"exact":11,"children":-1},"Deploy a Next.js application","\u002Fguides\u002Fdeploy-a-nextjs-application","9.guides\u002F3.deploy-a-nextjs-application",{"title":201,"path":202,"stem":203,"exact":11,"children":-1},"Deploy an Express application","\u002Fguides\u002Fdeploy-an-express-application","9.guides\u002F4.deploy-an-express-application",{"title":205,"path":206,"stem":207,"exact":11,"children":-1},"Deploy with a Dockerfile","\u002Fguides\u002Fdeploy-with-a-dockerfile","9.guides\u002F5.deploy-with-a-dockerfile",{"title":209,"path":210,"stem":211,"exact":11,"children":-1},"Create a staging environment","\u002Fguides\u002Fcreate-a-staging-environment","9.guides\u002F6.create-a-staging-environment","i-lucide-map",{"id":214,"title":71,"badge":215,"body":216,"category":215,"description":393,"draft":143,"extension":394,"links":215,"meta":395,"navigation":11,"path":72,"seo":396,"sitemap":397,"stem":73,"__hash__":398},"docs\u002F11.troubleshooting\u002F6.domain-issues.md",null,{"type":217,"value":218,"toc":381},"minimark",[219,251,256,259,292,296,299,317,321,327,331,340,344,351,355,358,362],[220,221,222,223,227,228,227,231,234,235,238,239,242,243,246,247,250],"p",{},"A custom domain moves through ",[224,225,226],"strong",{},"Needs ownership",", ",[224,229,230],{},"Verifying",[224,232,233],{},"Needs routing"," and ",[224,236,237],{},"Securing"," to ",[224,240,241],{},"Active",", checked automatically while anything is pending. ",[244,245,163],"a",{"href":164}," describes the happy path; this page is for a status that stays where it is, or goes backwards. ",[224,248,249],{},"Check DNS"," on the domain's row asks for a check now rather than at the next interval.",[252,253,255],"h2",{"id":254},"stuck-at-needs-ownership","Stuck at Needs ownership",[220,257,258],{},"Kuppit cannot see the ownership TXT record.",[260,261,262,283,286,289],"ul",{},[263,264,265,266,270,271,274,275,278,279,282],"li",{},"The record's name is ",[267,268,269],"code",{},"_kuppit-verification.\u003Chostname>",", the full hostname included. At most DNS providers you enter only the part before your zone, so for ",[267,272,273],{},"app.example.com"," the name you type is ",[267,276,277],{},"_kuppit-verification.app",", not ",[267,280,281],{},"_kuppit-verification.app.example.com",".",[263,284,285],{},"The value is the token shown on the row, exactly, with no quotes added by hand.",[263,287,288],{},"DNS takes time to propagate. Kuppit rechecks every minute; give a new record a few minutes.",[263,290,291],{},"A CNAME already pointing at Kuppit does not count. Ownership is proved by the TXT record only, on purpose.",[252,293,295],{"id":294},"stuck-at-needs-routing","Stuck at Needs routing",[220,297,298],{},"Ownership is verified but the hostname does not reach Kuppit.",[260,300,301,308,314],{},[263,302,303,304,307],{},"A subdomain needs a CNAME to ",[267,305,306],{},"domains.kuppit.app",". A CNAME to anything else is an explicit conflict and Kuppit says so.",[263,309,310,311,282],{},"A root domain needs your provider's CNAME flattening, ALIAS or ANAME feature pointing at the same target. A plain A record cannot work: Kuppit has no fixed address. If your provider has no such feature, use a subdomain such as ",[267,312,313],{},"www.example.com",[263,315,316],{},"Some providers proxy or flatten records in ways Kuppit cannot see directly. Kuppit accepts the certificate authority's own view of routing when the record itself is hidden, so a correctly configured domain does move on; it may take a check or two.",[252,318,320],{"id":319},"stuck-at-securing","Stuck at Securing",[220,322,323,324,326],{},"Ownership and routing hold; the certificate is being issued. This normally takes minutes. It waits on the same DNS the routing check used, so a record that only just propagated can hold it up briefly. If it stays for more than an hour, choose ",[224,325,249],{},", and check that no CAA record on the domain forbids the certificate authority.",[252,328,330],{"id":329},"dns-issue","DNS issue",[220,332,333,334,336,337,339],{},"The domain was ",[224,335,241],{}," and its DNS no longer points at Kuppit. Traffic to it is failing or going elsewhere. Restore the routing record described above; Kuppit rechecks and returns the domain to ",[224,338,241],{}," on its own. Nothing is removed while a domain is in this state.",[252,341,343],{"id":342},"failed","Failed",[220,345,346,347,282],{},"Certificate issuance failed. Kuppit keeps retrying every ten minutes, and the authority retries on its own schedule too, so this is rarely permanent. If it persists, the usual cause is a CAA record on the domain that does not allow the authority; otherwise, remove and re-add the domain after the ",[244,348,350],{"href":349},"#this-hostname-is-unavailable","24-hour hold",[252,352,354],{"id":353},"this-hostname-is-unavailable","This hostname is unavailable",[220,356,357],{},"Kuppit refused to add the hostname. Either it is attached to another service anywhere on Kuppit, or it was removed within the last 24 hours and is being held so that a hostname whose DNS still points at Kuppit cannot be claimed by someone else. In the second case, wait out the hold. In the first, remove it from the service it is on.",[252,359,361],{"id":360},"enter-a-registrable-domain-or-subdomain","Enter a registrable domain or subdomain",[220,363,364,365,227,368,227,370,373,374,377,378,282],{},"Kuppit accepts hostnames under a public suffix: ",[267,366,367],{},"example.com",[267,369,273],{},[267,371,372],{},"example.co.uk",". It refuses IP addresses, bare suffixes, wildcards (",[267,375,376],{},"*.example.com","), and anything under ",[267,379,380],{},"kuppit.app",{"title":382,"searchDepth":383,"depth":383,"links":384},"",3,[385,387,388,389,390,391,392],{"id":254,"depth":386,"text":255},2,{"id":294,"depth":386,"text":295},{"id":319,"depth":386,"text":320},{"id":329,"depth":386,"text":330},{"id":342,"depth":386,"text":343},{"id":353,"depth":386,"text":354},{"id":360,"depth":386,"text":361},"A custom domain that will not reach Active, a status that went backwards, or a hostname Kuppit refuses. What each means and how to move it on.","md",{},{"title":71,"description":393},{"loc":72},"hQQr3qG28LYwv5JhK_P8G8BmbO47hK8LwhHB1BDYpcQ",[400,402],{"title":67,"path":68,"stem":69,"description":401,"children":-1},"The messages that mean the problem is on Kuppit's side, what each one is, and what you can do while it is fixed.",{"title":75,"path":76,"stem":77,"description":403,"children":-1},"The Kuppit Preview check says No preview, or is not on the pull request at all. What each reason means.",1788549619521]