Tutorial Caddy, un servidor web con SSL incluido

Si eres un Diseñador Web estarás en la constante necesidad de utilizar un servidor web, un software esencial para que los visitantes puedan ver tus sitios. Entre los más conocidos nos encontramos con Apache y Nginx, altamente utilizados por su buen rendimiento y la gran capacidad de gestionar peticiones (o usuarios). Si instalamos cualquier de ellos, añadimos la DNS (configurando el dominio), una ip fija, los puertos adecuados abiertos y algún certificado SSL de calidad… la web ya será visible para cualquier navegador. ¿Sencillo? ¡Para nada! Son necesarias un conjunto de habilidades que no esta al alcance de todos, por ello existen proveedor que te lo gestiona todo a cambio de un pago mensual; los conocerás como hostings de pago.

¿Y si os digo que hay una manera directa de montar un servidor web usando un solo comando? ¿Y si automatizara todas las acciones complejas como la renovación de certificados SSL y mantenerlo en segundo plano? ¿Y que es gratis? No, no os estoy engañando con promesas de feriante, es real y se llama Caddy: un servidor web Opensource escrito en Go que automatiza el protocolo HTTPS entre otras tareas.

Instalación

Si dispones de un MacOS.

brew install caddy

En caso de un Archlinux/Manjaro.

sudo pacman -S caddy2

O Debian/Ubuntu/Raspbian.

echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" \

    | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
sudo apt update
sudo apt install caddy

Y para resto de distribuciones (Fedora, RedHat, CentOS…) debes seguir las instrucciones de su .

Crear servidor de HTML o estáticos

Con Caddy es muy rápido montar un servidor web que se autogestionará sin intervención por nuestra parte. Solo hay que seguir unos pasos.

1. Creamos el directorio donde estará la web.

mkdir mi-web

2. Configuración

Caddy necesita un archivo donde le proporcionemos las instrucciones iniciales. Para ello creamos un archivo nuevo, que será su configuración, denominado Caddyfile (sin extensión). Debe estar dentro de la carpeta anterior.

Lo editamos con el siguiente contenido.

# Dominio, si buscas certificado SSL modificalo por https:// o deja midominio.localhost

http://midominio.localhost

# Ruta

root * /ruta/absoluta/carpeta/proyecto/mi-web

# Servimos contenido estático

file_server

3. Añadimos HTML.

Movemos la web o creamos un fichero nuevo con el nombre index.html y un contenido como el siguiente.

Si vas a utilizar una web existente, recuerda que la primera página debe llamarse: index.html.

<html>
    <body>
        Hola Caddy
    </body>
</html>

4. Ejecutamos Caddy.

Abrimos el terminal y entramos en la carpeta.

cd mi-web

Ejecutamos Caddy.

caddy run

Para finalizar abrimos el navegador y nos movemos al siguiente dominio.

http://midominio.localhost

¡Ya está! ¿Ves que sencillo?

5. (Opcional) Servicio.

Para que se ejecute como un daemon, un servicio que lo mantenga activo en segundo plano, en primer lugar deberemos detenerlo. Puedes usar la combinación Ctrl+c.

A continuación.

caddy start

En el caso de querer pararlo en algún momento.

caddy stop

O de ver su estado.

caddy reload

6. (Opcional) Activar https.

En el ejemplo desactiva los certificados SSL porque fallarán ya que se están ejecutando en tu equipo y no se ha configurado un DNS real que apunte a tu IP. Cuando se de el caso que quieras subirlo a un VPS/Servidor dedicado , recueda configurar las DNSs y en la configuración cambiar.

http://midominio.localhost

por simplmente

midominio.localhost

Al levantarlo se encargará de todas las gestiones necesarias.

Extra: Configuraciones útiles

PHP

midominio.com

root * /ruta/absoluta/carpeta/proyecto

php_fastcgi * localhost:9000

file_server

Django

midominio.com

encode gzip zstd

root * /ruta/absoluta/carpeta/proyecto

@notStatic {
  not path /static/* /media/*
}
reverse_proxy @notStatic localhost:8000

file_server

Reverse proxy

midominio.com

encode gzip zstd

reverse_proxy localhost:7404

Redireccionar www a dominio raiz (www.midominio.com -> midominio.com)

www.midominio.com {
	redir https://midominio.com{uri}
}

midominio.com {
  root * /ruta/absoluta/carpeta/proyecto

  file_server
}

Extra: Levantar servidor temporal de estáticos con un comando

Situate en el terminal dentro de la carpeta donde están los ficheros o la página web. Después levanta el servidor caddy.

caddy file-server --listen :2015

Ahora solo queda abrir una pestaña de tu navegador favorito con localhost:2015.

Versión escritorio