Skip to content

Fase 2: build da ISO na tkldev e testes end-to-end #5

Open

Description

@marcos-mendez

Clonar em /turnkey/fab/products/opencloud na tkldev, make root.patched -> make (build/product.iso). Testar: firstboot interativo e preseed, login admin via https, upload de arquivo, turnkey-oc status/version/logs, update N-1 -> N com rollback em checksum corrompido, segredos únicos por instalação. Atenção: 30GB livres em disco na tkldev.

Activity

  1. marcos-mendez commented on Jul 21, 2026

    @marcos-mendez
    MemberAuthor

    Build da primeira ISO iniciado na tkldev (log: /root/opencloud-build.log).

    Itens a validar nesta fase, vindos das revisões de código/segurança:

    • Confirmar escopo do OC_INSECURE=true (deve afetar só o hop interno nginx↔opencloud, não a verificação TLS de chamadas outbound) — M5 da revisão de segurança
    • Testar ProtectSystem=strict + ReadWritePaths=/var/lib/opencloud no opencloud.service com systemd-analyze security e serviço real — L6
    • Validar formato/flags reais de opencloud init --insecure true e opencloud idm resetpassword no binário v7.3.0
    • Confirmar que o firstboot ordena 20regen antes do primeiro start do serviço (cenário do CRITICAL: IDM bootstrapando com senha de build — mitigado com rm do boltdb, validar na prática)
    • Headers de segurança nginx (HSTS etc.) — verificar o que o OpenCloud já emite antes de duplicar — L7
    • Fluxo update: instalar 7.2.2 de propósito e rodar turnkey-oc update para 7.3.0; testar rollback com sha256 corrompido
  2. marcos-mendez commented on Jul 21, 2026

    @marcos-mendez
    MemberAuthor

    ✅ Primeira ISO buildada e testada (2026-07-21)

    Build: make na tkldev → build/product.iso (507 MB). Cópia nomeada: /mnt/isos/turnkey-opencloud-18.1-trixie-amd64.iso (sha256 1556f6fd...).

    Dois fixes de build durante o processo: TERM ausente em ssh não-interativo (exportar TERM=xterm) e ordem do chown antes do opencloud init (commit ad24780).

    Testes em container systemd-nspawn (squashfs da ISO):

    • ✅ Boot: opencloud e nginx ativos; backend 9200 → HTTP 200; nginx 443 → 200
    • ✅ Firstboot preseedado (/etc/inithooks.conf): 20regen regenerou opencloud.yaml (0640 opencloud:opencloud), 40opencloud aplicou senha (YAML quoted) e domínio (OC_URL + /etc/hosts), serviço reiniciado saudável
    • ✅ turnkey-oc version (delegação) → 7.3.0; turnkey-oc status OK
    • ✅ turnkey-oc update version 7.2.2 (downgrade proposital): download + sha256 + install + switch OK; health check reprovou o downgrade e o rollback automático restaurou 7.3.0 com serviço saudável — mecanismo validado com binários reais
    • ✅ turnkey-oc update → detectou 7.3.0 como latest e no-opou
    • ✅ Teste negativo: sem DNS, update falha limpo sem tocar o symlink

    Pendências desta issue (precisam de VM real com tty):

    • Firstboot interativo via di-live (inithooks.service exige tty1; no nspawn falha com status=208/STDIN — artefato do ambiente)
    • Instalação completa da ISO em VM (KVM/Proxmox)
    • Itens do comentário anterior (OC_INSECURE scope, ProtectSystem=strict, headers nginx)
  3. marcos-mendez commented on Jul 23, 2026

    @marcos-mendez
    MemberAuthor

    ✅ Firstboot interativo validado em VM real + fix do nginx (2026-07-23)

    Primeira VM real bootada da ISO (live mode, Proxmox): inithooks interativos funcionaram de ponta a ponta — senha aplicada (YAML quoted), domínio gravado em OC_URL + /etc/hosts, opencloud ativo com todos os serviços internos em 127.0.0.1.

    Bug encontrado e corrigido (PR #11): nginx failed no boot com SSL key values mismatch — corrida com o 15regen-sslcert da common (nginx leu o par cert/chave no meio da regeneração; o hook só reinicia serviços ativos). Fix: drop-in Restart=on-failure + restart incondicional do nginx no fim do 40opencloud. Verificado o diagnóstico na VM (modulus cert == chave pós-regen; restart manual → HTTPS 200 com UI).

    ISO v2 rebuildada e distribuída:

    • tkldev: /mnt/isos/turnkey-opencloud-18.1-trixie-amd64.iso
    • Proxmox dc01-br1: cephfs:iso/turnkey-opencloud-18.1-trixie-amd64.iso
    • sha256 c7a04cea9ffea9cae24880bff7031f061e8673915f765ef7c118fe771fd82d2c (conferido nos dois destinos)
    • Drop-in e opencloud.py novos confirmados dentro do squashfs

    Também validado: troca de OC_URL pós-firstboot para domínio de teste sslip.io (issuer OIDC acompanha). Ideia registrada: subcomando turnkey-oc domain <fqdn> para automatizar isso.

    Falta para fechar esta issue: instalar a ISO v2 no disco (di-live) e confirmar que o firstboot passa 100% sem intervenção — inclusive nginx de primeira.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions