Caddy : un serveur http pour faire la course

le mercredi 8 avril 2020

Bearstech | Dernière mise à jour : mercredi 8 avril 2020

Bearstech vous présente Caddy, un serveur HTTP plein de promesses.

La simplicité est une vertu. Pour servir des pages web, cette simplicité est souvent synonyme de performances et de sécurité. Un serveur web simple, ça ne veut pas forcément dire qu'il est simpliste, dépourvu de fonctionnalités dans l'ère du temps. Caddy est un serveur web open source avec des arguments à faire valoir.

Serveur HTTP

Caddy s'insère tranquillement dans l'écosystème déjà bien vivant des serveurs HTTP, enfin, bien vivant, RIP lighttpd. Si le gros du marché demeure trusté par Apache (41 % du marché) et Nginx (23 % du marché), nous conservons un œil attentif sur les nouveautés, particulièrement quand ces dernières répondent à nos attentes.

Caddy propose à la fois l'état de l'art au niveau des fonctionnalités que l'on peut attendre d'un serveur web (et même un peu au-delà), et une syntaxe déclarative très pure. De la simplicité, une implémentation par défaut de LetsEncrypt pour le HTTPS et des performances encourageantes, voici les principaux arguments pour lesquels vous devriez essayer Caddy.

Caddy

Avec Caddy, on ne va pas assembler des bouts de code volés sur StackOverflow, mais tout simplement déclarer son intention.

Comme on est moderne et poli, on respecte les recommandations respectables de Debian.

La configuration est dans /etc/caddy/Caddyfile :

import /etc/caddy.d/*

Oui, les faux vieux nomment leurs fichiers de configuration en [A-Z]\w+file en hommage au vénérable Makefile. Enfin bon, c'est moins pire que le port de la moustache avant 35 ans.

Là, on ne fait rien, on se contente de préciser que les configurations seront rangées dans un dossier, pour plus d'intimité.

La conf du site est /etc/caddy.d/mon.super.site

mon.super.site {
  gzip
  root /home/monsupersite/www
  log /var/log/caddy/mon.super.site.log
  header / {
    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
    Strict-Transport-Security max-age=15768000
    # Prevent IE and Chrome from incorrectly detecting non-scripts as scripts
    X-Content-Type-Options nosniff
    # Block site from being framed
    X-Frame-Options DENY
    # Block pages from loading when they detect reflected XSS attacks
    X-XSS-Protection "1; mode=block"
  }
  proxy /mon-super-service http://localhost:1234 {
    header_upstream X-Script-Name /isso
    transparent
  }
}

On reconnait un vhost façon Apache, qui sera compressé, avec un dossier racine, un fichier de log, des en-têtes en plus, et un service dynamique qui tourne à côté, parce que les sites statiques, ça ne fait pas tout.

Niveau lisibilité, on est au top, et la plupart des paramètres sont tacites, comme l'utilisation d'HTTP/2 ou des certificats Letsencrypt.

L'installation est triviale, c'est un simple binaire (merci Golang), qui tournera avec un utilisateur non privilégié (merci CAP_NET_BIND_SERVICE), et la configuration systemd est fournie, par ce que le reboot, c'est bien.

Là, l'exemple est minimaliste, mais il est possible de faire de belles choses, comme brancher un php-fpm (c'est Caddy qui maintient la plus belle bibliothèque fastcgi de tout golang) ou parser du Markdown.

Pour les vrais ambitieux, il faut taper dans les plugins tiers et recompiler sa propre version (merci Golang).

Caddy a une configuration à la lisibilité incomparable, il gère Letsencrypt de base (pas comme Apache/Nginx/HAproxy) et sert des fichiers (pas comme HAProxy/Træfik). Pour l'instant, le projet n'a aucune velléité hégémonique (ce qui est reposant), il ne sera pas le roi du Cloud, mais il fait le job™.

Le drame et sa résolution

Grand classique du logiciel libre, ce projet a été initié par une personne, sur un coin de table, puis a rapidement eu une communauté, et des gens qui se sont dits qu'il y avait des sous à se faire. Des gens, pas le dev principal. Du coup, il a été vexé de se faire enfler comme ça. Même si c'est classique, ça vexe. La licence a été un peu secouée. Puis finalement, rapprochement d'une boite, Ardan Labs, avec le dev, et paf, ça bosse dur sur une V2, bien opensource.

Le futur

La v2 monte d'un cran le niveau d'ambition, en implémentant HTTP/3, pour ceux qui ont une connexion Internet asthmatique, brotli, pour les amateurs de pâtisserie suisse, et de la conf bricolable en REST. De la configuration dynamique, ça veut dire commencer à empiéter vers Træfik, produit de qualité, mais qui attrape le même problème par l'autre bout.

Au pays de Caddy

Au pays de Caddy

Que vous soyez un survivaliste minimaliste, ou un administrateur de nuage, allez essayer Caddy, c'est très rafraîchissant.

Service Hébergement et Infogérance debian

Bearstech vous propose ses services Hébergement et Infogérance debian

Découvrir ce service

Partager cet article

Flux RSS

flux rss

Partager cet article :

Nos expertises technologiques