Open Source · Self-Hosted · Flask + SQLite

La wiki privata
per il tuo team

BananaWiki è un portale wiki self-hostable costruito con Flask e SQLite. Include pagine Markdown, cronologia, Canvas, Kanban, chat, permessi e plugin opzionali in un'unica app. L'obiettivo è restare semplice da installare e da gestire.

python3.9+ flask3.1 databaseSQLite test3.100+

Cos'è BananaWiki?

Una wiki privata per team che vogliono documentazione, pianificazione e collaborazione di base in un'app self-hosted.

๐Ÿง  Pagine wiki

Editor Markdown con anteprima dal vivo, cronologia versioni, categorie gerarchiche, upload immagini, navigazione sequenziale, salvataggio automatico delle bozze e tag di difficoltà.

๐ŸŽจ Strumenti extra

Canvas, Kanban, chat, embed video, allegati e pagine custom condividono account e permessi con il resto della wiki.

๐Ÿ” Self-hosted

Puoi eseguirlo su un VPS, mini PC o portatile. Un'app Flask, un database SQLite, Gunicorn + nginx davanti come opzionali. Nessuna telemetria o analytics di terze parti.

๐Ÿงฉ Plugin

Sono disponibili 33 plugin integrati, tra cui assistente AI, strumenti CAD, audit log, badge, bozze, login/provider OAuth, governance pagine, file manager, backup Telegram, text-to-speech, riunioni video e programma beta-tester.

๐Ÿ—๏ธ

Stato attuale

BananaWiki è utilizzabile in ambienti self-hosted. È attualmente usato internamente presso Canalescuola e da un piccolo gruppo di collaboratori associati.

La piattaforma hosting può creare istanze wiki isolate per test o uso interno. Ogni istanza ha database, file e account admin propri.

BananaWiki in azione

Un'interfaccia moderna e funzionale, progettata per la produttività.

Wizard di configurazione iniziale di BananaWiki Wizard di setup
Schermata onboarding BananaWiki con modalità Easy e Advanced Onboarding iniziale
Pagina intro BananaWiki per avviare il tour guidato live Avvio tour per ruolo
Tour guidato live BananaWiki con overlay sulla home reale della wiki Tour live su pagine reali
Editor Markdown di BananaWiki con anteprima live Editor Markdown con anteprima live
Impostazioni admin di BananaWiki Impostazioni admin
Schermata Bulk Markdown BananaWiki con import ed export Markdown piu asset Import/export Bulk Markdown
Bacheche Kanban di BananaWiki Bacheche Kanban
Canvas visivo di BananaWiki Canvas visivo
Sistema di chat integrato di BananaWiki Chat integrata
Pagina gestione plugin di BananaWiki con 33 plugin integrati Gestione plugin (33 integrati)
Dashboard stato Text-to-Speech BananaWiki con copertura generazione e righe per pagina Dashboard stato Text-to-Speech
Pagina di login di BananaWiki Pagina di login

Funzionalità principali

Le parti principali dell'app, senza toni da brochure.

๐Ÿงญ

Onboarding iniziale guidato

La release di giugno 2026 aggiunge un flusso Easy / Advanced in cui gli admin scelgono plugin iniziali, accessi, tema, lingua interfaccia e primi utenti prima di avviare un tour live nella wiki reale. La modalità Easy include Text-to-Speech di default, con ripresa automatica limitata per errori transitori di generazione. La v1.2.8 introduce il ruolo Owner, la visuale Easy Wiki, gli strumenti di sviluppo e molti altri miglioramenti.

๐Ÿ“น

Riunioni video

Il plugin Meetings integrato crea stanze video con link condivisibili, avvio di gruppo, controlli camera/microfono, condivisione schermo e chat durante la chiamata — per collaborazione in tempo reale direttamente dalla wiki senza servizi esterni.

๐Ÿ“ฆ

Easy Deployment App

Un lanciatore desktop portatile per utenti non tecnici che necessitano di una wiki standalone locale senza installare Python o eseguire comandi server. Crea una cartella bananawiki con pulsanti Avvia/Stop, strumenti di esportazione/importazione/ eliminazione dati, condivisione LAN con codice QR, rilevamento connettività internet e modalità rete per aula opzionale per dispositivi studenti.

๐ŸŽฏ

Tour live per ruolo

Il tour apre pagine BananaWiki reali e può mostrare prospettive user, editor e admin senza cambiare i permessi effettivi dell'utente.

๐Ÿ‘ฅ

Editing collaborativo più sicuro

Le heartbeat API mostrano quando qualcun altro sta modificando una pagina, mentre Wiki, Canvas e Kanban sono collegati più direttamente per mantenere insieme pianificazione e documentazione. I profili utente hanno anche ricevuto il polish per le celebrazioni di compleanno.

๐Ÿ”‘

SSO OAuth & Unione Account

BananaWiki può fungere da provider di identità OAuth 2.0 per permettere a siti esterni di usarlo per il login, e BananaWiki stessa può autenticarsi tramite Google, GitHub o qualsiasi provider OAuth personalizzato. Gli amministratori possono unire due account BananaWiki preservando tutti i dati — pagine, assegnazioni, badge e cronologia chat. Il flusso di unione account supporta la doppia approvazione e un log di audit completo.

