Software-update: Caddy 2.5.1

Caddy is een opensource-http/2-webserver die beschikbaar is voor Android, BSD, Linux, macOS, Solaris en Windows. Het zet standaard https aan en gebruikt daarvoor de integratie met Let's Encrypt als eigen certificaten niet voorhanden zijn. De eigen feature stack is al behoorlijk compleet, maar kan verder uitgebreid worden via modules. Zo is het onder andere mogelijk om via deze modules experimentele ondersteuning van http/3 aan te zetten. Het ontwikkelteam heeft versie 2.5.1 enkele dagen geleden uitgebracht met de volgende aanpassingen:

Version 2.5.1

This is a minor patch release that fixes some bugs and also enhances reverse_proxy with capabilities that weren't ready in time for v2.5.0.

Highlights
  • Fixed regression in Unix socket admin endpoints.
  • Fixed regression in caddy trust commands.
  • Hash-based load balancing policies (ip_hash, uri_hash, header, and cookie) use an improved highest-random-weight (HRW) algorithm for increased consistency. The new rendezvous hash will ensure a client or request is consistently mapped to a particular upstream even if the list of upstreams changes.
  • The reverse proxy is now able to rewrite the method and URI on its internal copy of the request that goes to the upstream. Combined with new handle_response capabilities, this enables the reverse proxy to fire off "pre-check requests" (for lack of a better term) to make routing decisions based on the results of that call. This enables a commonly-emerging pattern called forward authentication wherein a backend is queried to assess a client's authorization to be proxied. The full, verbose config for this is very flexible but tedious, so we made a new wrapper directive called forward_auth that eliminates the boilerplate (very similar to the php_fastcgi directive). This works with authentication providers like Authelia, and more.
What's Changed
  • caddypki: Fix caddy trust command to use the correct API endpoint
  • reverseproxy: Improve hashing LB policies with HRW
  • Add missing backticks
  • caddyhttp: Improve listen addr error message for IPv6
  • cmd: Fix unix socket addresses for admin API requests
  • logging: Use RedirectStdLog
  • logging: Implement rename filter, changes field key names
  • httpcaddyfile: Fix duplicate access log when debug is on
  • reverseproxy: Fix Caddyfile support for replace_status
  • templates: Add custom template function registration
  • reverseproxy: Permit resolver addresses to not specify a port
  • caddyfile: Shortcut for remote_ip for private IP ranges
  • reverseproxy: Support performing pre-check requests
  • map: Prevent output destinations overlap with Caddyfile shorthands
Versienummer 2.5.1
Releasestatus Final
Besturingssystemen Windows 7, Android, Linux, BSD, macOS, Solaris, UNIX, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016, Windows Server 2019, Windows 11
Website Caddy
Download https://caddyserver.com/docs/install
Licentietype Voorwaarden (GNU/BSD/etc.)

Door Japke Rosink

Meukposter

12-05-2022 • 01:01

14 Linkedin

Bron: Caddy

Update-historie

05-'22 Caddy 2.5.1 14
05-'21 Caddy 2.4.1 5
05-'20 Caddy 2.0.0 22
05-'19 Caddy 1.0.0 5
08-'17 Caddy 0.10.7 1
04-'17 Caddy 0.10 5

Reacties (14)

14
14
7
0
0
5
Wijzig sortering
Ik gebruik Caddy ondertussen al jaren, kan het niet genoeg aanraden. Hele cleane configuratiefiles, werkt zeer vlot en in de 3 jaar dat ik het in productie draai nog geen enkel probleem mee gehad.

Is wel even aanpassen aan de andere configuratie-manier, en het herschrijven van rewrite rules kan even pijn doen, maar al bij al absoluut een topproject.
Hier iemand die nog ouderwets apache2 gebruikt, in hoe verhoudt caddy zich?
Hangt er natuurlijk vanaf hoe je het wilt vergelijken. Qua snelheid is Caddy zeer snel, ik merk geen vertragingen op - is in mijn ervaringen even snel, zoniet sneller dan Nginx.

Caddy is vooral een pak eenvoudiger te configureren, je werkt eigenlijk met een enkele Caddyfile waarin je vhosts aanmaakt. Dat ziet er dan bijvoorbeeld zo uit:
site.be {
root * /var/www/sitepublic
file_server
}
Dat is letterlijk alles wat je nodig hebt voor een eenvoudige static website, waarbij dan ook nog eens automatisch een Let's Encrypt certificaat ingesteld wordt en alle TLS configuratie in orde gebracht wordt. Caddy vernieuwt ook alle certificaten zelf, je moet er eigenlijk niet meer naar omkijken.

Dus qua gemak en performance heeft Caddy mij echt overtuigd.
Dat klinkt zeker heel fijn. Ik zal eens kijken. *.site.be pakt dan alle subdomeinen?
Klopt als een bus!
Voor wie graag met Docker Compose werkt heb je deze versie van Caddy:

https://github.com/lucaslorentz/caddy-docker-proxy

Met minimaal 2 labeltjes onder de services die je wil proxyen, wordt dan alles automatisch voor je geregeld, zonder dat je een Caddy config file hoeft te maken, die wordt dynamisch gemaakt voor je. Simpeler dan dit is volgens mij niet meer mogelijk!

