Nos tempos atuais, o protocolo HTTPS é indispensável para qualquer site. Sem essa camada de segurança, os dados confidenciais dos seus usuários podem ficar expostos na internet. Para mitigar esse problema, muitos administradores de servidores Linux passaram a utilizar ferramentas como o LetsEncrypt, que simplificam a emissão de certificados. No entanto, apesar da facilidade proporcionada pelo LetsEncrypt, a configuração em servidores como Nginx ou Apache pode ser um processo complexo. Felizmente, existe uma solução mais eficaz: o servidor web Caddy. Ele se destaca por ter o HTTPS habilitado por padrão. Se você está cansado das complexidades dos certificados SSL, o Caddy pode ser a resposta que procura.
Instalação do Caddy
O processo de instalação do servidor web Caddy é semelhante em diversos sistemas operacionais. A simplicidade na instalação se deve à escolha do desenvolvedor de utilizar um script Bash para download e instalação do software, eliminando a necessidade de adicionar repositórios de terceiros ou instalar através de binários.
Neste guia, utilizaremos o Ubuntu Server como referência, embora o Caddy funcione perfeitamente na maioria dos sistemas Linux, inclusive em desktops. Antes de iniciar, certifique-se de que o aplicativo Curl está presente no seu sistema. Caso contrário, abra um terminal, localize o pacote “curl” no seu gerenciador de pacotes e instale-o.
Observação: Para verificar se o Curl já está instalado, execute o comando `curl` no terminal. Se a tela de ajuda do programa aparecer, o Curl já está disponível em sua máquina.
curl https://getcaddy.com | bash -s personal
O servidor web Caddy é gratuito para uso pessoal, mas é necessário especificar essa condição durante a instalação. Para ambientes empresariais, utilize o seguinte comando:
curl https://getcaddy.com | bash -s commercial
A execução do comando Curl, através do Bash, iniciará automaticamente o processo de instalação. O instalador do Caddy irá baixar o binário do servidor web e o colocará no diretório /usr/local/bin/. Se a instalação for bem-sucedida, você verá uma mensagem confirmando a instalação.
Neste ponto, será necessário modificar o binário do Caddy. Execute o seguinte comando no terminal, com privilégios sudo:
sudo setcap cap_net_bind_service=+ep /usr/local/bin/caddy
Configurando o Caddy
Com o Caddy instalado no servidor, o próximo passo é configurar a estrutura de diretórios. Para agilizar o processo, acesse um terminal com privilégios de root. Isso evita a necessidade de usar `sudo` para cada comando e digitar a senha repetidamente.
Em muitos sistemas, o acesso direto à conta root é feito com o comando:
su
No Ubuntu Server, a conta root é bloqueada por questões de segurança. Para contornar isso, obtenha um shell root utilizando `sudo`:
sudo -s
Com acesso root, crie os diretórios necessários para o correto funcionamento do servidor Caddy:
mkdir /etc/caddy mkdir /etc/ssl/caddy
Observação: Se o seu servidor já tiver um diretório `/var/www/`, ignore o último comando `mkdir`.
mkdir /var/www
Em seguida, crie um novo arquivo “Caddyfile” dentro de `/etc/caddy/`:
touch /etc/caddy/Caddyfile
Utilizando o comando `chmod`, atualize as permissões da subpasta `caddy` em `/etc/ssl/`:
chmod 0770 /etc/ssl/caddy
Por fim, altere o proprietário do diretório `/var/www/`:
chown www-data: /var/www
Arquivo Caddy Systemd
A maioria dos servidores, especialmente o Ubuntu Server, utiliza o sistema `systemd init`. No entanto, como o servidor web é instalado via script Bash, um arquivo systemd não é criado automaticamente. Portanto, precisamos criar o nosso próprio. Utilize o comando `touch` para criar um novo arquivo de serviço vazio:
touch /lib/systemd/system/caddy.service
Abra o novo arquivo `caddy.service` e copie o seguinte código:
[Unit]
Description=Servidor web Caddy HTTP/2
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target
[Service]
Restart=on-failure
StartLimitInterval=86400
StartLimitBurst=5
User=www-data
Group=www-data
; Os certificados emitidos pelo Letsencrypt serão armazenados neste diretório.
Environment=CADDYPATH=/etc/ssl/caddy
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID
LimitNOFILE=1048576
LimitNPROC=64
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=full
ReadWriteDirectories=/etc/ssl/caddy
; As seguintes diretivas de segurança adicionais funcionam apenas com o systemd v229 ou posterior.
; Elas restringem ainda mais os privilégios que o Caddy pode obter. Remova o comentário se desejar.
; Observe que pode ser necessário adicionar recursos exigidos por qualquer plug-in em uso.
;CapabilityBoundingSet=CAP_NET_BIND_SERVICE
;AmbientCapabilities=CAP_NET_BIND_SERVICE
;NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
Este arquivo `caddy.service` contém bastante código. Certifique-se de que tudo esteja copiado corretamente. Ao finalizar, salve as alterações pressionando Ctrl + X e saia do editor.
systemctl enable caddy.service systemctl start caddy.service
Após a configuração do systemd, o servidor deve estar pronto para uso.
Configurando Domínios
Assim como qualquer servidor web, o Caddy necessita de algumas configurações adicionais antes de ser utilizado. Inicie criando uma pasta para o domínio:
Observação: Certifique-se de substituir “test-domain.org” pelo seu domínio real.
mkdir -p /var/www/test-domain.org/
Em seguida, edite o arquivo `Caddyfile` que criamos anteriormente:
nano /etc/caddy/Caddyfile
Cole o seguinte código para ativar seu domínio:
meu-dominio.com {
root /var/www/test-domain.org
}
Reinicie o serviço Caddy systemd para salvar as alterações. Após a reinicialização do serviço, o Caddy estará pronto para ser utilizado em seu servidor.
systemctl restart caddy.service