Domínios personalizados
Sirva seu projeto num subdomínio seu em vez da URL nulvless.co.
Todo projeto responde em <projeto>.nulvless.co. No plano Scale você também
pode servir o ambiente de produção num subdomínio seu, como api.exemplo.com.
Os caminhos não mudam — /auth, /comms, /billing e suas functions
respondem no domínio personalizado exatamente como na URL do projeto — e o
certificado é emitido e renovado para você.
api.exemplo.com ──CNAME──▶ acme.nulvless.co ──▶ seu projeto (main)Regras
só subdomíniosregraapi.exemplo.com funciona; o domínio raiz exemplo.com não, porque a raiz
não aceita CNAME.
um por projetoregraUm projeto serve um único domínio personalizado, e um domínio pertence a um único projeto.
produçãoregraO domínio aponta para o ambiente main. Os outros ambientes continuam na URL
<projeto>-<ambiente>.nulvless.co.
Adicionando um domínio
Adicione o hostname ao projeto, por exemplo api.exemplo.com. Ele começa como
pending.
No seu provedor de DNS, crie o registro indicado:
Tipo CNAME
Nome api
Valor acme.nulvless.co
Proxy desligadoAguarde a validação. Assim que o registro resolve, o hostname é validado e o certificado emitido — normalmente alguns minutos, mais se o seu DNS tiver TTL alto. O domínio fica active e passa a servir.
Aponte seus clients para ele. A URL do projeto é o primeiro argumento do
createClient, então trocar é só mudar a URL:
const nulvless = createClient('https://api.exemplo.com', 'pk-…')Deixe o registro somente DNS. Se o seu provedor de DNS também é proxy (por exemplo, a nuvem laranja do Cloudflare), o proxy responde na nossa frente e a validação não conclui.
Login social
Provedores como Google e GitHub devolvem o usuário para uma URL de callback do seu projeto. Enquanto o domínio está pendente, essa é a URL do projeto. Quando ele fica ativo, o login passa a voltar para o domínio personalizado:
antes https://acme.nulvless.co/auth/google/callback
depois https://api.exemplo.com/auth/google/callbackO provedor recusa um callback que não conhece, então cadastre a URL nova em cada provedor que você ativou antes de o domínio ficar ativo, junto da que já está lá. A página de cada provedor no Console mostra o callback em uso, e passa para o domínio personalizado quando ele fica ativo.
Mantenha também os callbacks da URL do projeto cadastrados. Se o domínio for removido, suspenso ou deixar de validar, o login volta sozinho para a URL do projeto.
Login com OpenID Connect
O domínio personalizado não muda o
emissor do seu projeto. Ele continua
https://<projeto>.nulvless.co/auth: é o iss de todo token e a base de todos os
endpoints do documento de descoberta, qualquer que seja o domínio que o serviu.
Ao cadastrar seu projeto como provedor OpenID Connect em outra aplicação, informe a
URL do projeto como emissor, não o domínio personalizado. A descoberta exige que o
issuer do documento seja igual à URL usada para buscá-lo, então um cliente
configurado com https://api.exemplo.com/auth o rejeita.
emissor https://acme.nulvless.co/auth
sua API https://api.exemplo.comStatus
pendingstatusAguardando o CNAME ou o certificado. Ainda não serve.
activestatusServindo no domínio personalizado.
failedstatusA validação não concluiu, ou o hostname está em uso em outro lugar. Confira o registro, remova o domínio e adicione de novo.
suspendedstatusO plano da organização não inclui mais domínios personalizados. O domínio para de servir, mas continua configurado.
Trocando de plano
Sair do Pro suspende o domínio: ele para de servir, e a URL do projeto continua funcionando. Nada é apagado. Voltar ao Pro registra o domínio de novo — ele volta para pending e fica active depois de validado, com o mesmo registro DNS.
Um domínio suspenso pode ser removido em qualquer plano.
Erros
insufficient_plan403O plano da organização não inclui domínios personalizados.
domain_invalid400Não é um subdomínio: domínio raiz, wildcard ou nome inválido.
domain_reserved400Um nome em nulvless.co ou nulvless.com.
domain_limit_reached409O projeto já tem um domínio personalizado.
domain_taken409O hostname já está em uso.
domain_unavailable503Domínios personalizados estão indisponíveis no momento. Tente de novo em instantes.