Een voorbeeld:
caddy docker proxy in je compose.yml: (generiek voorbeeld, alles met een $ ervoor, staat dan genoemd een apart .env bestandje).
services:
caddy:
container_name: web-proxy
image: lucaslorentz/caddy-docker-proxy:ci-alpine
## If you use Cloudflare as domain provider, use this image instead:
# image: sabrsorensen/caddy-docker-proxy-cloudflare
restart: always
networks:
- web-proxy
environment:
- CADDY_INGRESS_NETWORKS=web-proxy
## Only required when you use the Cloudflare image:
# - CLOUDFLARE_EMAIL=your.cloudflare@email.com
# - CLOUDFLARE_API_TOKEN=your.cloudflare.apitoken
# - CADDY_DOCKER_PROXY_SERVICE_TASKS=true
# - CADDY_DOCKER_PROCESS_CADDYFILE=true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- $DOCKERDIR/caddy/caddy_data:/data
- $DOCKERDIR/caddy/config:/config
labels:
caddy.email: $EMAIL
ports:
- 443:443
- 80:80
En als je vervolgens een service online via https beschikbaar wil maken, voeg je deze 2 labels toe, bijvoorbeeld als je je eigen server voor Firefox Sync wil:
firefox-sync:
container_name: firefox-sync
image: crazymax/firefox-syncserver:latest
restart: always
networks:
- web-proxy
environment:
FF_SYNCSERVER_PUBLIC_URL: https://firefox.$DOMAIN
FF_SYNCSERVER_SECRET: $FFSYNCSECRET
FF_SYNCSERVER_FORWARDED_ALLOW_IPS: '*'
FF_SYNCSERVER_FORCE_WSGI_ENVIRON: true
FF_SYNCSERVER_ALLOW_NEW_USERS: false
FF_SYNCSERVER_LOGLEVEL: debug
FF_SYNCSERVER_ACCESSLOG: true
volumes:
- $DOCKERDIR/firefox-sync:/data
labels:
caddy: firefox.$DOMAIN
caddy.reverse_proxy: "{{upstreams 5000}}
Na 1 commando ("docker-compose up -d") heb je direct https://firefox.jouwdomein.com beschikbaar! Met A+ rating etc.

[Reactie gewijzigd door Jazco2nd op 12 mei 2022 14:25]

Kijk aan!
Ik heb weer wat te doen vanavond :D
Sorry voor de compleetheid, voordat je compose up doet met caddy docker -proxy moet je eerst dit commando uitvoeren, staat ook op GitHub uitgelegd:

docker network create caddy

En het compose voorbeeld mist nog het aanmaken van het netwerk onderaan:

networks:
caddy:
external: true

(2 spaties voor caddy en 4 voor de laatste regel).

Zo is het helemaal compleet!

Wel de 2 poorten in je router forwarden.

[Reactie gewijzigd door Jazco2nd op 13 mei 2022 00:17]

Bedankt voor je toevoeging!
Ben enigszins bekend met docker (-compose) en het network create stukkie was me al te binnen geschoten.
Ondertussen draait de hele meute ook al en moet zeggen; had ik eerder moeten doen!
Wel de 2 poorten in je router forwarden.
Als je het naar buiten toe open wilt hebben.

Hoe werkt het met dat .env bestand? Heb je al je docker-compose bestanden samen met .env in 1 folder zitten?
En heb je ook nog iets dat alles wat exposed is op die manier op een dashboardje komt?
Wat zou ik op een dashboard moeten zien dan?
Bij je domein provider heb je toch de subdomeinen aangemaakt. Ik zou niet weten wat voor overzicht ik nog meer nodig heb?
En als je het binnen je LAN houdt heb je in je hosts bestand of in AdGuard Home de domeinen staan.

docker-compose.yml en het .env bestand zitten bij mij beide in mijn $HOME/docker map. Ik gebruik Manjaro Linux maar bij andere distributies kan je dat net zo doen.

Voor voorbeelden en meer uitleg, zie ook mijn Homeserver guide die ik nog wel aan het finetunen ben, specifiek stap stap 4.

https://github.com/zilexa/Homeserver

[Reactie gewijzigd door Jazco2nd op 14 mei 2022 12:16]

Thanks.

Ik heb blocky ipv AdGuard. Daar heb ik dns mapping naar 'ho.me' staan waardoor ik geen individuele hostnames hoef te maken. Een overzichtje is gewoon wel makkelijk, nu zet ik het handmatig in een flame dashboard.
Flame werkt met Compose Labels dus hoef je ook niet te configureren, scheelt wel. Een dashboard is natuurlijk heel iets anders dan een https reverse proxy :)

Moet zeggen dat Plugsy en Dashy ook leuke alternatieven zijn voor Flame. Flame heeft wat eigenaardigheden. De developer weigert categorieën voor apps te introduceren. Heeft het wel voor bookmarks. En die begroeting, als je in plaats daarvan een statische titel wil. Moet je 4x een titel invullen ipv 4 begroetingen.

Plugsy heeft dan weer een bug als je deze achter een (lokaal) domein probeert te zetten.

Dashy ondersteund nog geen Compose labels.
Dit klinkt voor mij ook interssant. Jammer dat er geen OVH plugin is voor DNS chalange....

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee