8 days ago
Title: Custom domain never provisions — edge returns "Application not found", cert stuck in VALIDATING_OWNERSHIP for 3.5h
A custom domain on my project never finishes provisioning. The API reports the DNS record as propagated and matching exactly, but the edge doesn't serve the domain at all — requests return 404 "Application not found" with the default *.up.railway.app certificate. The cert has sat in VALIDATING_OWNERSHIP the whole time, which I think is a symptom rather than the cause.
Details
-
Project:
kind-heart—45de0d7b-37df-46df-97a9-e36fa7b7b50b -
Environment:
production—00fba88f-8bb9-4b38-ac75-e641df336e0a -
Service:
overskud—8a7aa7b4-cee2-474d-b263-583e66561c16 -
Custom domain:
overskud.seanbaldwin.com—006a9247-e432-435a-860b-b7a8c2163714(created 2026-08-13T06:36:51Z; an earlier record
ae340dd3-3c66-4cf1-babb-9826a37dc86bstalled identically and was deleted) -
The service works fine on its generated domain
overskud-production.up.railway.app
What the API reports
{
"certificateStatus": "CERTIFICATE_STATUS_TYPE_VALIDATING_OWNERSHIP",
"dnsRecords": [{
"status": "DNS_RECORD_STATUS_PROPAGATED",
"currentValue": "dxxej2qk.up.railway.app",
"requiredValue": "dxxej2qk.up.railway.app"
}]
}What actually happens on the wire
Custom domain, TLS validation ignored so the request completes:
GET https://overskud.seanbaldwin.com/
-> 404
{"status":"error","code":404,"message":"Application not found","request_id":"ryOrg9tNRmCx-ln7Y53eZw"}Certificate presented on that connection:
subject=CN=*.up.railway.app
X509v3 Subject Alternative Name: DNS:*.up.railway.app, DNS:up.railway.appGenerated domain at the same moment, as a control:
GET https://overskud-production.up.railway.app/
-> 307, Location: /sign-in?next=%2F (the app, working normally)In a browser the custom domain gives SSL_ERROR_BAD_CERT_DOMAIN, and past the warning, the "The train has not arrived at the station — please check your network settings to confirm that your domain has provisioned" page. Request ID from that page: nR75QUQ0RP29BG6B0_TJvA.
Timeline (CEST, 2026-08-13)
- ~06:52 — domain added, CNAME created at the registrar
- ~07:10 — Railway reports DNS
PROPAGATED, certVALIDATING_OWNERSHIP - ~08:36 — after 95 min stuck, deleted and recreated the domain. A new CNAME target was issued (
8wczaonx→dxxej2qk) and I updated the registrar record - ~08:55 — public DNS serving the new target; API shows
currentValue == requiredValue,PROPAGATED - 10:35 — still
VALIDATING_OWNERSHIP, edge still returns "Application not found"
Already ruled out
- No CAA records on the apex domain (checked via DNS-over-HTTPS), so Let's Encrypt isn't blocked at the registrar
- Exactly one record for the hostname, a CNAME to the required target, no conflicting A/AAAA
- Public resolvers return the correct target
- The service itself is healthy on its generated domain
Since the edge says "Application not found" for a domain the API reports as attached and propagated, it looks like the domain never bound to the service. Could someone check the binding for 006a9247-e432-435a-860b-b7a8c2163714 and reprovision it?
3 Replies
8 days ago
The domain is missing its TXT ownership-verification record, which is why the certificate is stuck in VALIDATING_OWNERSHIP. Custom domains require both a CNAME (yours is correctly propagated) and a TXT record at _railway-verify.overskud.seanbaldwin.com with the verification value shown on the domain's settings page in the dashboard. Once that TXT record propagates, the certificate will advance and the edge will begin routing traffic to your service.
Status changed to Awaiting User Response Railway • 8 days ago
Railway
The domain is missing its TXT ownership-verification record, which is why the certificate is stuck in VALIDATING_OWNERSHIP. Custom domains require both a CNAME (yours is correctly propagated) and a TXT record at `_railway-verify.overskud.seanbaldwin.com` with the verification value shown on the domain's settings page in the dashboard. Once that TXT record propagates, the certificate will advance and the edge will begin routing traffic to your service.
8 days ago
Thanks, but I don't think the TXT record is right — and I have something more specific.
On the TXT record: your own API doesn't ask for one. Querying the custom domain returns exactly one required record, a CNAME for traffic routing, with no ownership/verification record of any kind:
{
"domain": "overskud.seanbaldwin.com",
"status": {
"certificateStatus": "CERTIFICATE_STATUS_TYPE_VALIDATING_OWNERSHIP",
"dnsRecords": [{
"hostlabel": "overskud",
"recordType": "DNS_RECORD_TYPE_CNAME",
"requiredValue": "dxxej2qk.up.railway.app",
"currentValue": "8wczaonx.up.railway.app",
"status": "DNS_RECORD_STATUS_PROPAGATED",
"zone": "seanbaldwin.com",
"purpose": "DNS_RECORD_PURPOSE_TRAFFIC_ROUTE"
}]
}
}There's no _railway-verify record in the dashboard or in the API response, so I've not added one.
What I think is actually wrong: look at currentValue above. It reads 8wczaonx.up.railway.app — that was the target of the previous custom domain record (ae340dd3-3c66-4cf1-babb-9826a37dc86b), which I deleted at ~08:36 CEST. It has not been in my zone since.
My DNS only ever contains one record, and every resolver agrees:
- Authoritative zone (HostGator, read via cPanel API): a single CNAME,
overskud→dxxej2qk.up.railway.app., TTL 14400. No other record for that hostname, no A/AAAA, no TXT. - Google DNS (
dns.google):dxxej2qk.up.railway.app. - Cloudflare DNS (
cloudflare-dns.com):dxxej2qk.up.railway.app.
And your API's own reading of it is flapping:
- 10:04 CEST —
currentValue: "dxxej2qk.up.railway.app"(matchingrequiredValue) - 11:05 CEST —
currentValue: "8wczaonx.up.railway.app"(the deleted domain's target)
Nothing changed in my zone between those two readings.
So it looks like the DNS check is holding stale state from the deleted domain record, which would explain why ownership validation never completes even though status says PROPAGATED. Meanwhile the edge returns 404 {"message":"Application not found"} for the hostname and serves the default *.up.railway.app cert.
Domain id: 006a9247-e432-435a-860b-b7a8c2163714
Project: 45de0d7b-37df-46df-97a9-e36fa7b7b50b / service 8a7aa7b4-cee2-474d-b263-583e66561c16
Could a human take a look and clear the cached DNS state for this domain? Happy to run any check you want from my side.
Status changed to Awaiting Railway Response Railway • 8 days ago
8 days ago
The verification TXT record is the blocker. Custom domains require both a CNAME and a TXT record. Your CNAME is correct and propagated, but without the TXT the domain stays unverified and the edge returns "Application not found" with the wildcard cert.
The TXT value isn't inside status.dnsRecords. It's returned separately in status.verificationToken (docs). You can also find it on the domain's settings page in the dashboard. The record goes at _railway-verify.overskud.seanbaldwin.com.
On the flapping currentValue: we see the same stale value on our side from the deleted domain record. The CNAME status reads PROPAGATED regardless, so adding the TXT record is the step that unblocks verification. Once the TXT propagates and the domain verifies, the certificate and routing follow automatically. If issuance doesn't advance after that, railway domain certificate retry overskud.seanbaldwin.com via the CLI retriggers it.
Status changed to Awaiting User Response Railway • 8 days ago
a day ago
This thread has been marked as solved automatically due to a lack of recent activity. Please re-open this thread or create a new one if you require further assistance. Thank you!
Status changed to Solved Railway • 1 day ago