Parte IV — Chioma, suolo e cura
10 · Il suolo: pacchetto e gestione
Un baobab vive secoli se il suolo è buono. La mucua vive in scuole, punti di cultura e case di preghiera, lontano da chi programma: installare e aggiornare deve essere un solo comando, e deve rialzarsi da sola dopo essere caduta.
File da leggere (repository bbx-make-deb)
COMO-USAR.txt— come generare il pacchetto.build.sh— copia il backend e la build del front nell'albero e chiamadpkg-deb;--vendor-wheelsper installare senza internet.debian-tree/DEBIAN/postinst— l'intera installazione.debian-tree/lib/systemd/system/*.service|*.timer.debian-tree/etc/nginx/sites-available/baobaxia.debian-tree/usr/sbin/baobaxia-enriquecimento— attiva/installa OCR e Whisper.debian-tree/usr/share/doc/baobaxia/README.Debian— il manuale della mucua.
Cosa fa il postinst
flowchart TD
A[configure] --> B[Node ≥ 18?]
B --> C[utente baobaxia<br/>shell = git-annex-shell]
C --> D[~/.ssh/authorized_keys pronto]
D --> E[rsync del codice in /opt/baobaxia]
E --> F[venv + pip<br/>requirements + extras o vendor-wheels]
F --> G[backend.env con nuova BBX_SECRET_KEY<br/>xmpp.env, frontend.env — solo se non esistono]
G --> G2[radio/TV? → BBX_CANAIS on/manual/off]
G2 --> H[nginx: sito baobaxia<br/>+ RTMP :1935 se c'è il modulo e BBX_CANAIS ≠ off]
H --> I[avahi: baobaxia.local]
I --> J["/usr/local/bin/bbx (wrapper --api-url)<br/>baobaxia-healthcheck"]
J --> K{credenciais.yaml esiste?}
K -- no --> L[bbx criar-galaxia<br/>chiede l'UUID per reinstallare una mucua esistente]
K -- sì --> M[verificar_legado.py: avvisa di dati vecchi]
L --> N[arricchimento: OCR/Whisper?]
M --> N
N --> O[systemd: api, front, timer]
O --> P[riepilogo in /etc/baobaxia/instalacao.html]
Regole che lo script segue: non sovrascrive mai backend.env (il segreto non può cambiare quando la mucua ha già dati); crea la galassia prima di avviare l'API (altrimenti l'API parte con una vista vuota); non resta mai bloccato ad aspettare un terminale (le domande hanno 30 s e compaiono solo se c'è /dev/tty).
Le variabili. Sono più di cento, e quasi tutte sono di regolazione fine. Il nuovo backend.env arriva raggruppato per tema (nucleo, indirizzo pubblico, sync, SSH/Tor, federazione, arricchimento, radio/TV) solo con quelle che una mucua di solito tocca; la sezione 4 del README.Debian spiega queste ed elenca soltanto quelle di regolazione fine; il riferimento completo, con i valori predefiniti, è docs/baobaxia-configuracao.md nel back. Attenzione alle tre simili dell'indirizzo pubblico: BBX_MUCUA_PUBLIC_URI (identità), BBX_ORIGEM_PUBLICA (link assoluti — senza, vale l'Host della richiesta) e BBX_AP_BASE_URL (ActivityPub).
Servizi
| Unità | Cosa fa | Quando |
|---|---|---|
baobaxia-api | bbx api --host 0.0.0.0 --port 8000 | sempre, Restart=always |
baobaxia-front | node build/index.js su 127.0.0.1:3000 | sempre |
baobaxia-sincronizar.timer | bbx sincronizar (sync + richieste) | ogni 30 min |
baobaxia-enriquecer.timer | bbx enriquecer | 20 min dopo la fine del giro precedente |
baobaxia-healthcheck.timer | riavvia API/front che non rispondono entro 5 s | ogni 2 min |
baobaxia-xmpp-bot | il bot | installato e spento |
I servizi girano con NoNewPrivileges, ProtectSystem=strict, ProtectHome, PrivateTmp e scrivono solo in /var/lib/baobaxia, /var/log/baobaxia e /opt/baobaxia/back.
Generare e aggiornare
cd bbx-v3-front && npm ci && npm run build
cd ../bbx-make-deb
./build.sh --back ../bbx-v3-back --front-build ../bbx-v3-front/build --version 3.3.0
sudo apt install ./dist/baobaxia_3.3.0_all.deb
Prima di aggiornare una mucua vecchia alla 3.3:
sudo -u baobaxia /opt/baobaxia/back/venv/bin/python \
/opt/baobaxia/back/ferramentas/verificar_legado.py
Diagnostica
journalctl -u baobaxia-api -f
systemctl list-timers 'baobaxia-*'
bbx tor-diagnostico
bbx diagnostico-shell
curl -s http://127.0.0.1:8000/api/v3/health
Pratiche
- Leggi tutto il
postinste segna ogni passo che gira solo alla prima installazione. Cosa succede se va via la luce nel mezzo dibbx criar-galaxia? - Genera un
.debed elencane il contenuto (dpkg-deb -c). Il.gitè finito dentro? - Installalo su una macchina virtuale Debian senza internet usando
--vendor-wheels. - Perché
nginxchiude/api/v3/xmpp/extauthverso l'esterno della macchina? - Installa rispondendo "no" alla radio/TV. Cosa cambia nel
backend.env, in/etc/nginx/modules-enabled/e nell'editor di un canale?
Per parlarne
- Chi, nella comunità, leggerà
instalacao.html? Cosa deve esserci scritto per quella persona?
