Guida a GitHub Codespaces per la scuola: programmare ovunque senza installare nulla
DIDATTICA · Area Docenti • GitHub Codespaces
✍ Autore: profgiagnotti | Programmare ovunque senza installare nulla

Guida a GitHub Codespaces per la scuola: programmare ovunque senza installare nulla

Come offrire agli studenti un ambiente di sviluppo completo direttamente nel browser, sfruttando i crediti gratuiti di GitHub Education, anche con PC datati e laboratori senza permessi di amministratore.

☁️ Codespaces💻 No install🎓 Education

1. Il problema dei laboratori scolastici

In molte scuole i computer del laboratorio sono vecchi, bloccati dall'amministratore o ripristinati a ogni riavvio. Installare Python, Java, un database o un editor richiede permessi che il docente non ha, e quello che lo studente prepara in classe a casa non c'è.

GitHub Codespaces sposta tutto nel cloud: ogni studente apre il proprio repository e ottiene in pochi secondi un ambiente di sviluppo completo (editor Visual Studio Code, terminale, linguaggio, estensioni) che gira su un server di GitHub. Sul PC serve solo un browser moderno.

FLUSSO CODESPACES
PC della scuola (anche vecchio) → browser → Codespace su server GitHub (editor + terminale + linguaggio)

Cosa ottieni:

  • nessuna installazione e nessun permesso di amministratore;
  • lo stesso ambiente per tutti, definito da un file nel repository;
  • il lavoro è accessibile da scuola, da casa, da un tablet o da un portatile qualsiasi;
  • il PC del laboratorio non fa nessun lavoro pesante.
💡 Nota

Colleghi, da ricordare bene: Codespaces è la soluzione quando il laboratorio è bloccato e non vi danno admin. PC vecchio + browser = ambiente professionale. Non fate questo errore: perdere 2 ore a installare Python su 25 PC. Con Codespaces, in 2 minuti sono tutti operativi.

2. Come funziona, in breve

  • Un codespace è una macchina virtuale temporanea associata a un repository.
  • L'ambiente si descrive in un file chiamato devcontainer.json (la stessa tecnologia dei Dev Containers vista nella guida a Docker).
  • Il codespace si ferma quando non lo usi e conserva i file. Il lavoro va salvato in GitHub con commit e push: un codespace eliminato non si recupera.
  • Si consuma un budget mensile di ore di calcolo (core hours) e di spazio su disco.

3. Crediti gratuiti: chi paga e quanto

I dati qui sotto provengono dalla documentazione ufficiale di GitHub consultata a ottobre 2026. Le quote e le condizioni cambiano: verifica sempre le pagine ufficiali prima di iniziare l'anno scolastico.

SituazioneCosa include
Studente verificato (GitHub Education), uso sul proprio account personaleFino a 180 core hours al mese, pari alla quota di un account GitHub Pro
Account personale gratuito (senza verifica)120 core hours al mese e 15 GB di spazio
Codespaces dentro GitHub ClassroomL'uso viene addebitato all'organizzazione del docente, non all'account personale dello studente
Docente verificato (Codespaces Education benefit)Una quota mensile gratuita da usare in GitHub Classroom. Quando la si attiva, GitHub limita le macchine dell'organizzazione a 2 core. Secondo la documentazione consultata il beneficio era in anteprima pubblica: verifica lo stato attuale

Come si contano le ore

Una core hour è un'ora di calcolo di un core. Con una macchina da 2 core, ogni ora di lavoro consuma 2 core hours:

CALCOLO CORE HOURS
180 core hours ÷ 2 core = 90 ore di lavoro al mese (studente verificato) 120 core hours ÷ 2 core = 60 ore di lavoro al mese (account gratuito)

Stima per una classe (da usare con la quota della tua organizzazione)

STIMA CLASSE
ore di lavoro = studenti × ore a lezione × lezioni al mese core hours = ore di lavoro × 2 Esempio: 25 studenti × 2 ore × 8 lezioni = 400 ore → 800 core hours al mese

Se usi Codespaces in Classroom confronta questo numero con l'allowance dell'organizzazione indicata nella tua pagina di fatturazione. Se non basta: assegna Codespaces solo ai compiti più impegnativi, usa l'account personale degli studenti verificati fuori da Classroom (vedi sezione 8), oppure ripiega su Docker locale (guida precedente).

🚨 Nota - crediti

