Base de Conhecimento

Caddy na VPS: servidor web com HTTPS automático

  • caddy, https automático, proxy reverso, caddyfile, vps, servidor web
  • Usuários acharam útil: 0

Aprenda a instalar o Caddy na VPS, escrever o Caddyfile para site estático e proxy reverso, entender o HTTPS automático e recarregar sem derrubar o site.

Por Redação Eleven Host · @robson.direitodigital · 31 de outubro de 2026 · 9 min de leitura

Arte da Eleven Host: janela de terminal com o título: Caddy na VPS: servidor web com HTTPS automático

Capa da Redação Eleven Host para o guia: Caddy na VPS: servidor web com HTTPS automático Arte: Eleven Host

O Caddy é um servidor web que obtém e renova sozinho o certificado HTTPS do seu domínio. Na VPS, ele serve o seu site direto ou fica na frente de um app como proxy reverso, e a documentação diz que, por padrão, ele serve todos os sites por HTTPS.

Este guia mostra o que preparar antes (veja também o guia de servidor VPS para iniciantes), como instalar no Ubuntu ou no Debian, escrever o Caddyfile, usar o HTTPS automático, validar e recarregar sem derrubar o site e resolver conflito de porta. Os domínios dos exemplos são fictícios.

O que é o Caddy e quando vale a pena

Servir um site por HTTPS exige um certificado, e certificado vence. Em uma configuração manual, você pede o certificado a uma autoridade, copia os arquivos para o lugar certo, aponta a configuração para eles e cria uma rotina para renovar. O Caddy reúne esses passos: segundo a documentação do HTTPS automático, ele obtém e renova os certificados e redireciona o HTTP para HTTPS sem precisar de ferramenta extra.

Ele vale a pena quando você quer um site ou um app no ar com HTTPS e prefere uma configuração curta. Um Caddyfile para um domínio cabe em poucas linhas, como você vai ver mais abaixo. Nginx e Apache seguem como opções de servidor web; este guia trata só do Caddy.

O Caddy aparece em dois papéis na VPS:

  • Servidor de arquivos: entrega páginas HTML, imagens e outros arquivos de uma pasta.
  • Proxy reverso: recebe as visitas no domínio e repassa para um app que roda em outra porta da própria máquina, como um app em Node ou em Python.

Segundo a página de lançamentos do projeto, a versão marcada como mais recente é a v2.11.7, de 3 de outubro de 2026. Tudo o que está aqui vale para o Caddy 2.

Antes de começar

A documentação do HTTPS automático lista o que precisa estar certo para um domínio público:

  • Os registros A e AAAA do domínio apontam para o endereço público do servidor.
  • As portas 80 e 443 estão abertas externamente e o Caddy consegue abri-las (ou elas são encaminhadas a ele).
  • O diretório de dados do Caddy é gravável e persistente.
  • O domínio está na configuração.

Confira o primeiro item antes de instalar. O guia dig e nslookup: como consultar o DNS de um domínio mostra como ver para onde o domínio aponta. Se você ainda não tem domínio, a Eleven Host oferece o registro de domínio, e o DNS gerenciado na rede da Cloudflare é grátis para domínios registrados conosco (painel na área do cliente).

A página de solução de problemas do Caddy também pede que nenhum outro programa, como Apache, nginx ou outro servidor de aplicação, esteja ouvindo nas portas de que o Caddy precisa. Voltamos a isso na última seção.

Instalar o Caddy no Ubuntu ou no Debian

A página de instalação traz o repositório oficial para Debian, Ubuntu e Raspbian. Os comandos, na ordem da documentação, são estes. O primeiro instala os pacotes de apoio:

sudo apt install --yes debian-keyring debian-archive-keyring apt-transport-https curl

Os dois seguintes baixam a chave do repositório e a lista de pacotes:

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

Depois, ajuste as permissões de leitura, atualize a lista de pacotes e instale:

sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg

sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list

sudo apt update

sudo apt install caddy

Segundo a documentação, instalar esse pacote inicia o Caddy automaticamente como um serviço do systemd chamado caddy. Para ver o estado do serviço e a versão instalada:

systemctl status caddy

caddy version

A instalação cria também um serviço caddy-api, desligado por padrão, para quem configura o Caddy só pela API.

O Caddyfile

O arquivo de configuração fica em /etc/caddy/Caddyfile. Para editar e aplicar, a página do serviço usa estes comandos:

sudo nano /etc/caddy/Caddyfile

sudo systemctl reload caddy

