Installazione e Configurazione Base di Woodpecker CI su Ubuntu 26.04 LTS usando Docker Compose

da | Ago 27, 2026 | 0 commenti

 

Configurare una pipeline CI/CD self-hosted non deve necessariamente passare per GitHub Actions o per un servizio cloud a pagamento.

Woodpecker CI è un motore di continuous integration open source, leggero e pensato per chi vuole mantenere il pieno controllo dei propri workflow di build e test direttamente sul proprio server, senza vincolarsi a un provider esterno.

In questa guida vedremo come installare e configurare Woodpecker CI da zero su una macchina con Ubuntu 26.04 LTS (“Resolute Raccoon”), usando Docker Compose per orchestrare server e agent.

Affiancheremo a Woodpecker un’istanza locale di Gitea, così da ottenere un ambiente di test completamente self-hosted, senza dover dipendere da GitHub o da altri forge esterni.

Passo dopo passo partiremo dall’installazione di Docker Engine, passeremo per la creazione dell’applicazione OAuth che permette a Woodpecker di autenticarsi su Gitea, fino ad arrivare alla prima pipeline di test eseguita con successo.

Lungo il percorso affronteremo anche alcuni degli inciampi più comuni in un setup di questo tipo permessi errati sui volumi Docker, file YAML danneggiati da un editor poco accorto, Client ID OAuth non corrispondenti perché conoscerli in anticipo fa risparmiare parecchio tempo di debug.

PREREQUISITI

  • Serve un server (fisico, VPS o VM) con Ubuntu 26.04 LTS, accesso sudo.
  • Un nome di dominio puntato al server è raccomandato per usare HTTPS, ma non obbligatorio per una prova locale.

 

AGGIORNAMENTO DEL SISTEMA E INSTALLAZIONE DI DOCKER

Il pacchetto docker-compose-plugin non si trova nei repository standard di Ubuntu insieme a docker.io: arriva solo dal repository ufficiale di Docker, che va aggiunto a parte. Installare quindi Docker Engine direttamente da lì (è anche il metodo raccomandato da Docker stesso, più aggiornato del docker.io di Ubuntu):

 

# Prerequisiti

# Chiave GPG del repository Docker

# Aggiungi il repository Docker (usa in automatico il codename della tua Ubuntu)

Verificare con i seguenti comandi:

 

GENERAZIONE DEL SECRET CONDIVISO TRA SERVER E AGENT WOODPECKER

Eseguire il comando:

Annotarsi il Secret:

607582cba2b3d4e2a89da7ad8b806e117f1a12fbe44f676ffe2c32372aed21c

Copiare il valore: lo utilizzeremo per WOODPECKER_AGENT_SECRET

CREAZIONE DELLA STRUTTURA DEL PROGETTO E IL FILE DOCKER COMPOSE

Creare la struttura del progetto e il file docker-compose con i comandi:

Creare il file docker-compose.yml con il comando:

Salvare e chiudere il filem di configurazione

ATTENZIONE: sostituire SERVER_IP e IL_SECRET_GENERATO con i tuoi valori; i campi WOODPECKER_GITEA_CLIENT/SECRET e WOODPECKER_ADMIN li completeremo dopo aver creato l’app OAuth in Gitea

AVVIO DI GITEA E CREAZIONE DELL’UTENTE AMMINISTRATORE

Per ora avviare solo Gitea con il comando:

Dovremmo visualizzare un putput simile al seguente:

Aprire il browser su http://SERVER_IP:3000 comparirà la procedura guidata di installazione.

Lasciare tutti i valori predefiniti (usare SQLite, va benissimo per un uso locale/di test)

Nella sezione Impostazioni account amministratore creare il tuo utente admin (username, email, password).

Quindi cliccare Installare Gitea

Se è andato tutto a buon fine dovremmo visualizzare la Dashboard di Gitea

 

CREAZIONE DELL’APPLICAZIONE OAUTH IN GITEA PER WOODPECKER

Creare l’applicazione OAuth in Gitea per Woodpecker

Da amministratore andaree su http://SERVER_IP:3000/admin/settings/applications (oppure Impostazioni utenteApplicazioni se preferisci un’app a livello utente) e crea una nuova applicazione OAuth2:

Inserire le seguenti informazioni:

Nome applicazione: Woodpecker CI

Redirect URL: http://SERVER_IP:8000/authorize

Cliccare Crea Applicazione

Copiare le seguenti info:

Client ID: 3cf08282-49ff-46d4-9707-7bf6174ed82d

Client Secret: gto_66j26rf2li7vzqlkwdykedqpbt73ggnhpru4bz7rwjwebvisuyaa

Salva e copia il Client ID e il Client Secret mostrati (ATTENZIONE: il secret viene mostrato una sola volta).

Completa le tre variabili lasciate in sospeso nel file docker-compose.yml con sed:

Sostituire il-client-id-copiato, il-client-secret-copiato e il-tuo-username-gitea con i valori reali prima di eseguire i comandi.

 

AVVIO DI WOODPECKER (SERVER + AGENT)

Avviare Woodpecker con i seguenti comandi:

Posizionarsi nella cartella woodpcker con il comando:

Avviare Docker con il comando:

Dovremmo visualizzare un output simile al seguente:

Fare la verifica con il comando:

Verificare i Log con il comando:

