Tutorial Caddy, un servidor web con SSL incluido | Programador Web Valencia

Tutorial Caddy, un servidor web con SSL incluido

3 minutos

Caddy

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 documentación oficial.

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.com

por simplmente

midominio.localhost

o también.

https://midominio.com

Al levantarlo se encargará de todas las gestiones necesarias, conectandose a Let’s Encrypt y renovandolo antes de que pueda caducar.

En caso de trabajar en local debes usar un certificado autofirmado, ya que será imposible de otra manera si estas desarrollando en tu equipo.

midominio.localhost

tls internal

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 no www (www.midominio.com -> midominio.com)

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

Redireccionar no www a www (www.midominio.com -> midominio.com)

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

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.

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me ayudas?

Comprame un café
Pulsa sobre la imagen

No te sientas obligado a realizar una donación, pero cada aportación mantiene el sitio en activo logrando que continúe existiendo y sea accesible para otras personas. Además me motiva a crear nuevo contenido.

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...