Caddy na VPS: servidor web com HTTPS automático
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

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
localhostrecebe 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
caddyativo (systemctl status caddy). - Caddyfile em
/etc/caddy/Caddyfilecom 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 fmtecaddy 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.