> ## Documentation Index
> Fetch the complete documentation index at: https://docs.basaltic.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Acesso ao console

> A transcrição de inicialização, uma captura de tela e uma sessão serial interativa para quando a rede estiver desligada.

Três endpoints, para três situações diferentes, e cada um requer sua própria ação do IAM — ler um log de inicialização, tirar uma foto da tela e segurar um teclado dentro do convidado não são deliberadamente a mesma concessão.

<Tabs>
  <Tab title="Console">
    **Connect** no cabeçalho da instância oferece três rotas: **SSH** — *Do seu terminal*, que monta o comando para você — **Serial** — *Console de texto no navegador* — e **Screenshot** — *Console gráfico*.

    <Warning>
      A transcrição de inicialização não tem controle de console. Nada no console da web lê a saída do console; **Serial** anexa uma sessão ao vivo, e isso precisa da instância em execução. Para um convidado que falhou no caminho para cima — o caso para o qual a transcrição existe — lê-lo é apenas API.
    </Warning>
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    GET /v1/instances/{instance_id}/console/output
    GET /v1/instances/{instance_id}/console/screenshot
    GET /v1/instances/{instance_id}/console/serial
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic compute instance console-output <instance-id> --max-bytes 65536
    basaltic compute instance console-screenshot <instance-id>
    basaltic compute instance serial-console <instance-id>
    ```

    `serial-console` abre a sessão interativa; a CLI define seus próprios cabeçalhos, então não precisa de ticket.
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    out, err := compute.New(cfg).GetConsoleOutput(ctx, instanceID, nil)
    ```

    O console serial é um WebSocket ao invés de uma solicitação, então o SDK não o envolve — use a CLI ou o console.
  </Tab>
</Tabs>

<AccordionGroup>
  <Accordion title="Saída do console — a transcrição de inicialização" icon="scroll-text">
    `GET /v1/instances/{instance_id}/console/output` retorna o que o convidado escreveu para o console serial durante o **atual boot**: um fstab ruim, um kernel errado, uma falha do cloud-init.Nada precisa ser instalado no guest, e ele funciona em uma instância parada — que é exatamente quando você precisa dele.

    `max_bytes` é um limite que você pode diminuir, não aumentar: o máximo é 65536 e valores maiores são fixados a ele. Quando a transcrição é mais longa do que o que você pediu, seu **início** é descartado e `truncated` é `true`. O fim é sempre mantido.

    A transcrição é redefinida a cada inicialização, então a última transcrição de um convidado que falhou desaparece quando ele reinicia — leia-a antes de reiniciar. Uma instância que nunca foi inicializada retorna uma saída vazia, não um erro.

    Requer `compute:GetConsoleOutput`.
  </Accordion>

  <Accordion title="Captura de tela — o que a tela mostra" icon="image">
    `GET /v1/instances/{instance_id}/console/screenshot` retorna uma imagem fixa, normalmente `image/png`.

    Esta é a contraparte para tudo o que uma transcrição serial não pode alcançar: um convidado sentado em seu gerenciador de inicialização, em um prompt do GRUB, em pânico antes da inicialização serial, ou inicializado a partir de uma imagem cujo kernel nunca foi instruído a fazer login na porta serial. Nesses casos, a transcrição está vazia e a tela contém a resposta completa.

    Uma imagem, não uma sessão — não há área de trabalho remota. A instância deve estar em execução; uma parada não tem exibição para capturar e responde `409` em vez de um quadro em branco.

    Requer `compute:GetConsoleScreenshot`.
  </Accordion>

  <Accordion title="Console serial — uma sessão interativa" icon="terminal">
    `GET /v1/instances/{instance_id}/console/serial` atualiza para um WebSocket que carrega uma sessão interativa na porta serial da instância. Este é o caminho quando a rede está quebrada: um kernel errado, um disco cheio, um grupo de segurança que bloqueou você.

    Bytes brutos em quadros binários, em ambas as direções. É um terminal, não um protocolo — aponte um emulador de terminal para ele. A autenticação é feita na solicitação de atualização, assinada como qualquer outra chamada, portanto, não há uma etapa de token separada. Uma solicitação não-WebSocket responde `426`.

    `backlog_bytes` reproduz a saída já escrita antes que a saída ao vivo comece, então anexar a um convidado silencioso mostra por que ele está silencioso em vez de uma tela vazia. Padrão 32768, máximo 65536, `0` desativa. O replay é a cauda da mesma gravação que `/console/output` serve, e a sessão ao vivo é a porta serial do convidado, então o join é marcado com uma linha `\r\n--- live ---\r\n`: history acima, o console ao vivo abaixo. Um guest que imprime no instante em que você se conecta pode perder alguns bytes nessa linha; um guest silencioso — para o qual existe o case replay — é reproduzido exatamente.

    **Uma sessão por instância:** abrir uma segunda desconecta a primeira, em vez de intercalar as teclas de duas pessoas. Uma sessão termina após 15 minutos de inatividade, ou 4 horas, independentemente, e o close frame diz qual.

    Requer `compute:StartSerialConsole`, e a instância a ser executada.

    <Note>
      Isso o leva ao prompt de login do convidado. Não é um backdoor — as credenciais do convidado ainda são necessárias, e nada aqui concede acesso além do que o próprio convidado permite.
    </Note>
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.