O Caddyfile que vem no pacote, publicado no repositório oficial de empacotamento do Caddy, começa com :80 {, define root * /usr/share/caddy e file_server. Assim, o site padrão responde em HTTP na porta 80 e mostra o conteúdo de /usr/share/caddy. Um comentário no próprio arquivo orienta: primeiro confirme que os registros A e AAAA do domínio apontam para o IP público da máquina e depois troque o :80 pelo nome do seu domínio.

Site estático

Para servir uma pasta de arquivos com o seu domínio, o bloco fica assim. Cada linha abaixo vai dentro do arquivo, na ordem:

example.com {

root * /var/www/example.com

file_server

}

A documentação sugere guardar os arquivos do site em /var/www/html ou em /srv, e o usuário caddy precisa conseguir ler esses arquivos. Se a pasta não tiver um arquivo de índice, a opção file_server browse mostra a listagem dos arquivos.

Proxy reverso para um app

Quando o seu app já roda numa porta local, o Caddy faz a ponte entre o domínio e ele. O exemplo da documentação da diretiva reverse_proxy repassa todas as requisições para um servidor local:

example.com {

reverse_proxy localhost:9005

}

Para um app que escuta na porta 3000, a mesma ideia fica com reverse_proxy localhost:3000 dentro do bloco do domínio. O app pode ser um servidor em Node ou um script em Python; o guia Python na VPS: como rodar seu script com venv e systemd mostra como manter um app assim rodando como serviço.

Sobre os cabeçalhos, o Caddy repassa os que recebeu e define X-Forwarded-For, X-Forwarded-Proto e X-Forwarded-Host. Valores X-Forwarded-* que chegam de fora são ignorados por padrão, contra falsificação.

VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Quer conhecer a VPS da Eleven Host? Conhecer a VPS

HTTPS automático: como funciona

Ao ler o seu Caddyfile, o Caddy vê o nome do domínio e pede o certificado. As autoridades certificadoras Let's Encrypt e ZeroSSL vêm ligadas por padrão. A documentação explica que, se o Caddy não conseguir o certificado na Let's Encrypt, ele tenta com a ZeroSSL; se as duas falharem, ele espera e tenta de novo.

O Caddy redireciona o HTTP (porta 80) para o HTTPS (porta 443) automaticamente. As portas 80 e 443 precisam estar acessíveis de fora.

Os certificados são renovados em segundo plano. Quando a renovação falha, o Caddy espera cada vez mais entre as tentativas, com intervalo máximo de 1 dia, por até 30 dias, segundo a documentação.

Dois avisos ajudam em testes:

  • Limites de emissão: sem o ambiente de testes (staging) das autoridades, a documentação avisa que você provavelmente vai esbarrar em limites que podem bloquear o seu acesso ao HTTPS por até uma semana. Por isso, evite repetir tentativas com um domínio que ainda não aponta para a VPS.
  • Endereço localhost: o localhost recebe um certificado autoassinado, também renovado sozinho.

Validar e recarregar sem derrubar o site

A documentação é direta: não pare o serviço para mudar a configuração, porque parar causa tempo fora do ar. Use reload. Antes dele, vale checar o arquivo. Estes são os comandos que ajudam:

  • caddy fmt: reformata o Caddyfile. Com --overwrite, o resultado é gravado no próprio arquivo, em vez de só aparecer no terminal.
  • caddy validate: carrega e prepara a configuração sem rodá-la, e acusa mais erros do que a simples conversão.
  • sudo systemctl reload caddy: aplica a configuração nova no serviço.

Uma rotina possível, montada com as opções que a documentação descreve:

sudo caddy fmt --overwrite /etc/caddy/Caddyfile

caddy validate --config /etc/caddy/Caddyfile

sudo systemctl reload caddy

Se o validate acusar erro, corrija o arquivo antes de recarregar. A documentação descreve o caddy reload e o systemctl reload caddy cada um por si, então use o do serviço, como neste guia.

Ver os logs do Caddy

Quando o certificado não sai ou o site não abre, o log mostra o que o Caddy tentou. A página do serviço usa este comando, que mostra o log sem paginação e abre no fim do texto:

journalctl -u caddy --no-pager | less +G

O guia journalctl: como ver os logs do sistema na VPS explica as opções do comando para filtrar por serviço e por período.

Conflito com Nginx ou Apache na mesma porta

Duas aplicações não conseguem ouvir a mesma porta ao mesmo tempo. Se a VPS já tem Nginx ou Apache em funcionamento nas portas 80 e 443, o Caddy não consegue usá-las. A documentação de solução de problemas manda conferir que nenhum outro programa, como Apache, nginx ou outro servidor de aplicação, esteja ouvindo nas portas de que o Caddy precisa, e que o usuário do Caddy tenha permissão para abri-las.

Na prática, escolha um só servidor web para as portas 80 e 443. Se o Nginx ou o Apache for o escolhido, deixe o Caddy de fora, ou pare e desative o serviço que não vai usar antes de subir o outro.

Checklist do Caddy

  • Registros A e AAAA do domínio apontando para o IP público da VPS.
  • Portas 80 e 443 abertas e livres, sem outro programa ouvindo nelas.
  • Caddy instalado pelo repositório oficial e serviço caddy ativo (systemctl status caddy).
  • Caddyfile em /etc/caddy/Caddyfile com o nome do domínio no lugar do :80.
  • Arquivos do site legíveis pelo usuário caddy.
  • Proxy reverso com reverse_proxy localhost:porta, se o seu app roda em outra porta.
  • Antes de recarregar: caddy fmt e caddy validate.
  • Para aplicar: sudo systemctl reload caddy, sem parar o serviço.
  • Em caso de erro, leia o log com journalctl -u caddy.

Quer conhecer os planos de VPS da Eleven Host? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Ver a VPS

Perguntas frequentes

O que é o Caddy?

É um servidor web que serve sites e apps por HTTPS e cuida do certificado: obtém, renova e redireciona o HTTP para HTTPS automaticamente.

O Caddy usa só a Let's Encrypt?

Não. A Let's Encrypt e a ZeroSSL vêm ligadas por padrão, e o Caddy tenta a ZeroSSL se não conseguir o certificado na Let's Encrypt.

Preciso parar o Caddy para mudar a configuração?

Não. A documentação diz para não parar o serviço, porque isso deixa o site fora do ar. Edite o Caddyfile, valide e use sudo systemctl reload caddy.

Onde fica o arquivo de configuração do Caddy?

Em /etc/caddy/Caddyfile, quando o Caddy foi instalado pelo pacote do repositório oficial.

O Caddy funciona junto com o Nginx na mesma porta?

Dois programas não podem ouvir a mesma porta ao mesmo tempo. Escolha um para as portas 80 e 443, e deixe o outro desligado.

Esta resposta lhe foi útil?

Artigos Relacionados