En nuestros muchos tutoriales hemos analizado cientos de tecnologías diferentes.

En casi todos los artículos, hemos basado nuestro trabajo en servidores web basados ​​en Apache o NGINX.

Sin embargo, hay un nuevo servidor web que está ganando popularidad debido a su simplicidad general.

¿Que es Caddy Web Server?

Este servidor web está completamente escrito en Go, y se lanzó por primera vez en 2015.

La configuración de Caddy web server se basa Caddyfile y, como veremos en un ejemplo, estos archivos son increíblemente fáciles de escribir y administrar.

Sin embargo, lo que realmente nos entusiasmó es el hecho de que integra Let’s Encrypt de forma predeterminada y sin ninguna configuración manual.

Características del Caddy Web Server

HTTPS automático activado de forma predeterminada, a través de Let’s Encrypt
HTTP/2 por defecto
Archivos estáticos en el directorio de trabajo actual
Todos los tipos de servidores, directivas, proveedores de DNS y otras características son solo complementos
Se puede usar como una biblioteca en otros programas Go
Configurable para ejecutar comandos del sistema al inicio y apagado
Caddy es un archivo ejecutable único sin dependencias, excepto del núcleo.

Impresionante ¿verdad? Y esto ni siquiera es una lista exhaustiva de las funciones disponibles!

Ahora que estás emocionado. Echemos un vistazo a cómo instalar y usar Caddy en Ubuntu 16.04.

Como Instalar el servidor web Caddy en Ubuntu 16.04 | 18.04

Caddy proporciona un script de instalación que descarga e instala los binarios de Caddy. Como se anticipó en la introducción, este servidor web no tiene dependencias.

Ejecute el siguiente comando para instalarlo:

curl https://getcaddy.com | bash

Durante la instalación, el script le pedirá su contraseña para obtener privilegios administrativos o de root.

El resultado será:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5593 100 5593 0 0 3696 0 0:00:01 0:00:01 –:–:– 3696
Downloading Caddy for linux/amd64…
https://caddyserver.com/download/linux/amd64?plugins=
Download verification OK
Extracting…
Putting caddy in /usr/local/bin (may require password)
[sudo] password for gmolica:
Caddy 0.10.6
Successfully installed

Una vez que el script haya completado su trabajo, los binarios de Caddy estarán instalados y listos para usar, y, como podemos ver, estarán en el /usr/local/bin/.

Es importante tener en cuenta que el proceso de instalación no creará ninguna configuración de todo el sistema, por lo que esta parte depende de usted.

Afortunadamente, el proceso es simple.

Como Configurar Caddy en Ubuntu 16.04 | 18.04

Por defecto, Caddy usará el directorio desde el que se está ejecutando como la raíz del sitio, por lo que, si lo ejecuta $HOME, lo usará como su raíz.

Esto significa, por supuesto, que con Caddy es realmente fácil trabajar en sitios locales.

Escriba lo siguiente para Ejecutar:

caddy

El terminal mostrará el siguiente mensaje:

Activating privacy features… done.
http://:2015
WARNING: File descriptor limit 1024 is too low for production servers.
At least 8192 is recommended. Fix with “ulimit -n 8192”.

En este momento, podemos ignorar la ADVERTENCIA y tener en cuenta que se Caddy se ejecuta en localhost en el puerto 2015.

Ir con un navegador web a http://your_server_IP:2015 podría redirigir a una 404 Not Found o una página de error.

Esto se debe al hecho de que el directorio que Caddy está utilizando ya que su raíz no contiene un sitio web.

Antes de continuar, cree los directorios necesarios:

Crear directorios requeridos

En primer lugar, cree un directorio que contendrá el principal Caddyfile:

mkdir /etc/caddy

Cambie su propietario al usuario raíz y su grupo a www-data:

chown -R root:www-data /etc/caddy

Cree un segundo directorio, donde Caddy almacenará los certificados SSL y las claves privadas:

mkdir /etc/ssl/caddy

Cambie su propietario a www-data:

chown -R www-data /etc/ssl/caddy

Cambie los permisos, de la siguiente manera:

chmod 0770 /etc/ssl/caddy

A continuación, cree el directorio que contendrá el sitio /var/www:

mkdir /var/www

Este directorio será propiedad de www-data:

chown www-data: www-data /var/www

Descargue el archivo de la unidad Caddy

Por defecto, Caddy no se instalará como un servicio systemd, pero el proyecto proporciona un archivo de unidad oficial. Descárgalo con el siguiente comando:

curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service

Mirando este archivo notaremos las siguientes líneas:

; Letsencrypt-issued certificates will be written to this directory.
Environment=CADDYPATH=/etc/ssl/caddy

; Always set “-root” to something safe in case it gets forgotten in the Caddyfile.
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp

Es por eso que configuramos esos directorios en los pasos anteriores.

Creamos un archivo vacío Caddyfile:

sudo touch /etc/caddy/Caddyfile

Ejecute los siguientes comandos para permitir que Caddy se ejecute en el arranque:

systemctl daemon-reload
systemctl enable caddy

Comprobar el estado de Caddy

systemctl status caddy

———————————-
â caddy.service – Caddy HTTP/2 web server
Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: en
Active: inactive (dead)
Docs: https://caddyserver.com/docs

Permitir conexiones HTTP y HTTPS

Mediante ufw, permita las conexiones HTTP y HTTPS para que Caddy pueda servir correctamente a los usuarios:

ufw allow http
ufw allow https

Probar Caddy web server

El último paso es probar Caddy para asegurarse de que todo se haya hecho correctamente.

Editar Caddyfile

Anteriormente, creamos un vacío Caddyfile. Ahora, es hora de poblarlo. Abrir con un editor de texto:

$EDITOR /etc/caddy/Caddyfile

En ese archivo colocamos:

example.com {
root /var/www
gzip
tls [email protected]
}

Nota: la línea tls contiene la dirección de correo electrónico que utilizará Caddy para obtener certificados SSL de Let’s Encrypt.

Guardar y cerrar.

Iniciar Caddy:

systemctl start caddy

Crear una página web

Cree una página web para probar Caddy:

$ echo ‘<h1>Website using Caddy</h1>’ | sudo tee /var/www/index.html

Use la misma opcion que configuró en Caddyfile.

Ahora, con un navegador web, solo ve https://example.com y verás nuestra página de prueba.