Parte IV — Copa, chão e cuidado

10 · O chão: empacotamento e operação

Um baobá vive séculos se o chão for bom. A mucua vive em escolas, pontos de cultura e casas de reza, longe de quem programa: instalar e atualizar tem de ser um comando só, e ela tem de se levantar sozinha depois de cair.

Arquivos para ler (repositório bbx-make-deb)

  1. COMO-USAR.txt — como gerar o pacote.
  2. build.sh — copia o backend e o build do front para a árvore e chama dpkg-deb; --vendor-wheels para instalação sem internet.
  3. debian-tree/DEBIAN/postinst — a instalação inteira.
  4. debian-tree/lib/systemd/system/*.service|*.timer.
  5. debian-tree/etc/nginx/sites-available/baobaxia.
  6. debian-tree/usr/sbin/baobaxia-enriquecimento — liga/instala OCR e Whisper.
  7. debian-tree/usr/share/doc/baobaxia/README.Debian — o manual da mucua.

O que o postinst faz

flowchart TD
    A[configure] --> B[Node ≥ 18?]
    B --> C[usuário baobaxia<br/>shell = git-annex-shell]
    C --> D[~/.ssh/authorized_keys pronto]
    D --> E[rsync do código para /opt/baobaxia]
    E --> F[venv + pip<br/>requirements + extras ou vendor-wheels]
    F --> G[backend.env com BBX_SECRET_KEY nova<br/>xmpp.env, frontend.env — só se não existem]
    G --> G2[rádio/TV? → BBX_CANAIS on/manual/off]
    G2 --> H[nginx: site baobaxia<br/>+ RTMP :1935 se há o módulo 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 existe?}
    K -- não --> L[bbx criar-galaxia<br/>pergunta UUID para reinstalar mucua existente]
    K -- sim --> M[verificar_legado.py: avisa dado antigo]
    L --> N[enriquecimento: OCR/Whisper?]
    M --> N
    N --> O[systemd: api, front, timers]
    O --> P[resumo em /etc/baobaxia/instalacao.html]

Regras que o script segue: nunca sobrescreve backend.env (o segredo não pode mudar depois que a mucua tem dados); cria a galáxia antes de subir a API (senão a API sobe com uma visão vazia); nunca trava esperando terminal (as perguntas têm 30 s e só aparecem se houver /dev/tty).

As variáveis. São mais de cem, e quase todas são ajuste fino. O backend.env novo vem agrupado por tema (núcleo, endereço público, sync, SSH/Tor, federação, enriquecimento, rádio/TV) só com as que uma mucua costuma mexer; a seção 4 do README.Debian explica essas e só lista as de ajuste fino; a referência completa, com padrões, é docs/baobaxia-configuracao.md no back. Atenção às três parecidas do endereço público: BBX_MUCUA_PUBLIC_URI (identidade), BBX_ORIGEM_PUBLICA (links absolutos — sem ela vale o Host da requisição) e BBX_AP_BASE_URL (ActivityPub).

Serviços

UnidadeO que fazQuando
baobaxia-apibbx api --host 0.0.0.0 --port 8000sempre, Restart=always
baobaxia-frontnode build/index.js em 127.0.0.1:3000sempre
baobaxia-sincronizar.timerbbx sincronizar (sync + pedidos)a cada 30 min
baobaxia-enriquecer.timerbbx enriquecer20 min depois do fim da rodada anterior
baobaxia-healthcheck.timerreinicia API/front que não respondem em 5 sa cada 2 min
baobaxia-xmpp-boto botinstalado desligado

Os serviços rodam com NoNewPrivileges, ProtectSystem=strict, ProtectHome, PrivateTmp e só escrevem em /var/lib/baobaxia, /var/log/baobaxia e /opt/baobaxia/back.

Gerar e atualizar

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

Antes de atualizar uma mucua antiga para a 3.3:

sudo -u baobaxia /opt/baobaxia/back/venv/bin/python \
    /opt/baobaxia/back/ferramentas/verificar_legado.py

Diagnóstico

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

Práticas

  1. Leia o postinst inteiro e marque cada passo que só roda na primeira instalação. O que acontece se a luz cair no meio de bbx criar-galaxia?
  2. Gere um .deb e liste o conteúdo (dpkg-deb -c). O .git foi junto?
  3. Instale numa máquina virtual Debian sem internet usando --vendor-wheels.
  4. Por que o nginx fecha /api/v3/xmpp/extauth para fora da máquina?
  5. Instale respondendo "não" à rádio/TV. O que muda no backend.env, em /etc/nginx/modules-enabled/ e no editor de um canal?

Para conversar

  • Quem, na comunidade, vai ler o instalacao.html? O que precisa estar escrito ali para essa pessoa?

ver este capítulo como saber