ATTENZIONE: premere Ctrl+C per uscire dai log senza fermare i container.

 

PRIMO ACCESSO A WOODPECKER

Aprire da un qualsiasi browser il link http://SERVER_IP:8000

Cliccare Login e autorizzare l’accesso tramite il tuo account Gitea. Essendo l’utente indicato in WOODPECKER_ADMIN, sarai automaticamente amministratore di Woodpecker.

Se non dovesse mostrare la pagina di Login eseguire i comandi elencati di seguito:

 

Cliccare su Accedi a Woodpecker

Cliccare Autorizza Applicazione

Se è andato tutto a buon fine dovremmo visualizzare la Dashboard di Woodpecker come mostrato nell’ìimmagine sovrastante

 

CREAZIONE DI UN REPOSITORY DI TEST E COLLEGAMENTO ALLA PIPELINE

In Gitea (http://SERVER_IP:3000) creare un nuovo repository (es. test-ci) quindi clonarlo e aggiungere un file .woodpecker.yml.

Da browser: andare su http://192.168.80.34:3000 quindi fare login come admin cliccare sul + in alto a destra → Nuovo repository.

Nome: test-ci.

Spuntare Inizializza repository (così non è vuoto) e cliccare Crea Repository

Se è tutto OK dovremmo vedere una schermata come quella sovrastante

A questo punto da terminale eseguire i comandi elencati di seguito:

Dovremmo visualizzare il seguente output:

Quindi eseguire il comando:

Creare il file YML con il comando:

Quindi eseguire i comandi:

Collegarsi alla Dashboard di Woodpecker (http://SERVER_IP:8000)

Dalla dashboard di Woodpecker attivare il repository dalla lista cliccando su Aggiungi Repository

Cliccare Abilita

Cliccare Esegui Pipeline

 

COMANDI UTILI PER LA MANUTENZIONE

Di seguito una lista dei comandi utili per la manutenzione di Woodpecker

 

 

PRO E CONTRO DI WOODPECKER CI

Prima di lanciarsi nell’installazione vale la pena capire dove Woodpecker CI si posiziona rispetto alle alternative più note come Jenkins, GitHub Actions o GitLab CI.

PRO

  • Completamente self-hosted e open source (licenza AGPL v3): tutti i dati e le pipeline restano sulla propria infrastruttura, senza vendor lock-in e senza costi per utente o per minuto di build.
  • Architettura leggera e container-first: ogni step è semplicemente “un’immagine Docker + un comando”, il che lo rende facile da capire, da eseguire anche su hardware modesto e da far girare in container/Kubernetes con buon isolamento.
  • Supporto nativo a più forge: Gitea, Forgejo, GitHub, GitLab e Bitbucket, con integrazione OAuth2 e registrazione automatica dei webhook (come visto nella nostra configurazione con Gitea).
  • Funzionalità pratiche integrate: pipeline multiple nella cartella .woodpecker/, cron job nativi senza bisogno di trigger esterni, supporto ad architetture ARM.
  • Sviluppo attivo: nato come fork di Drone dopo il passaggio di quest’ultimo a una licenza BSL, riceve release e correzioni più frequenti rispetto al progetto originale.
  • Sintassi delle pipeline quasi identica a Drone, il che rende la migrazione da Drone particolarmente semplice.

CONTRO

  • Ecosistema di plugin più piccolo rispetto a GitHub Actions o GitLab CI: non esiste un marketplace ricco di integrazioni pronte all’uso, quindi spesso serve costruirsi il proprio step Docker.
  • Nessuna offerta gestita (SaaS): a differenza di GitHub Actions o GitLab CI, non c’è un servizio cloud “pronto all’uso” — tutta la gestione operativa (aggiornamenti, backup, sicurezza) resta a carico di chi lo installa, come stiamo facendo in questa guida.
  • Supporto solo community-driven: nessuna azienda dietro con SLA garantiti, a differenza per esempio di Drone (partnership con Harness). Documentazione e canali di supporto (Matrix, GitHub Issues) sono più piccoli rispetto a quelli di progetti più maturi.
  • Gestione dei secret piuttosto basilare: manca il rotation automatico o l’integrazione nativa con strumenti come HashiCorp Vault, e i controlli di accesso sono granulari solo a livello di repository.
  • Progetto relativamente giovane: essendo un fork di Drone, ha una storia più breve e una community più piccola rispetto a Jenkins o alle piattaforme CI dei grandi provider.

Per un uso personale, un piccolo team o un homelab proprio il caso della nostra installazione locale con Gitea questi limiti pesano poco a fronte dei vantaggi in termini di semplicità, controllo e costi.

Diventano invece un fattore da valutare con più attenzione in contesti enterprise con requisiti stringenti di compliance, supporto SLA o gestione avanzata dei segreti.

Articoli Recenti

Veeam Backup

Monitoring

Friends

  • My English Lab  English School
  • ChrSystem   Servizi ICT
  • Since 01  Kreative Graphics

Database

Networking

Autori

  • Raffaele Chiatto  Amministratore
  • Marco Valle  Autore
  • Angelo Lauria  Autore
  • Edoardo Prot  Autore
  • Davide D’Urso  Autore
Raffaele Chiatto

Raffaele Chiatto

Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi. Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare. Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.

Related Post

0 commenti

Invia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Virtualizzazione

Linux

Microsoft

Apple

Backup

Database

Security

Automazione