โœ๏ธ

Editor pagine

L'editor Markdown split-pane con anteprima live, toolbar di formattazione, modale upload immagini e link picker interno supporta autosave bozze con rilevamento conflitti, navigazione sequenziale a capitoli per materiale didattico e un sistema di tag di difficoltà (base / intermedio / avanzato) con filtri nell'explorer. Un livello smart editor aggiunge una toolbar contestuale per tabelle (inserisci/elimina righe e colonne), un menu comandi / per inserimento rapido di intestazioni, tabelle, blocchi codice, immagini, video, link, elenchi, citazioni e righe orizzontali, auto-pairing di parentesi e virgolette, pulizia formattazione, fullscreen, conteggio parole/caratteri e formattazione pedice/apice.

๐Ÿ—‚๏ธ

Categorie gerarchiche

Le categorie sono un albero con riordino drag-and-drop, figli annidati, controlli espandi/comprimi tutto e restrizioni di permesso per categoria. Restringi chi può leggere o modificare pagine in rami specifici dell'albero senza influenzare il resto della wiki.

๐Ÿ“œ

Cronologia completa con diff

Ogni modifica crea uno snapshot. Sfoglia la cronologia completa, visualizza due versioni affiancate con diff viewer e ripristina qualsiasi punto con un click. L'autosave bozze significa che non perdi mai il lavoro a metà.

๐Ÿ“ฆ

Portabilità Bulk Markdown

Gli admin possono importare file Markdown o alberi ZIP nelle categorie, e ora esportare le pagine non-home come archivio Markdown organizzato per cartelle categoria, con upload referenziati, allegati pagina e manifest. È content-only per scelta, separato dai backup completi del database.

๐Ÿ“Ž

Allegati autenticati

Carica immagini, PDF e file direttamente nelle pagine. Gli allegati sono serviti tramite route Flask autenticate — mai esposti dalla cartella statica. Il modale upload gestisce drag-and-drop, anteprime e validazione dimensioni.

๐ŸŒ

Pagine custom su URL arbitrari

Pagine definite dall'admin su qualsiasi URL con 19 tipi di contenuto: Markdown, HTML, redirect, download file, embed video, embed iframe, endpoint JSON e altro. Ideale per landing page, risorse pubbliche e endpoint di integrazione.

๐Ÿ†

Badge e riconoscimenti

Assegna badge manualmente o tramite regole di assegnazione automatica basate sull'attività utente. I badge appaiono sui profili utente con un sistema di notifiche. Combinali con l'heatmap dei contributi per un quadro completo dell'impegno degli utenti.

๐Ÿค–

BananaAI & BananaCAD

Due plugin flagship: un assistente AI che redige pagine e risponde a domande dai tuoi contenuti wiki (porta la tua chiave API), e un viewer CAD 3D leggero per file STL, OBJ e DXF allegati alle pagine wiki. Attivabili/disattivabili senza riavvio.

๐Ÿ“

Valutazioni e quiz

Allega blocchi quiz a qualsiasi pagina wiki con domande a scelta multipla, vero/falso e testo libero. Correzione automatica con tracciamento risultati per utente. Ideale per materiale didattico e valutazioni in organizzazioni educative come Canalescuola.

๐Ÿ”Š

Narrazione Text-to-Speech

Genera narrazioni MP3 scaricabili delle pagine wiki. Sono disponibili voci in italiano e inglese, e quando il plugin e disattivato la funzione viene nascosta e bloccata correttamente.

Funzionalità principali

Le funzioni principali per pagine, pianificazione, media e amministrazione.

๐Ÿ“

Pagine Wiki

Editor Markdown con anteprima live, toolbar di formattazione, upload immagini e link picker interno. Cronologia completa delle modifiche con possibilità di visualizzare e ripristinare versioni precedenti. Categorie gerarchiche con drag-to-reorder.

  • Markdown con live preview
  • Allegati autenticati
  • Cronologia e revert
  • Tag di difficoltà
  • Navigazione sequenziale
  • Draft con autosave
  • Editor smart โ€” toolbar tabelle, menu / comandi, auto-pairing, fullscreen, conteggio parole, pedice/apice
๐ŸŽจ

Canvas

Canvas visivo per creare diagrammi nodo-link direttamente dentro BananaWiki. Ogni layout è un grafo JSON di nodi e archi che puoi organizzare, collegare ed esportare. I nodi possono referenziare pagine wiki, link esterni, immagini, video e testo libero.

  • Nodi: testo, pagine wiki, link, immagini, video
  • Archi con etichette
  • Viewport persistente
  • Integrazione pagine wiki
  • Export .canvas.json
  • Permessi per layout
๐Ÿ“‹

Kanban

Bacheche Kanban integrate per la gestione visiva di task e progetti. Colonne, ticket con descrizione Markdown, priorità, assegnatario, scadenza, allegati, cronologia modifiche e commenti con thread.

  • Drag-and-drop tra colonne
  • Ticket con Markdown
  • Priorità, assegnatari, scadenze
  • Allegati e commenti
  • Condivisione per utente/ruolo
  • Colonne predefinite automatiche
