Compilazione dai sorgenti Esistono diverse opzioni per compilare Caddy, se avete bisogno di una build personalizzata (ad esempio con dei plugin): Git: Compilazione dal repository Git xcaddy: Compilazione utilizzando xcaddy Docker: Creazione di un'immagine Docker personalizzata Requisiti: Go 1.20 o successivo La sezione File di supporto del pacchetto contiene istruzioni per gli utenti che hanno installato Caddy utilizzando il comando APT su sistemi derivati da Debian, ma che necessitano dell'eseguibile personalizzato per le loro operazioni. Git Requisiti: Go installato (vedi sopra) Clonate il repository: git clone "https://github.com/caddyserver/caddy.git" Se non avete git, potete scaricare il codice sorgente come archivio di file da GitHub. Ogni release dispone anche di snapshot dei sorgenti. Compilazione: cd caddy/cmd/caddy/ go build I programmi in Go sono facili da compilare per altre piattaforme. È sufficiente impostare le variabili d'ambiente GOOS, GOARCH e/o GOARM se diverse. (Consultate la documentazione di Go per i dettagli.) Ad esempio, per compilare Caddy per Windows quando non siete su Windows: GOOS=windows go build O allo stesso modo per Linux ARMv6 quando non siete su Linux o su ARMv6: GOOS=linux GOARCH=arm GOARM=6 go build xcaddy Il comando xcaddy è il modo più semplice per compilare Caddy con le informazioni sulla versione e/o con i plugin. Requisiti: Go installato (vedi sopra) Assicuratevi che xcaddy sia nel vostro PATH Non è necessario scaricare il codice sorgente di Caddy (verrà fatto automaticamente). Quindi, compilare Caddy (con le informazioni sulla versione) è semplice come: xcaddy build Per compilare con i plugin, usate --with: xcaddy build \ --with github.com/caddyserver/nginx-adapter \ --with github.com/caddyserver/ntlm-transport@v0.1.1 Come potete vedere, è possibile personalizzare le versioni dei plugin con la sintassi @. Le versioni possono essere un nome di tag, uno SHA di commit o un branch. La compilazione cross-platform con xcaddy funziona allo stesso modo del comando go. Ad esempio, per la compilazione incrociata per macOS: GOOS=darwin xcaddy build Docker Potete usare l'immagine :builder come scorciatoia per compilare un nuovo binario di Caddy con moduli personalizzati: FROM caddy:<version>-builder AS builder RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ xcaddy build \ --with github.com/caddyserver/nginx-adapter \ --with github.com/hairyhenderson/caddy-teapot-module@v0.0.3-0 FROM caddy:<version> COPY --from=builder /usr/bin/caddy /usr/bin/caddy Assicuratevi di sostituire <version> con l'ultima versione di Caddy per iniziare. Notate la seconda istruzione FROM: produce un'immagine molto più piccola sovrapponendo semplicemente il binario appena compilato all'immagine standard di caddy. Il builder usa xcaddy per compilare Caddy con i moduli forniti, in modo simile al processo descritto sopra. Le opzioni --mount=type=cache,target=/go/pkg/mod e --mount=type=cache,target=/root/.cache/go-build vengono utilizzate per memorizzare nella cache le dipendenze dei moduli Go e gli artefatti della compilazione, rispettivamente, velocizzando le build successive. Il flag è una funzionalità di Docker, non di xcaddy. Per usare Docker Compose, consultate il nostro file compose.yml raccomandato e le istruzioni d'uso. File di supporto del pacchetto per build personalizzate per Debian/Ubuntu/Raspbian Questa procedura mira a semplificare l'esecuzione di binari caddy personalizzati mantenendo i file di supporto del pacchetto caddy. Questa procedura consente agli utenti di sfruttare la configurazione predefinita, i file del servizio systemd e il completamento automatico bash del pacchetto ufficiale. Requisiti: Installate il pacchetto caddy seguendo queste istruzioni Compilate il vostro binario caddy personalizzato (vedi sezioni precedenti), oppure scaricate una build personalizzata Il vostro binario caddy personalizzato deve trovarsi nella directory corrente Procedura: sudo dpkg-divert --divert /usr/bin/caddy.default --rename /usr/bin/caddy sudo mv ./caddy /usr/bin/caddy.custom sudo update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.default 10 sudo update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.custom 50 sudo systemctl restart caddy Spiegazione: dpkg-divert sposterà il binario /usr/bin/caddy in /usr/bin/caddy.default e imposterà una deviazione nel caso in cui un pacchetto voglia installare un file in questa posizione. update-alternatives creerà un collegamento simbolico dal binario caddy desiderato a /usr/bin/caddy. systemctl restart caddy spegnerà la versione predefinita del server Caddy e avvierà quella personalizzata. Potete passare dal binario caddy personalizzato a quello predefinito eseguendo il comando seguente e seguendo le informazioni a schermo. Quindi, riavviate il servizio Caddy. update-alternatives --config caddy Per aggiornare Caddy da questo momento in poi, potete eseguire caddy upgrade. Questo comando tenta di scaricare una build con gli stessi plugin della build attuale, con l'ultima versione di Caddy, e sostituisce quindi il binario corrente con quello nuovo.