Documentação

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íniosregra

api.exemplo.com funciona; o domínio raiz exemplo.com não, porque a raiz não aceita CNAME.

um por projetoregra

Um projeto serve um único domínio personalizado, e um domínio pertence a um único projeto.

produçãoregra

O 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  desligado

Aguarde 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/callback

O 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.com

Status

pendingstatus

Aguardando o CNAME ou o certificado. Ainda não serve.

activestatus

Servindo no domínio personalizado.

failedstatus

A 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.

suspendedstatus

O 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_plan403

O plano da organização não inclui domínios personalizados.

domain_invalid400

Não é um subdomínio: domínio raiz, wildcard ou nome inválido.

domain_reserved400

Um nome em nulvless.co ou nulvless.com.

domain_limit_reached409

O projeto já tem um domínio personalizado.

domain_taken409

O hostname já está em uso.

domain_unavailable503

Domínios personalizados estão indisponíveis no momento. Tente de novo em instantes.

Nesta página