๐Ÿ’ฌ

Collaborazione

Chat dirette e di gruppo con allegati, profili utente con avatar, biografia e mappa contributi (heatmap), sistema di badge con notifiche e regole di assegnazione automatica, annunci globali.

๐Ÿ”’

Amministrazione

Quattro ruoli (user, editor, admin, owner), permessi granulari per utente, restrizioni per categoria, modalità lockdown, codici invito, export/import ZIP completo e backup automatici su Telegram.

๐Ÿงฉ

33 Plugin integrati

Abilita/disabilita i plugin senza riavviare: annunci, valutazioni, allegati, audit, badge, BananaAI, BananaCAD, canvas, chat, pagine personalizzate, tag difficoltà, bozze, easter egg, gruppi, kanban, cronologia pagine, sync Telegram, account temporanei, text-to-speech e altro. SDK (bananawiki_sdk) per plugin di terze parti.

๐ŸŒ

Pagine personalizzate

Pagine definite dall'admin su URL arbitrari con 19 tipi di contenuto: Markdown, HTML, redirect, download file, video embed e altro. Ideali per landing page e risorse pubbliche.

๐Ÿ”Š

Text-to-Speech

Genera narrazioni MP3 condivisibili delle pagine wiki on demand. Voci in italiano e inglese disponibili, con hardening dello stato disabilitato per evitare finestre vuote quando il plugin e spento.

Catalogo Plugin

33 plugin first-party già nella scatola, tutti attivabili da Admin โ†’ Plugin senza riavviare il server.

๐Ÿค–
BananaAI flagship
Assistente AI integrato per redigere pagine e rispondere a domande sui tuoi contenuti.
๐Ÿ“
BananaCAD flagship
Viewer CAD leggero per upload STL, OBJ e DXF allegati alle pagine wiki.
๐Ÿ“ฃ
Annunci core
Banner globali con scadenza, targeting per audience e tracciamento dismiss.
๐Ÿ”‘
API Service core
REST API con token, audit log, operazioni bulk e controlli admin programmabili.
๐Ÿ“
Valutazioni core
Blocchi quiz allegati alle pagine con correzione automatica e risultati per utente.
๐Ÿ“Ž
Allegati core
Upload autenticati serviti tramite Flask, mai dalla cartella statica.
๐Ÿ“œ
Audit Log core
Cronologia tamper-evident delle azioni admin, login e cambi di permesso.
๐Ÿ…
Badge core
Assegnazione manuale o via regole; notifiche e visualizzazione sul profilo.
๐Ÿงช
Beta Tester core
Programma di invito e accettazione per lanciare feature sperimentali in sicurezza.
๐Ÿชช
Provider OAuth BananaWiki core
Trasforma BananaWiki in identity provider OAuth 2.0 per siti esterni.
๐ŸŽจ
Canvas core
Layout visivi a grafo JSON: nodi per pagine, link, immagini, video, testo libero.
๐Ÿ’ฌ
Chat core
Messaggi diretti e di gruppo, allegati, moderazione, filtro parole bannate.
๐ŸŒ
Pagine Custom core
Pagine admin su URL arbitrari con 19 tipi di contenuto — redirect, embed, download, ecc.
๐Ÿงฏ
Rallentamento eliminazioni core
Periodo di grazia di 48 ore prima della cancellazione definitiva, con restore admin.
๐ŸŽš
Tag Difficoltà core
Tag di livello (base / intermedio / avanzato) con filtri nell'explorer.
๐Ÿ’พ
Bozze core
Salvataggio automatico con rilevamento conflitti: non perdi mai il lavoro a metà.
๐Ÿช™
EA Mode fun
Modalità satirica a crediti con saldo, prestiti e grant admin.
๐Ÿฅš
Easter Egg core
Una piccola pagina nascosta che premia gli admin curiosi. Disattivabile.
๐Ÿ’Œ
Feedback core
Feedback degli utenti per pagina con coda moderazione, ban e risposte admin.
๐Ÿ—‚
File Manager core
File manager web per sfogliare, scaricare, modificare, rinominare e spostare file.
๐ŸŒฟ
Git Override core
Overlay stile Git per pagine wiki: commit log, blame e reti di contributo.
๐Ÿ“‹
Kanban core
Bacheche, colonne, ticket con Markdown, allegati, commenti, priorità.
๐Ÿ“น
Riunioni core
Stanze video con link condivisibili, avvio di gruppo, controlli camera/microfono, condivisione schermo e chat durante la chiamata.
๐Ÿ”ฅ
Linus Torvalds Overdrive fun
Review qualità pagine, dashboard performance e rilevamento flame-war.
๐Ÿ”
Login OAuth core
Signup e login con Google, GitHub o provider OAuth custom.
๐Ÿงญ
Governance pagine core
Prenotazioni, protezione pagine e approvazione contributi per editing controllato.
๐Ÿ•ฐ
Cronologia pagine core
Versioni per pagina con snapshot, diff viewer e ripristino in un click.
๐Ÿ“จ
Sync Telegram core
Backup automatici cifrati verso una chat Telegram — split, compressione, toggle allegati.
โณ
Account temporanei core
Account e ruoli con scadenza automatica per sessioni di classe o visitatori.
๐Ÿ”Š
Text-to-Speech core
Genera narrazioni MP3 scaricabili di qualsiasi pagina wiki. Voci IT + EN, default nel percorso Easy, rinforzato quando e disabilitato.
๐Ÿ“บ
Terry Davis Mode core
Omaggio a TempleOS — tema retro ad alto contrasto attivabile per sessione.
๐Ÿ“ฆ
Export dati utente core
Download di tutti i dati personali in archivio ZIP.
๐Ÿชช
Profili & Heatmap core
Profili utente con avatar, bio e heatmap dei contributi in stile GitHub.

