
Veloce ed estensibile server web HTTP/1-2-3 multipiattaforma con HTTPS automatico
<p align="center"> <a href="https://caddyserver.com"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/1d6be89c-df8a-438c-b01d-cef6bf56440a"> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/3a5b7419-6925-48f6-ae75-d231f4a4f0c2"> <img src="https://github.com/user-attachments/assets/3a5b7419-6925-48f6-ae75-d231f4a4f0c2" alt="Caddy" width="550"> </picture> </a> <br> <h3 align="center">un progetto <a href="https://zerossl.com"><img src="https://user-images.githubusercontent.com/55066419/208327323-2770dc16-ec09-43a0-9035-c5b872c2ad7f.svg" height="28" style="vertical-align: -7.7px" valign="middle"></a></h3> </p> <hr> <h3 align="center">Ogni sito in HTTPS</h3> <p align="center">Caddy è una piattaforma server estensibile che utilizza TLS per impostazione predefinita.</p> <p align="center"> <a href="https://github.com/caddyserver/caddy/releases">Release</a> · <a href="https://caddyserver.com/docs/">Documentazione</a> · <a href="https://caddy.community">Ottieni aiuto</a> </p> <p align="center"> <a href="https://github.com/caddyserver/caddy/actions/workflows/ci.yml"><img src="https://github.com/caddyserver/caddy/actions/workflows/ci.yml/badge.svg"></a> <a href="https://www.bestpractices.dev/projects/7141"><img src="https://www.bestpractices.dev/projects/7141/badge"></a> <a href="https://pkg.go.dev/github.com/caddyserver/caddy/v2"><img src="https://img.shields.io/badge/godoc-reference-%23007d9c.svg"></a> <a href="https://x.com/caddyserver" title="@caddyserver on Twitter"><img src="https://img.shields.io/twitter/follow/caddyserver" alt="@caddyserver on Twitter"></a> <a href="https://caddy.community" title="Caddy Forum"><img src="https://img.shields.io/badge/community-forum-ff69b4.svg" alt="Caddy Forum"></a> <br> <a href="https://sourcegraph.com/github.com/caddyserver/caddy?badge" title="Caddy on Sourcegraph"><img src="https://sourcegraph.com/github.com/caddyserver/caddy/-/badge.svg" alt="Caddy on Sourcegraph"></a> <a href="https://cloudsmith.io/~caddy/repos/"><img src="https://img.shields.io/badge/OSS%20hosting%20by-cloudsmith-blue?logo=cloudsmith" alt="Cloudsmith"></a> </p> <p align="center"> <b>Powered by</b> <br> <a href="https://github.com/caddyserver/certmagic"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/55066419/206946718-740b6371-3df3-4d72-a822-47e4c48af999.png"> <source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/1128849/49704830-49d37200-fbd5-11e8-8385-767e0cd033c3.png"> <img src="https://user-images.githubusercontent.com/1128849/49704830-49d37200-fbd5-11e8-8385-767e0cd033c3.png" alt="CertMagic" width="250"> </picture> </a> </p> <!-- Warp sponsorship requests this section --> <div align="center" markdown="1"> <hr> <sup>Un ringraziamento speciale a:</sup> <br> <a href="https://go.warp.dev/caddy"> <img alt="Warp sponsorship" width="400" src="https://github.com/user-attachments/assets/c8efffde-18c7-4af4-83ed-b1aba2dda394"> </a> ### [Warp, creato per programmare con più agenti AI](https://go.warp.dev/caddy) [Disponibile per MacOS, Linux e Windows](https://go.warp.dev/caddy)<br> </div> <hr> ### Menu - [Funzionalità](#features) - [Installazione](#install) - [Compilazione dal sorgente](#build-from-source) - [Per lo sviluppo](#for-development) - [Con informazioni sulla versione e/o plugin](#with-version-information-andor-plugins) - [Avvio rapido](#quick-start) - [Panoramica](#overview) - [Documentazione completa](#full-documentation) - [Ottenere aiuto](#getting-help) - [Informazioni](#about) ## [Funzionalità](https://caddyserver.com/features) - **Configurazione semplice** con il [Caddyfile](https://caddyserver.com/docs/caddyfile) - **Configurazione potente** con la sua [configurazione JSON nativa](https://caddyserver.com/docs/json/) - **Configurazione dinamica** con l'[API JSON](https://caddyserver.com/docs/api) - [**Adattatori di configurazione**](https://caddyserver.com/docs/config-adapters) se non ti piace il JSON - **HTTPS automatico** per impostazione predefinita - [ZeroSSL](https://zerossl.com) e [Let's Encrypt](https://letsencrypt.org) per i nomi pubblici - CA locale completamente gestita per nomi interni e IP - Può coordinarsi con altre istanze Caddy in un cluster - Fallback multi-emittente - Supporto Encrypted ClientHello (ECH) - **Rimane attivo quando altri server vanno giù** a causa di problemi legati a TLS/OCSP/certificati - **Pronto per la produzione** dopo aver servito trilioni di richieste e gestito milioni di certificati TLS - **Scala fino a centinaia di migliaia di siti** come dimostrato in produzione - **HTTP/1.1, HTTP/2 e HTTP/3** tutti supportati per impostazione predefinita - **Altamente estensibile** [architettura modulare](https://caddyserver.com/docs/architecture) che consente a Caddy di fare qualsiasi cosa senza appesantimenti - **Funziona ovunque** con **nessuna dipendenza esterna** (nemmeno libc) - Scritto in Go, un linguaggio con **garanzie di sicurezza della memoria** superiori rispetto ad altri server - Davvero **divertente da usare** - E molto altro ancora da [scoprire](https://caddyserver.com/features) ## Installazione Il modo più semplice e multipiattaforma per iniziare è scaricare Caddy da [GitHub Releases](https://github.com/caddyserver/caddy/releases) e posizionare il file eseguibile nel tuo PATH. Consulta [la nostra documentazione online](https://caddyserver.com/docs/install) per altre istruzioni di installazione. ## Compilazione dal sorgente Requisiti: - [Go 1.26.0 o versione successiva](https://golang.org/dl/) ### Per lo sviluppo _**Nota:** Questi passaggi [non incorporeranno le informazioni corrette sulla versione](https://github.com/golang/go/issues/29228). Per quello, segui le istruzioni nella sezione successiva._ ```bash $ git clone "https://github.com/caddyserver/caddy.git" $ cd caddy/cmd/caddy/ $ go build ``` Quando esegui Caddy, potrebbe tentare di associarsi a porte basse se non diversamente specificato nella tua configurazione. Se il tuo sistema operativo richiede privilegi elevati per questo, dovrai concedere al tuo nuovo binario il permesso di farlo. Su Linux, questo può essere fatto facilmente con: `sudo setcap cap_net_bind_service=+ep ./caddy` Se preferisci usare `go run` che crea solo binari temporanei, puoi comunque farlo con lo script `setcap.sh` incluso, in questo modo: ```bash $ go run -exec ./setcap.sh main.go ``` Se non vuoi digitare la tua password per `setcap`, usa `sudo visudo` per modificare il tuo file sudoers e consentire al tuo account utente di eseguire quel comando senza password, ad esempio: ``` username ALL=(ALL:ALL) NOPASSWD: /usr/sbin/setcap ``` sostituendo `username` con il tuo nome utente effettivo. Fai attenzione e fallo solo se sai cosa stai facendo! Siamo qualificati solo a documentare come usare Caddy, non gli strumenti Go o il tuo computer, e forniamo queste istruzioni solo per comodità; impara a usare il tuo computer a tuo rischio e fai le modifiche necessarie. Poi puoi eseguire i test in tutti i moduli o in uno specifico: ```bash $ go test ./... $ go test ./modules/caddyhttp/tracing/ ``` ### Con informazioni sulla versione e/o plugin Usando [il nostro strumento di build, `xcaddy`](https://github.com/caddyserver/xcaddy)... ```bash $ xcaddy build ``` ...i seguenti passaggi sono automatizzati: 1. Crea una nuova cartella: `mkdir caddy` 2. Entraci: `cd caddy` 3. Copia [il main.go di Caddy](https://github.com/caddyserver/caddy/blob/master/cmd/caddy/main.go) nella cartella vuota. Aggiungi gli import per eventuali plugin personalizzati che vuoi aggiungere. 4. Inizializza un modulo Go: `go mod init caddy` 5. (Opzionale) Fissa la versione di Caddy: `go get github.com/caddyserver/caddy/v2@version` sostituendo `version` con un tag git, un commit o il nome di un branch. 6. (Opzionale) Aggiungi plugin aggiungendo il loro import: `_ "import/path/here"` 7. Compila: `go build -tags=nobadger,nomysql,nopgx` ## Avvio rapido Il [sito web di Caddy](https://caddyserver.com/docs/) ha una documentazione che include tutorial, guide di avvio rapido, riferimento e altro. **Raccomandiamo a tutti gli utenti -- indipendentemente dal livello di esperienza -- di seguire la nostra guida [Getting Started](https://caddyserver.com/docs/getting-started) per familiarizzare con l'uso di Caddy.** Se hai solo un minuto, [il sito web ha diversi tutorial di avvio rapido](https://caddyserver.com/docs/quick-starts) tra cui scegliere! Tuttavia, dopo aver completato un tutorial di avvio rapido, ti preghiamo di leggere ulteriore documentazione per capire come funziona il software. 🙂 ## Panoramica Caddy è usato più spesso come server HTTPS, ma è adatto a qualsiasi programma Go di lunga durata. Prima di tutto, è una piattaforma per eseguire applicazioni Go. Le "app" di Caddy sono semplicemente programmi Go implementati come moduli Caddy. Due app -- `tls` e `http` -- sono incluse di serie con Caddy. Le app Caddy beneficiano istantaneamente di [documentazione automatizzata](https://caddyserver.com/docs/json/), [modifiche di configurazione online](https://caddyserver.com/docs/api) senza interruzioni tramite API, e unificazione con altre app Caddy. Sebbene [JSON](https://caddyserver.com/docs/json/) sia il linguaggio di configurazione nativo di Caddy, Caddy può accettare input da [adattatori di configurazione](https://caddyserver.com/docs/config-adapters) che possono essenzialmente convertire qualsiasi formato di configurazione tu scelga in JSON: Caddyfile, JSON 5, YAML, TOML, configurazione NGINX e altro. Il modo principale per configurare Caddy è attraverso [la sua API](https://caddyserver.com/docs/api), ma se preferisci i file di configurazione, anche l'[interfaccia a riga di comando](https://caddyserver.com/docs/command-line) li supporta. Caddy espone un livello di controllo senza precedenti rispetto a qualsiasi web server esistente. In Caddy, di solito stai impostando i valori effettivi dei tipi inizializzati in memoria che alimentano tutto, dai tuoi handler HTTP e handshake TLS al tuo mezzo di archiviazione. Caddy è anche incredibilmente estensibile, con un potente sistema di plugin che apporta enormi miglioramenti rispetto ad altri web server. Per padroneggiare la potenza di questo design, devi sapere come è strutturato il documento di configurazione. Consulta [il nostro sito di documentazione](https://caddyserver.com/docs/) per dettagli sulla [struttura di configurazione di Caddy](https://caddyserver.com/docs/json/). Quasi tutta la configurazione di Caddy è contenuta in un singolo documento di configurazione, invece di essere sparsa tra flag CLI, variabili d'ambiente e un file di configurazione come con altri web server. Questo rende la gestione della configurazione del tuo server più semplice e riduce variabili/fattori nascosti. ## Documentazione completa Il nostro sito web ha la documentazione completa: **https://caddyserver.com/docs/** La documentazione è anche open source. Puoi contribuire qui: https://github.com/caddyserver/website ## Ottenere aiuto - Consigliamo alle aziende che usano Caddy di stipulare un contratto di supporto tramite [Ardan Labs](https://www.ardanlabs.com) prima che ce ne sia bisogno. - Una [sponsorizzazione](https://github.com/sponsors/mholt) fa molta strada! Possiamo offrire aiuto privato agli sponsor. Se Caddy sta portando benefici alla tua azienda, ti preghiamo di considerare una sponsorizzazione. Questo non solo aiuta a finanziare il lavoro a tempo pieno per garantire la longevità del progetto, ma fornisce alla tua azienda le risorse, il supporto e gli sconti di cui hai bisogno; oltre a essere un'ottima immagine per la tua azienda verso i tuoi clienti e potenziali clienti! - Gli individui possono scambiarsi aiuto gratuitamente sul nostro forum della community all'indirizzo https://caddy.community. Ricorda che le persone danno aiuto nel loro tempo libero e per buona volontà. Il modo migliore per ottenere aiuto è darlo per primo! Ti preghiamo di usare il nostro [issue tracker](https://github.com/caddyserver/caddy/issues) solo per segnalazioni di bug e richieste di funzionalità, cioè elementi di sviluppo concreti (le domande di supporto saranno di solito indirizzate ai forum). ## Informazioni Matthew Holt ha iniziato a sviluppare Caddy nel 2014 mentre studiava informatica alla Brigham Young University. (Il nome "Caddy" è stato scelto perché questo software aiuta con i compiti noiosi e mondani di servire il Web, ed è anche un unico posto dove organizzare insieme più cose.) Ben presto è diventato il primo web server a usare HTTPS automaticamente e per impostazione predefinita, e ora ha centinaia di contributori e ha servito trilioni di richieste HTTPS. **Il nome "Caddy" è un marchio registrato.** Il nome del software è "Caddy", non "Caddy Server" o "CaddyServer". Ti preghiamo di chiamarlo "Caddy" o, se desideri chiarire, "il web server Caddy". Caddy è un marchio registrato di Stack Holdings GmbH. - _Progetto su X: [@caddyserver](https://x.com/caddyserver)_ - _Autore su X: [@mholt6](https://x.com/mholt6)_ Caddy è un progetto di [ZeroSSL](https://zerossl.com), un'azienda di HID Global. L'hosting del repository dei pacchetti Debian è gentilmente fornito da [Cloudsmith](https://cloudsmith.com). Cloudsmith è l'unica soluzione di gestione pacchetti universale, completamente ospitata e cloud-native, che consente alla tua organizzazione di creare, archiviare e condividere pacchetti in qualsiasi formato, in qualsiasi luogo, con totale fiducia.