Exécuter son site web avec FreeBSD,  HTTP/3 et Caddy 2 dans DigitalOcean …
Tags: digitalocean, caddy, http3, node
Published: 2020-04-17 16:24:12

---
title: Exécuter son site web avec FreeBSD,  HTTP/3 et Caddy 2 dans DigitalOcean …
published: true
date: 2020-04-17 16:12:36 UTC
tags: digitalocean,caddy,http3,nodejs
canonical_url: https://medium.com/@abenahmed1/ex%C3%A9cuter-son-site-web-avec-freebsd-http-3-et-caddy-2-dans-digitalocean-5c1571be6d9f
---

![](https://cdn-images-1.medium.com/max/1024/1*LTrXkRB1sDKd-ziiqF8mjQ.jpeg)

Pour cette expérience, je pars d’une instance FreeBSD 12.1 64 bits dans DigitalOcean :

![](https://cdn-images-1.medium.com/max/1024/1*tEJCA2foS0diWticD6LrpQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*6GNweGHyoB8W8UsUrE7PyQ.jpeg)

Et j’y installe quelques paquets de base avec Bash (et Bash-it) :

[Bash-it/bash-it](https://github.com/Bash-it/bash-it)

![](https://cdn-images-1.medium.com/max/1024/1*Urzycphq14zDWto6tY016g.png)

![](https://cdn-images-1.medium.com/max/1024/1*58MG6NOW2KRZXxRtOn3jHQ.png)

Ainsi que Node.js :

![](https://cdn-images-1.medium.com/max/834/1*6XDcufUAKFsA0DZZJLwX2w.png)

avec Serve et PM2 :

![](https://cdn-images-1.medium.com/max/936/1*i9DwB8OeXAgtL5MV9jauAQ.png)

PM2 via le portail de Keymetrics me permet d’avoir un monitoring de base de l’instance :

![](https://cdn-images-1.medium.com/max/1024/1*yK5IxXY7cIoQuFD4deI_2Q.jpeg)

Je clone un site web statique très simple avec un seul fichier “_index.html_” depuis GitHub :

![](https://cdn-images-1.medium.com/max/1024/1*JuDAaifyMhMqnHGKnL29Ug.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*JyU46LBXTrLAiTNWrzi4tA.jpeg)

Et je peux l’exposer localement via Serve et PM2 :

![](https://cdn-images-1.medium.com/max/1024/1*7LjOPO3dA80OJLf8ecK1iQ.jpeg)

![](https://cdn-images-1.medium.com/max/654/1*yzaNVulgCLFW7Km8uEuzEA.png)<figcaption>serve.sh</figcaption>

qui apparait sur le port TCP 5000 ici :

![](https://cdn-images-1.medium.com/max/1024/1*wxNrLq0vlDcVoZ7bwDUVZQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*9b2phHQHk_qnCjdAskaDYw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*6XwOspUpkgNzRJwV97poew.jpeg)

> Caddy 2 offre la possibilité d’avoir le support expérimental de HTTP/3. Pour rappel, HTTP/3 est le successeur proposé de HTTP/2, qui est déjà utilisé sur le Web, en utilisant UDP au lieu de TCP pour le protocole de transport sous-jacent. Comme HTTP/2, il n’observe pas les versions majeures précédentes du protocole. La prise en charge de HTTP/3 a été ajoutée à Cloudflare et Google Chrome en septembre 2019 et peut être activée dans les versions stables de Chrome et Firefox.

- [Qu'est-ce que HTTP/3 - Informations sur le nouveau protocole UDP rapide ?](https://kinsta.com/fr/blog/http3/)
- [HTTP/3](https://en.wikipedia.org/wiki/HTTP/3)

![](https://cdn-images-1.medium.com/max/1024/0*rR8Rvz2ofJDsGO7R)

Je récupère le binaire de Caddy 2 pour freeBSD depuis GitHub :

[caddyserver/caddy](https://github.com/caddyserver/caddy/releases)

![](https://cdn-images-1.medium.com/max/1024/1*wU7RfNSY6xTWyXIWGYZgPg.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*V0o3ohvwLA_0wN4dRx3bHQ.png)

Je démarre Caddy avec ce fichier Caddyfile qui introduit le support expérimental de HTTP/3 :

![](https://cdn-images-1.medium.com/max/822/1*CdmNIIY5t-7wTMv34TJOOg.png)

![](https://cdn-images-1.medium.com/max/1024/1*Lr2TGeM5aDzL8p5grYiWZA.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*JYQmnfkklMWB2C_NIdWgkg.jpeg)

via ce simple script shell :

![](https://cdn-images-1.medium.com/max/654/1*ql9PI2FwfOeoCML7jtdGYQ.png)

![](https://cdn-images-1.medium.com/max/1024/1*PYzmDrZzAKz3cz7q7PAkmQ.png)

![](https://cdn-images-1.medium.com/max/1024/1*0OohDav-SB3SLRn2r7NW-g.jpeg)

Je peux installer HTTPie :

![](https://cdn-images-1.medium.com/max/1024/1*9Bnw_WUUvbbHUImPX1MS1Q.png)

afin de lancer une requête vers ce site web et retrouver la partie Header avec _alt-svc_ qui montre la présence du protocole HTTP/3 :

![](https://cdn-images-1.medium.com/max/1024/1*NTL6jUQCHyL0jIIJBfjvVA.png)

On peut également utiliser une version compilée de cURL :

[curl/curl](https://github.com/curl/curl/blob/master/docs/HTTP3.md)

Je récupère la dernière version en développement du navigateur Chrome :

[Chrome Release Channels - The Chromium Projects](https://www.chromium.org/getting-involved/dev-channel)

![](https://cdn-images-1.medium.com/max/1024/1*Y5RvMXLYUyzFipmDn6ncsw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*V8pd2WCa23Bq6B8reaLPaA.jpeg)

et je le lance sur mon poste avec le support du protocole HTTP/3 :

![](https://cdn-images-1.medium.com/max/1024/1*0wa2m1eX02VudOGJzGcJdA.png)

![](https://cdn-images-1.medium.com/max/1024/1*JgiSLCKk5cPa4XOPudTsQA.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*CzKLnOveVLj5YX6U4suSaA.jpeg)

Support expérimental du protocole HTTP/3 confirmé par ce test :

[Geekflare HTTP/3 Testing Tool](https://gf.dev/http3-test)

![](https://cdn-images-1.medium.com/max/1024/1*aPWQffrR34LmGkd8XPI5rA.jpeg)

**_Pour aller plus loin :_**

![](https://cdn-images-1.medium.com/max/800/0*yg1lTQeKthcP03tY.jpg)

- [Comparing HTTP/3 vs. HTTP/2 Performance](https://blog.cloudflare.com/http-3-vs-http-2/)
- [HTTP/3 : le passé, le présent et l'avenir](https://blog.cloudflare.com/fr/http3-the-past-present-and-future-fr/)

![](https://cdn-images-1.medium.com/max/577/0*698GmbylW5-AaAQ_.jpg)

À suivre !