L'elenco canonico vive nella directory plugins/builtin/.

Piattaforma di Hosting

L'app hosting può eseguire istanze BananaWiki separate per utenti o team diversi su un solo server.

Build June 24 2026 (v1.2.8). Gli screenshot qui sotto sono stati rigenerati da rotte locali BananaWiki e hosting: dashboard, console admin, dettaglio istanza, analytics e creazione.
Dashboard admin bWiki Hosting con statistiche piattaforma, codici invito e gestione account Dashboard admin
Pagina dettaglio istanza bWiki Hosting con stato, strumenti admin e link analytics Dettaglio istanza e strumenti admin
Grafici analytics per istanza bWiki Hosting con richieste, pagine viste ed errori Analytics per istanza
Form creazione nuova istanza bWiki Hosting Crea nuova istanza

๐Ÿ  Istanze wiki isolate

Ogni istanza wiki funziona come processo BananaWiki indipendente con il proprio database SQLite, cartella upload e account amministratore. Le istanze non condividono dati runtime, upload o utenti admin.

๐Ÿงช Provalo internamente

Gli utenti interni di Canalescuola e i collaboratori associati possono creare istanze wiki sulla piattaforma hosting per test o uso interno.

๐Ÿ‘ค Un'istanza per utente

Gli utenti si registrano sul portale di hosting, creano un'istanza wiki e ottengono un URL unico per accedervi. Ogni persona (o team) può avere fino a 5 istanze per default, con quote, limiti di storage e date di scadenza configurabili.

๐ŸŽจ Tema per utente

Ogni utente può passare dai tema scuro a chiaro dalla barra di navigazione. La preferenza viene salvata per account e si applica immediatamente a tutte le pagine di hosting senza ricaricare la pagina.

๐Ÿ”ง Due modalità di deploy

