Status pages
Custom domain for a status page
Publish a site or app status page on a hostname you control, such as status.client.com. The existing /status/<token> URL on RetainerProof keeps working.
DNS
- In the app, turn the public status page on, then add the hostname.
- Create a CNAME from that hostname to
custom.retainerproof.com. Override the target withSTATUS_CNAME_TARGETif this deploy uses a different name. The target must be a name that already points at the Coolify proxy (an A/AAAA record, or a name Coolify already routes). Do not CNAME to the apexretainerproof.com. - Create a TXT record at
_retainerproof-challenge.<hostname>. The value is the token shown next to the domain. Click Verify. An unverified hostname is reserved for 72 hours, then another account can claim it. A verified hostname stays with the account that verified it.
Verification is a DNS TXT lookup from the app. It does not require a certificate yet.
What still has to happen in Coolify
The Node app routes a request when the Host header matches a verified hostname. It does not issue TLS certificates. Coolify's Traefik only obtains a Let's Encrypt certificate for hostnames attached to the service.
- Make sure
custom.retainerproof.comis a domain on the RetainerProof service (or a DNS record that lands on the same proxy). - After the customer CNAME exists, add their hostname as another domain on that same service so Traefik can complete HTTP-01. Until you do,
https://status.client.comwill fail TLS even though the app would serve the page. - Leave the container on port 80 behind the proxy. Do not put customer certificates in the image.
There is no Cloudflare for SaaS setup in this deploy, and Traefik is not configured for on-demand certificates for arbitrary names. Adding the hostname in Coolify is the remaining step for each verified domain.
Local check
On a non-production server, a hostname that ends in .test or .localhost verifies without DNS. Point it at 127.0.0.1 in /etc/hosts, then open http://status.client.test:3000/ (use the port in APP_URL). The same host on https://retainerproof.com/status/<token> still loads.
Apps
An app groups up to three services on one status page. Studio includes one app pack. Agency includes three. An extra pack is $5/month once STRIPE_PRICE_ID_APP_PACK is set to a real Stripe price. The app does not run a care digest, and it does not consume a site slot.