Como instalar o servidor Web Caddy no Linux

Atualmente, o HTTPS é fundamental ao hospedar um site. Sem ele, seus usuários podem estar vazando dados muito pessoais do seu site para o mundo. Para resolver isso, muitos webmasters do Linux passaram a usar as ferramentas LetsEncrypt, pois elas facilitam muito a geração de um certificado. Ainda assim, por mais fácil que o LetsEncrpyt seja, habilitá-lo no Nginx ou no Apache no Linux ainda pode ser um pouco trabalhoso. Felizmente, há uma maneira melhor. Apresentando o servidor web Caddy. É o servidor web que tem HTTPS habilitado por padrão. Se você está cansado de se preocupar com certificados SSL, o Caddy pode ser exatamente o que você precisa.

Instalando o Caddy

A instalação do servidor web Caddy funciona praticamente da mesma forma, independentemente do sistema operacional do servidor que você está usando. A razão pela qual o Caddy é tão fácil de instalar é a escolha do desenvolvedor de usar um script Bash para download para instalar o software, em vez de adicionar repositórios de software de terceiros ou instalar via binários.

Neste tutorial, usaremos o Ubuntu Server, embora a execução do Caddy web Server funcione bem na maioria dos outros sistemas operacionais Linux, mesmo nos desktops. Para começar, certifique-se de ter o aplicativo Curl no seu PC Linux. Se você não fizer isso, abra um terminal, procure no gerenciador de pacotes por “curl” e instale-o.

  Como instalar o aplicativo Trojita Mail no Linux

Nota: determine se você já tem curl executando curl no terminal. Se a caixa de diálogo “ajuda” aparecer para o programa, você tem o Curl em sua máquina Linux.

curl https://getcaddy.com | bash -s personal

O servidor web Caddy é gratuito para uso pessoal, mas você deve especificá-lo. Planejando usar o Caddy em um ambiente empresarial? Execute o comando de instalação com:

curl https://getcaddy.com | bash -s commercial

A execução do Curl o canalizará através do Bash e iniciará automaticamente o processo de instalação. O instalador do Caddy levará algum tempo para baixar o binário do servidor web e colocá-lo no diretório /usr/local/bin/. Se a instalação for bem-sucedida, você verá uma mensagem dizendo “Instalado com sucesso”.

Neste ponto, você precisará 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

Caddy está instalado no servidor. A próxima etapa do processo é configurar a estrutura de diretórios. Comece obtendo um terminal raiz. Fazer isso tornará a modificação de pastas no sistema de arquivos muito mais rápida, pois você não precisará digitar sudo para cada comando, seguido de uma senha.

  Como usar SUID, SGID e Sticky Bits no Linux

Na maioria dos sistemas, os usuários podem fazer login diretamente na conta root com:

su

No servidor Ubuntu, no entanto, a conta Root está bloqueada por motivos de segurança. Para contornar isso, ganhe um shell de root com sudo.

sudo -s

Agora que temos acesso root, crie os diretórios necessários para que o servidor Caddy funcione corretamente.

mkdir /etc/caddy

mkdir /etc/ssl/caddy

Nota: Se o seu servidor já possui um diretório /var/www/, ignore este último comando mkdir.

mkdir /var/www

Em seguida, crie um novo “Caddyfile” dentro de /etc/caddy/.

touch /etc/caddy/Caddyfile

Usando o comando chmod, atualize as permissões para a subpasta Caddy dentro de /etc/ssl/.

chmod 0770 /etc/ssl/caddy

Por último, chown o diretório /var/www/:

chown www-data: /var/www

Arquivo Caddy Systemd

A maioria dos servidores, especialmente o servidor Ubuntu, faz uso pesado do sistema systemd init. No entanto, como o servidor da Web é instalado via script Bash, um arquivo systemd não está presente. Em vez disso, precisaremos fazer o nosso próprio. Use o comando touch para criar um novo arquivo de serviço em branco.

touch /lib/systemd/system/caddy.service

Abra o novo arquivo caddy.service e cole o seguinte código nele:

[Unit]
Description=Servidor web Caddy HTTP/2
Documentation=https://caddyserver.com/docs
Depois=network-online.target
Wants=network-online.target

[Service]
Reiniciar = em caso de falha
StartLimitInterval=86400
StartLimitBurst=5

  Como fazer backup de e-mail no Linux com IMAP Grab

Usuário=www-dados
Grupo=www-dados
; Os certificados emitidos pelo Letsencrypt serão gravados neste diretório.
Ambiente=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
LimiteNPROC=64

PrivateTmp=true
Dispositivos Privados=true
ProtectHome=true
ProtectSystem=completo
ReadWriteDirectories=/etc/ssl/caddy

; As diretivas de segurança adicionais a seguir funcionam apenas com systemd v229 ou posterior.
; Eles restringem ainda mais os privilégios que podem ser obtidos pelo caddie. Descomente se quiser.
; 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-usuário.destino

Há muito código para o arquivo caddy.service, portanto, faça o possível para garantir que tudo esteja lá. Quando tiver certeza, salve as alterações pressionando a combinação de teclado Ctrl + X. Saia do editor com Ctrl + X.

systemctl enable caddy.service

systemctl start caddy.service

Depois de configurar o systemd, tudo deve estar pronto para funcionar.

Configurando Domínios

O Caddy, como qualquer outro servidor web, precisa de um pouco de configuração antes de usá-lo. Comece criando uma pasta de domínio:

Nota: certifique-se de renomear “test-domain.org” com seu domínio.

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 novo domínio:

meu-domínio.com {
root /var/www/test-domain.org
}

Reinicie o serviço Caddy systemd para salvar as alterações. Quando o serviço terminar de reiniciar, o Caddy estará pronto para ser usado em seu servidor.

systemctl restart caddy.service