Modalità porta — ogni istanza ottiene una porta unica (es. http://tuo-server:6001). Nessun dominio o DNS necessario, funziona ovunque. Modalità sottodominio — ogni istanza ottiene un sottodominio (es. https://mio-team.wiki.example.com). Richiede DNS wildcard.

1.000
Istanze max per server
500 MB
Storage default per istanza
5
Istanze per account utente
0
Servizi esterni necessari

Dettagli hosting

L'app hosting gestisce account, istanze isolate, health check, analytics, licenze, demo preset e azioni admin da interfaccia browser.

๐ŸŽ›๏ธ

Gestione Istanze

Ferma, riavvia, termina, force-restart, duplica o trasferisci la proprietà di qualsiasi istanza. Imposta date di scadenza personalizzate, estendi le prove o rendi le licenze indefinite. Ripristina istanze terminate dagli archivi di grace period. Visualizza i log Gunicorn live per istanza senza SSH. Ogni operazione è registrata in un log di audit tamper-evident.

๐Ÿšซ

Sistema di Sospensione

Sospensioni permanenti o a tempo con durata configurabile, ragioni visibili o invisibili e display del countdown. La sospensione sposta automaticamente la scadenza in avanti così gli utenti non perdono mai giorni di prova. Audit trail completo di ogni azione di sospensione.

๐Ÿ‘ฅ

Gestione Utenti

Crea account direttamente, promuovi o declassa admin, sospendi o elimina account con pulizia automatica delle istanze. Le sospensioni temporizzate possono avere ragioni visibili o nascoste e scadono automaticamente. Operazioni bulk gestiscono più account o istanze contemporaneamente, con controllo signup via codici invito e limiti per codice.

๐Ÿ“„

Editor Landing Page

File browser integrato e editor inline per gestire il sito web pubblico. Carica file, crea directory, modifica HTML/CSS/JS/Markdown direttamente dal browser. Niente SSH o pipeline di deployment esterne necessarie.

๐Ÿ”‘

Gestione Licenze

Licenze di prova auto-generate firmate Ed25519 per le nuove istanze. Genera, carica, assegna, revoca o rendi perpetue le licenze. Carica file licenza esistenti o crea di nuovi con nomi, periodi di validità e note personalizzati.

๐Ÿ“Š

Analytics per Istanza

Grafici giornalieri di richieste, pagine viste ed errori per ogni wiki ospitata. Finestra scorrevole da 1 a 365 giorni. Identifica i pattern di utilizzo e risolvi i problemi a colpo d'occhio.

๐ŸŽญ

Demo Preset

Cinque template wiki pre-tematizzati (Amministrazione, Studenti, Azienda, Evento, Scuola) con articoli, bacheche Kanban e diagrammi Canvas. Crea un'istanza di esempio per demo o test.

๐Ÿ“ฆ

Import Istanze

Importa backup ZIP BananaWiki esistenti come nuove istanze ospitate. Tre formati di archivio supportati con rilevamento automatico. Il processo di import gestisce il ripristino del database, l'estrazione degli allegati e l'assegnazione delle porte senza intervento manuale.

๐Ÿงฏ

Bandwidth fuse free-tier

Il kit ops opzionale monitora il traffico outbound mensile su VM Azure e può fermare l'istanza prima che la banda free-tier diventi a pagamento. Include unit systemd, dry-run e istruzioni di ripristino.

Form bWiki Hosting per creare una istanza con sottodominio, modalità dominio e credenziali admin Creazione istanza — provisioning dal browser con quote integrate
Dettaglio istanza bWiki Hosting con controlli proprietario, stato e strumenti admin Operazioni istanza — controlli utente e admin nella stessa vista
Pagina analytics bWiki Hosting con grafici richieste ed errori Analytics operative — traffico, pagine viste ed errori per wiki
Dashboard admin bWiki Hosting con statistiche piattaforma, account e codici invito Amministrazione piattaforma — account, inviti e controlli istanza

Strumenti Interni & Infrastruttura

Schermate operative e processi in background per eseguire BananaWiki e la piattaforma hosting su un singolo server.

Gli admin possono gestire impostazioni runtime, disponibilità plugin, stato TTS, istanze ospitate, analytics, codici invito, licenze e azioni di recovery dal browser.
Schermata impostazioni admin BananaWiki con pannelli di configurazione Amministrazione wiki — impostazioni, policy, backup e controlli runtime
Tabella gestione plugin BananaWiki con toggle dei plugin integrati Gestione plugin — strumenti integrati attivabili dagli admin
Pagina BananaWiki Bulk Markdown per import ed export Bulk Markdown — export/import content-only per pagine e asset
Pagina stato TTS BananaWiki con schede completate, in lavorazione, in attesa e fallite Stato TTS — generazione, cache e retry
Bacheca Kanban BananaWiki con colonne e ticket Kanban — bacheche e ticket dentro la wiki
Diagramma Canvas BananaWiki con nodi e collegamenti Canvas — diagrammi e pianificazione dentro BananaWiki
๐Ÿฉบ

Health Monitor Istanze

Un thread in background controlla tutte le istanze in esecuzione ogni 5 minuti. La validazione PID usa il boot-id tracking e la verifica /proc/{pid}/cmdline per rilevare il riutilizzo dei PID dopo i riavvii. Ripristino automatico, escalation lazy-recovery e health watch post-restart aiutano a riavviare le istanze non sane.

โšก

Reverse Proxy a Sottodominio

Middleware WSGI che instrada le richieste *.BASE_DOMAIN alla porta corretta dell'istanza. Circuit breaker per istanza si aprono dopo fallimenti ripetuti e servono una splash “Avvio in corso…” branded in meno di 1 ms. I limiti di concorrenza impediscono a una singola istanza lenta di bloccare la piattaforma. Il middleware legge il modello dati hosting e instrada le richieste senza file nginx per ogni istanza.

๐Ÿ“จ

Engine Backup Telegram

Backup guidati dalle modifiche con debouncing intelligente basato su priorità. Archivi ZIP grandi vengono automaticamente suddivisi per il limite di 20 MB di Telegram e trasmessi in streaming per evitare di caricare interi file in RAM. Circuit breaker dopo fallimenti consecutivi. Backup giornalieri programmabili. L'engine osserva le mutazioni dei dati e attiva i backup al livello di priorità configurato.

๐Ÿ“ฆ

Instance Lifecycle Manager

Lancia processi Gunicorn per istanza con porte, cartelle dati e file PID isolati. Semaforo globale (16 operazioni concorrenti) previene l'esaurimento delle risorse. Backup completo sqlite3.backup() per la duplicazione, import ZIP in tre formati e motore di policy quota per limiti admin vs. utente. Creazione, avvio, spegnimento e terminazione delle istanze sono gestiti da un singolo orchestratore che rispetta i limiti di concorrenza e pulisce in caso di fallimento.

๐ŸŽญ

Demo Preset

Cinque template wiki pre-tematizzati (Amministrazione, Studenti, Azienda, Evento, Scuola) con articoli di esempio, bacheche Kanban, diagrammi Canvas, categorie e utenti.

๐Ÿ›ก๏ธ

Layer di Sicurezza

Protezione CSRF su ogni mutazione, protezione bot con campi honeypot e token temporizzati, confronto password a tempo costante, rate limiting per IP e per utente, CSP nonce su tutti gli script inline, operazioni file anti-path-traversal e log di audit tamper-evident. Il layer di sicurezza copre sia la wiki che la piattaforma di hosting — la stessa disciplina applicata coerentemente su entrambe le applicazioni.

๐Ÿ”‘

Firma Licenze Ed25519

Ogni nuova istanza riceve una licenza di prova firmata crittograficamente generata con Ed25519. Le licenze codificano il nome dell'istanza, il periodo di validità e l'autore del software — verificabili offline senza lookup nel database. La console admin permette di generare, assegnare, revocare ed estendere le licenze, o renderle perpetue per i deployment permanenti.

๐Ÿ“Š

Pipeline Analytics Richieste

Un middleware leggero registra ogni richiesta HTTP nelle tabelle SQLite per istanza. La pagina analytics aggrega i conteggi giornalieri di richieste, pagine viste ed errori su una finestra scorrevole configurabile da 1 a 365 giorni. Nessun servizio di analytics esterno, nessun tracciamento JavaScript — solo conteggio richieste lato server che rispetta la privacy by design.

Architettura & Privacy

BananaWiki è infrastruttura volutamente noiosa. Un'app Flask, un file SQLite, niente message broker, niente job queue esterna, nessuna dipendenza da SaaS.

๐Ÿงฑ Stack single-process

L'intera wiki è un'applicazione Flask 3.1. SQLite gira in modalità WAL per letture concorrenti, Gunicorn gestisce i worker in produzione e nginx davanti è opzionale per TLS. Niente da scalare orizzontalmente al primo giorno — il path supportato è lo scaling verticale su un VPS piccolo.

  • Un processo Python per istanza
  • SQLite WAL — letture concorrenti, scritture serializzate
  • Niente Redis, RabbitMQ, Celery, S3 o KV esterni

๐Ÿ›ก Difesa a strati

Sessioni e password hashing werkzeug, token CSRF su ogni form mutante, decoratori di rotta consapevoli del ruolo, rate limiting per rotta, filtro parole bannate sui contenuti utente e un log di audit tamper-evident delle azioni admin.

  • Token CSRF validati server-side
  • Rate limiting per rotta (in-memory)
  • Markdown sanificato con Bleach
  • Modalità single-session e lockdown

๐Ÿ”’ I tuoi dati restano tuoi

BananaWiki non chiama casa, non carica analytics di terze parti e non spedisce telemetria. Le integrazioni opzionali (backup Telegram, BananaAI) sono esplicitamente opt-in e configurate dall'admin in Impostazioni sito.

  • Niente analytics, niente tracking pixel
  • Nessun controllo licenza che chiama casa
  • I backup restano dove li metti tu
  • Sorgente AGPL-3.0

๐Ÿฉบ Operations

Operations ship-it-on-a-Tuesday: restart del server in un click da Admin โ†’ Impostazioni โ†’ Avanzate con cooldown di 60s, export e import ZIP completi con tre modalità di conflitto, export/import Bulk Markdown content-only per alberi di pagine e asset, backup automatici Telegram e un'API Banana Mode per la diagnostica.

  • Restart nginx + Gunicorn in un click
  • Export & import ZIP con strategie di merge
  • Export/import Bulk Markdown per pagine e asset
  • Snapshot di backup automatici via Telegram
  • API diagnostica Banana Mode

Sistema di ruoli

Controllo degli accessi granulare con quattro livelli progressivi, override per singolo utente e restrizioni per categoria sopra.

1

User

Accesso in sola lettura a pagine wiki, canvas e bacheche kanban condivise. Può commentare, reagire e modificare il proprio profilo.

2

Editor

Tutto quello che può fare l'user, più creare, modificare ed eliminare pagine wiki, gestire categorie e prenotare pagine in checkout.

3

Admin

Gestione completa: utenti, impostazioni sito, plugin, backup, import/export, audit log, restart server e annunci.

4

Protected Admin

Un admin che non può essere declassato, eliminato, password-reset o cacciato da altri amministratori — safety latch per l'admin fondatore.

Domande Frequenti

Le risposte brevi. Quelle lunghe stanno nella directory docs/.

BananaWiki è gratis? Che licenza ha?
Sì — BananaWiki è gratuito e open source sotto AGPL-3.0. Puoi usarlo, modificarlo e self-hostarlo senza pagare nulla. Se lo offri come servizio di rete devi pubblicare le tue modifiche con la stessa licenza.
Servono servizi cloud per farlo girare?
No. L'intero stack è un processo Python e un file SQLite. Un piccolo VPS, un mini PC o anche un Raspberry Pi bastano. Le integrazioni opzionali come backup Telegram o BananaAI sono opt-in e mai obbligatorie.
Come si confronta la piattaforma di hosting con un self-host manuale?
La piattaforma di hosting (hosting/) è a sua volta un'app Flask separata che lancia istanze isolate di BananaWiki per ogni account. Ogni istanza ha il suo DB SQLite, la sua cartella upload e il suo admin, identica a un self-host manuale. Esiste per team che vogliono un solo server per ospitare molte wiki indipendenti senza gestirle a mano.
Posso migrare da un'altra wiki?
Sì per gli alberi Markdown. Gli admin possono usare Bulk Markdown Import per caricare file Markdown o archivi ZIP, ed esportare pagine non-home con asset referenziati dalla stessa schermata. L'import/export ZIP completo del sito è documentato in docs/operations.md.
Quanto può crescere una singola istanza?
SQLite scala più di quanto si pensi — centinaia di migliaia di pagine e diversi gigabyte di allegati sono ampiamente nel range su un singolo VPS. La piattaforma di hosting limita le istanze a 500 MB di default, ma il limite è configurabile per istanza da Admin โ†’ Manage (o ora direttamente dalla pagina di dettaglio dell'istanza).
Funziona offline / su rete air-gapped?
Sì. Niente CDN, niente font esterni, niente analytics di terze parti, nessun controllo licenza. Tutto è bundlato con l'installazione. L'unico traffico in uscita è quello che tu attivi (backup Telegram, chiamate API BananaAI, ecc.).
Dove segnalo bug o chiedo nuove feature?
Contatta il team di sviluppo direttamente. Le PR sono benvenute — vedi la sezione "Contribuire" del README.
Come viene testato?
Il repo include una suite pytest di 3.100+ test che copre rotte, permessi, plugin, piattaforma di hosting e migrazioni. Esegui con make test (suite completa, ~16 minuti) o python -m pytest tests/<file>.py -v per un singolo modulo.

La Storia

Febbraio 2026

Nasce BananaWiki

Luca Zani, studente delle superiori, inizia a costruire BananaWiki come parte del suo PCTO (Percorsi per le Competenze Trasversali e l'Orientamento) presso Canalescuola a Bolzano. L'Officina Tecnologica, il laboratorio tecnologico di Canalescuola, aveva bisogno di una piattaforma per fornire materiale tecnico agli studenti dei corsi di saldatura, stampa 3D, taglio laser e altre discipline tecnologiche.

Feb–Mag 2026

Sviluppo attivo

Luca sviluppa il software in sede presso Canalescuola durante il suo PCTO. Il progetto cresce fino a includere editor Markdown, sistema di permessi a 4 livelli, chat, kanban, canvas, 33 plugin integrati e un SDK per plugin esterni. Il lavoro conta per le ore PCTO di Luca e fornisce a Canalescuola una piattaforma wiki per i propri laboratori.

Maggio 2026

Uso interno e open source

BananaWiki viene utilizzato internamente presso Canalescuola e da collaboratori associati. La piattaforma di hosting abilita il deployment multi-tenant con istanze wiki isolate per utente. Luca e Canalescuola restano buoni amici e collaboratori.

Giugno 2026

Ruolo Owner, modalità Easy Wiki e Strumenti di Sviluppo

La versione 1.2.8 introduce il ruolo Owner (in sostituzione di protected_admin), la visuale Easy Wiki con modalità semplificate per wiki, kanban e canvas, la modalità EasyWiki per hosting e una suite completa di Strumenti di Sviluppo (13 strumenti per wiki, 16 per hosting). Supporto formati audio/video MP5/MP7, upload automatico immagini su canvas, leaderboard migliorato, profili utente potenziati, nuovo preset demo Comune e UI impostazioni perfezionata.

Giugno 2026

Sistema approvazione account e rate-limiting quote

La versione 1.2.6 introduce la gestione dati dell'Easy Deployment App (esportazione, importazione, eliminazione), rilevamento connettivita internet, date di scadenza build e modalita performance TTS tramite variabile ambiente. Un nuovo worker TTS inline e soglie hardware piu conservative rendono i deployment portatili e in classe efficienti fin dal primo avvio.

Giugno 2026

Release polish e onboarding

Il lavoro di giugno si concentra su un primo avvio più chiaro e su una collaborazione quotidiana più sicura: onboarding, tour live per ruolo, indicatori di editing attivo, controlli espandi/comprimi categorie, hardening Text-to-Speech quando disabilitato, generazione locale con worker Piper, collegamenti migliori tra Wiki / Canvas / Kanban, miglioramenti alla recovery e agli export archivio della piattaforma hosting, polish del tooling di migrazione, riunioni video e una Easy Deployment App portatile.

Changelog

Punti salienti mensili della cronologia del progetto. Vedi CHANGELOG.md e HISTORY.md nel repository per il dettaglio completo versione per versione.

Giugno 2026

Ruolo Owner, modalità Easy Wiki e Strumenti di Sviluppo

v1.2.8 โ€” "Push It to Git": Il ruolo Owner sostituisce protected_admin in 79 file. Visuale Easy Wiki con modalità semplificate per wiki/kanban/canvas. Modalità EasyWiki per hosting con toggle per istanza. Strumenti di Sviluppo: 13 strumenti per wiki (cache manager, DB health, error log, sandbox markdown, diff pagine, query explorer, debug permessi, grafo plugin, tester rate-limit, rebuild indici, ispettore sessioni, debug template, timeline utente, tester webhook) e 16 per hosting (backup manager, azioni bulk, config diff, ispettore DB, migrazione DB, DNS checker, clonatore istanze, log viewer, profiler performance, plugin health, monitor rate-limit, monitor risorse, analizzatore storage, audit utenti). Supporto formati MP5/MP7. Upload automatico immagini su canvas. Preset demo Comune. Miglioramenti leaderboard e profili. UI impostazioni perfezionata.

Giugno 2026

SSO OAuth, unione account e miglioramenti Easy Deployment

v1.2.6 โ€” "Push It to Git": BananaWiki è ora un provider di identità OAuth 2.0 โ€” i siti esterni possono usare BananaWiki per il login, e BananaWiki può accedere tramite Google, GitHub o qualsiasi provider OAuth. Funzionalità unione account permette agli amministratori di combinare due account BananaWiki preservando tutti i dati (pagine, assegnazioni, badge). Easy Deployment App: esportazione/importazione/eliminazione dati con formato archivio unificato, date di scadenza build con blocco all'avvio, rilevamento connettività internet e fallback porta. TTS: supporto BW_TTS_PERFORMANCE_MODE, soglie hardware conservative e worker inline. Correzioni tema per pagina login, Kanban e Canvas. Miglioramenti pipeline CI e packaging.

Maggio 2026

Pronti per la produzione e piattaforma hosting

Piattaforma hosting multi-tenant con isolamento istanze wiki per utente, gestione ciclo di vita istanze, circuit breaker e reverse proxy nginx. Sistema di internazionalizzazione con 1.057 chiavi di traduzione italiano, pipeline traduzioni JSON e language manager. Ciclo completo rebrand (BananaWiki → bWiki → BananaWiki). Hardening produzione: CSP nonce, rate limiting in-memory, ottimizzazione Gunicorn, servizio systemd, supporto IPv6, auto-recovery SQLite e CI GitHub Actions. Espansione ecosistema plugin: EA Mode, File Manager, OAuth Provider, Assessments, Linus Overdrive, Terry Davis Mode e Easter Egg. API Service con REST API basata su token, SDK userbot e sistema documentazione wiki integrato.

Aprile 2026

Strumenti visivi e maturità plugin

Bacheche Kanban con gestione ticket completa, colonne drag-and-drop, commenti con thread e permessi per bacheca. Layout Canvas visuali basati su nodi con sync in tempo reale, cronologia versioni e resize multidirezionale. API plugin con sistema completo di hook e slot su 33 plugin integrati. BananaAI, BananaCAD, Badge, Annunci, Feedback, Rallentamento Eliminazioni, File Manager, Easter Egg e altri plugin. Refactoring Flask app factory per modularità, split database in 28+ moduli dedicati. Pagine personalizzate con 19 tipi di contenuto, impostazioni accessibilità, sistema bozze con autosave e navigazione mobile-responsive.

Marzo 2026

Funzionalità di team ed espansione

Messaggistica diretta e chat di gruppo, profili utente con avatar e heatmap, protezione pagine e prenotazioni, restrizioni accesso categorie per editor, sistema annunci, sistema feedback e sistema badge. Architettura plugin con scoperta, gestione ciclo di vita e 15 plugin iniziali. Login OAuth, ruoli e permessi personalizzati, programma beta tester, account temporanei, export dati utente stile GDPR e ricerca AJAX. Allegati pagine, drag-and-drop immagini, tag difficoltà, albero categorie, embedding video ed export PDF. App monolitica suddivisa in componenti modulari (28+ moduli database, 15+ file route).

Febbraio 2026

Fondamenta principali

Commit iniziale e applicazione Flask + SQLite completa con autenticazione, CRUD pagine, rendering Markdown e pannello admin. Editor Markdown split-pane con anteprima live, cronologia pagine con revert, bozze/autosave e upload immagini. Revisione sicurezza: fix XSS, prevenzione SQL injection, password hashing timing-safe, protezione CSRF e header CSP. Integrazione Gunicorn, supporto SSL/HTTPS e servizio systemd. Sync/backup Telegram, easter egg banana, rate limiting, supporto fusi orari e impostazioni favicon.

Quick Start

Operativo in meno di un minuto.

๐Ÿ–ฅ๏ธ Sviluppo locale

cd BananaWiki
make dev

Crea un virtualenv, installa le dipendenze e avvia il server di sviluppo su http://127.0.0.1:5001.

๐Ÿš€ Produzione

python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
./start.sh

Avvia Gunicorn in produzione. In alternativa usa sudo ./install.sh per un'installazione completamente automatizzata.

โ˜๏ธ Piattaforma di Hosting

make hosting-dev
# oppure
sudo ./hosting/install.sh

Avvia il portale hosting multi-tenant su http://localhost:5099. Il primo account viene automaticamente promosso ad admin della piattaforma.

โšก Primo avvio

  1. Avvia l'app
  2. Apri il browser — redirect automatico a /setup
  3. Crea l'account amministratore
  4. Configura il sito da Admin → Site Settings

Stack tecnologico

Backend
Python 3.9+ · Flask 3.1
Database
SQLite (modalità WAL)
Frontend
HTML/CSS/JS puro
WSGI
Gunicorn (prod) · Server dev Flask
Auth
Sessioni + werkzeug password hashing
Markdown
Python-Markdown + sanitizzazione Bleach
Test
pytest · 3.100+ test
Servizi esterni
Nessuno — tutto gira in locale

Documentazione

Scegli un argomento. Tutta la documentazione è disponibile nella directory docs/.

Prova BananaWiki

BananaWiki può essere installato in self-hosting o testato tramite la piattaforma hosting. È già usato internamente presso Canalescuola.