Colleghi, da ricordare bene: controllate sempre la pagina di fatturazione dell'organizzazione prima di lanciare Codespaces a tutta la classe. L'esempio 25×2×8 = 800 core hours vi dice subito se la quota basta. Non fate questo errore: far creare codespace a tutti senza limite di spesa a 0 €/$. Impostate limite di spesa a 0 così se finisce la quota non si creano più.

4. Prerequisiti

Per il docente

  • Account GitHub personale e iscrizione a GitHub Education come docente (https://education.github.com/teachers), con documenti che provino il ruolo.
  • Un'organizzazione GitHub e una classe su GitHub Classroom (prima guida).
  • Un repository modello con il file .devcontainer/devcontainer.json (sezione 6).

Per gli studenti

  • Un account GitHub (verifica i requisiti di età e le regole della scuola, sezione 10).
  • Facoltativo ma utile: la verifica studente su GitHub Education per avere la quota personale da 180 core hours.

Per la rete della scuola

  • Un browser aggiornato e una connessione stabile.
  • Il referente informatico deve consentire l'accesso a GitHub e ai domini di Codespaces (ad esempio github.com e *.github.dev, oltre altri indicati nella documentazione ufficiale di GitHub per i firewall). Nel kit trovi un testo pronto da inviargli.

5. Configurazione dell'organizzazione e di Classroom

I nomi dei menu possono variare; la procedura generale è:

  1. Richiedi e ottieni la verifica come docente su GitHub Education.
  2. Nella tua organizzazione controlla che Codespaces sia abilitato per i membri o per la classe (impostazioni dell'organizzazione, sezione Codespaces).
  3. Imposta un limite di spesa pari a 0 €/$ nelle impostazioni di fatturazione, così i codespace non possono generare costi oltre la quota gratuita: se la quota finisce, semplicemente non si possono creare nuovi codespace.
  4. Su GitHub Classroom, quando crei l'assignment, scegli GitHub Codespaces come editor supportato (Supported editor). Se richiesto, accetta l'abilitazione per l'organizzazione: GitHub aggiungerà la regola che limita le macchine a 2 core.
  5. Nel repository modello inserisci il file devcontainer.json (sezione 6).
  6. Verifica tutto con un account di prova: accetta il compito come se fossi uno studente e apri il codespace.

6. Il file devcontainer.json: l'ambiente descritto in un file

Il file va salvato come .devcontainer/devcontainer.json nella radice del repository modello. Ogni studente lo riceve con il compito e il codespace viene creato esattamente con quelle istruzioni. Gli esempi qui sotto sono nel Kit scaricabile.

6.1 Python con PyTest

DEVCONTAINER PYTHON
{ "name": "Python 3.12", "image": "mcr.microsoft.com/devcontainers/python:1-3.12-bookworm", "hostRequirements": { "cpus": 2 }, "postCreateCommand": "if [ -f requirements.txt ]; then pip install -r requirements.txt; else pip install pytest; fi", "customizations": { "vscode": { "extensions": ["ms-python.python"] } } }

6.2 Node.js

DEVCONTAINER NODE
{ "name": "Node.js 20", "image": "mcr.microsoft.com/devcontainers/javascript-node:1-20-bookworm", "hostRequirements": { "cpus": 2 }, "postCreateCommand": "if [ -f package.json ]; then npm install; fi", "forwardPorts": [3000], "customizations": { "vscode": { "extensions": ["dbaeumer.vscode-eslint"] } } }

6.3 Java con Maven

DEVCONTAINER JAVA
{ "name": "Java 21 + Maven", "image": "mcr.microsoft.com/devcontainers/java:1-21-bookworm", "features": { "ghcr.io/devcontainers/features/java:1": { "version": "none", "installMaven": "true", "installGradle": "false" } }, "hostRequirements": { "cpus": 2 }, "customizations": { "vscode": { "extensions": ["vscjava.vscode-java-pack"] } } }

6.4 C e C++

DEVCONTAINER C++
{ "name": "C/C++", "image": "mcr.microsoft.com/devcontainers/cpp:1-bookworm", "hostRequirements": { "cpus": 2 }, "customizations": { "vscode": { "extensions": ["ms-vscode.cpptools"] } } }

6.5 PHP + MySQL + phpMyAdmin (con Docker Compose)

Per ambienti con più servizi il devcontainer.json punta a un file docker-compose.yml, esattamente come nella guida a Docker: lo studente lavora nel container app e il database db parte da solo. La configurazione completa (compose, estensioni e porte inoltrate) è nel kit, cartella php-mysql/. All'interno del codespace l'host del database è db.

6.6 Cosa significano le righe principali

RigaFunzione
imageL'immagine di partenza, con linguaggio e strumenti. Scegli una versione fissata
featuresComponenti aggiuntivi (ad esempio Maven) da installare sopra l'immagine
hostRequirements.cpusLe risorse minime richieste: 2 mantiene i consumi bassi
postCreateCommandComando eseguito una volta alla creazione (installazione delle dipendenze)
forwardPortsPorte da rendere raggiungibili dal browser (ad esempio un sito di prova)
customizations.vscode.extensionsEstensioni di VS Code installate automaticamente per tutti
📌 Da ricordare bene

Se hai già un docker-compose.yml (guida precedente), puoi riutilizzarlo come ambiente del codespace: l'ambiente resta identico in locale, nel cloud e nei test automatici. Colleghi, questo è potentissimo: stesso file per Docker locale, Codespaces e Actions.

7. Cosa fa lo studente: il flusso in 6 passi

  1. Apre il link del compito di GitHub Classroom e accetta l'assignment.
  2. Nel proprio repository clicca Code → Codespaces → Create codespace on main (se Classroom propone il pulsante di apertura in Codespaces può usare quello).
  3. Attende circa un minuto: si apre VS Code nel browser con terminale, file e ambiente pronti.
  4. Scrive il codice e lo prova nel terminale integrato (python main.py, npm test, mvn test …).
  5. Salva il lavoro su GitHub: pannello Source Control → Commit → Sync Changes (equivale a git push).
  6. Ferma il codespace a fine lezione, per non consumare ore inutilmente.

Nel kit trovi una scheda per lo studente, di una pagina, con questi passaggi da stampare o pubblicare.

8. Gestire i crediti senza sorprese

  • Fermare sempre il codespace a fine lezione: dal menu in basso a sinistra, oppure dalla pagina https://github.com/codespaces. Per impostazione predefinita si ferma da solo dopo un periodo di inattività (di solito 30 minuti; verifica le impostazioni).
  • Eliminare i codespace inutilizzati: quelli non usati per un certo periodo vengono rimossi automaticamente (di solito dopo 30 giorni), ma conviene ripulire gli esercizi conclusi.
  • Usare macchine da 2 core: bastano per Python, Node, Java e C a livello scolastico.
  • Controllare il consumo: nelle impostazioni di fatturazione dell'organizzazione si vede l'utilizzo di Codespaces.
  • Distribuire il carico: gli studenti verificati possono usare Codespaces anche sul proprio account personale per progetti propri e lavoro a casa, senza toccare la quota dell'organizzazione.
  • Strumento di ripiego senza costi di calcolo: premendo il tasto . (punto) in un repository GitHub si apre github.dev, un editor web leggero. Permette di modificare file e fare commit, ma non ha terminale e non esegue codice: ideale per correggere un README o un file di testo.

9. Codespaces con le altre guide della serie

StrumentoCome si combina con Codespaces
GitHub ClassroomImposti Codespaces come editor dell'assignment: ogni studente apre il proprio repository già pronto
GitHub ActionsA ogni push i test automatici girano su GitHub e il docente vede il segno di spunta o la croce, come nella guida precedente. Lo studente può lanciare gli stessi test nel terminale del codespace prima della consegna
DockerLo stesso docker-compose.yml serve per lavorare in locale, nel codespace e nei test: un solo ambiente per tutto

10. Privacy, età e uso in classe

  • Età minima: per usare GitHub gli studenti devono rispettare i requisiti di età previsti dalle condizioni d'uso. Verifica le regole attuali e le autorizzazioni richieste dalla scuola per gli studenti minorenni.
  • Dati nel cloud: codice e file degli studenti risiedono sui server di GitHub. Informa famiglie e studenti, e coordinati con il referente privacy e con il dirigente scolastico.
  • Repository privati: mantieni privati i repository dei compiti.
  • Segreti: non inserire password o chiavi reali nel repository o nel codespace.
  • Strumenti di intelligenza artificiale: a seconda del piano e della disponibilità, gli studenti verificati possono avere accesso a GitHub Copilot (da aprile 2026 le nuove attivazioni dei piani Student e Pro sono state sospese e poi riaperte gradualmente: verifica lo stato attuale). Decidi e comunica in anticipo le regole della classe sul suo uso nelle consegne.
  • Verifiche in presenza: un codespace ha accesso a Internet. Per le prove valutate in aula valuta come gestire documentazione, strumenti e collaborazione.
🚨 Nota - privacy e verifiche

Colleghi, da ricordare bene: repository privati + informativa privacy + regole chiare su Copilot. Per verifiche in classe, decidete prima se permettere Internet nel codespace. Non fate questo errore: usare codespace con Internet libero durante verifica senza averlo comunicato.

11. Problemi frequenti

SintomoCausa probabileSoluzione
La pagina non si carica o resta biancaIl firewall della scuola blocca i domini di CodespacesInvia al referente informatico l'elenco dei domini (kit)
Pulsante Codespaces mancante nel repositoryCodespaces non abilitato per l'organizzazione o per quel repositoryControlla le impostazioni dell'organizzazione e dell'assignment
Non si può creare un codespace per esaurimento quotaCore hours terminate o limite di spesa a 0Attendi il rinnovo mensile, riduci l'uso o usa un'alternativa locale
L'ambiente non ha le librerie previsteErrore in postCreateCommand o requirements.txtLeggi il log di creazione e correggi il file, poi Rebuild Container
Lo studente ha perso il lavoroIl codespace è stato eliminato senza pushRicorda: commit + push prima di chiudere
Il sito di prova non si aprePorta non inoltrataControlla forwardPorts e la scheda Ports del terminale
Le scorciatoie da tastiera non funzionano come in VS CodeIl browser intercetta alcuni comandiProva un altro browser o usa il menu dei comandi (F1)
Lentezza durante la lezioneConnessione della scuola congestionataDistribuisci l'avvio, o riduci le estensioni installate

12. Kit pronto all'uso (scaricabile)

Il kit allegato contiene:

  • devcontainer/python/, node/, java/, cpp/: i file devcontainer.json pronti da copiare;
  • devcontainer/php-mysql/: configurazione con Docker Compose (PHP, MySQL, phpMyAdmin);
  • scheda-studente.md: la scheda di una pagina con i passaggi per lo studente;
  • richiesta-referente-informatico.md: il testo da inviare a chi gestisce la rete della scuola;
  • LEGGIMI.md: istruzioni di installazione e riepilogo.

Come usarlo in 5 passi:

  1. Scegli la cartella del tuo linguaggio e copia il suo devcontainer.json in .devcontainer/devcontainer.json nel repository modello.
  2. Aggiungi codice di partenza e README della consegna.
  3. Su GitHub Classroom crea l'assignment scegliendo GitHub Codespaces come editor.
  4. Prova tutto con un account di prova, dalla creazione del codespace al commit.
  5. Distribuisci la scheda per lo studente e invia la richiesta al referente informatico, se serve.

13. Checklist finale

CHECKLIST FINALE
☐ Verifica docente su GitHub Education completata ☐ Codespaces abilitato per l'organizzazione e limite di spesa impostato ☐ .devcontainer/devcontainer.json nel repository modello, con versioni fissate ☐ Assignment con editor GitHub Codespaces ☐ Prova completa con un account studente ☐ Domini di GitHub e Codespaces consentiti dal firewall della scuola ☐ Scheda studente distribuita (commit, push e stop del codespace) ☐ Stima del consumo di core hours rispetto alla quota disponibile ☐ Regole di classe su privacy, intelligenza artificiale e uso nelle verifiche

🧰 Adesso prova a realizzare ciò che hai letto con il kit che ho preparato per te

Ho preparato un kit scaricabile con tutti i file devcontainer.json, l'ambiente PHP+MySQL con Docker Compose, la scheda studente e la richiesta per il referente informatico. Scaricalo e provalo subito nella tua Classroom.

⬇️ Scarica il Kit GitHub Codespaces per Docenti

ZIP con python, node, java, cpp, php-mysql, scheda-studente e LEGGIMI.

🏫 Hub Area Docenti

Torna all'hub con tutte le guide tecniche e normativa per docenti.

← Area Docenti HUB

📚 Il tuo prossimo passo ora

Crea un repo di prova, aggiungi .devcontainer/devcontainer.json del tuo linguaggio dal kit, pusha e apri il Codespace dal browser. Se vedi VS Code con terminale e linguaggio pronto in 60 secondi, sei pronto per la classe. Se vuoi, scrivi nei commenti che materia insegni: ti suggerisco il devcontainer più adatto.