Cover do episódio 4: Meu primeiro servidor Linux sem interface gráfica
#0044 de novembro, 20132 min leituraFerramentas que Eu UsoS1 · 2013–2016

Meu primeiro servidor Linux sem interface gráfica

Sem GUI, sem clique, sem menu. Só terminal. Foi a coisa mais desorientante e mais formadora que aconteceu no início da minha carreira técnica.

LinuxTerminalServidorFundamentos

Primeiro acesso SSH num servidor Linux de produção. Sem interface gráfica. Prompt piscando.

Sabia usar Linux — meu computador em casa rodava Kubuntu desde 2011. Mas computador com KDE e servidor headless são coisas diferentes. Em casa, tinha janela, ícone, menu de contexto. No servidor, tinha cursor.

Fiquei parado por uns trinta segundos tentando lembrar como se navegava sem ls.


O servidor era o de email da empresa. Postfix para envio, Dovecot para acesso IMAP. Precisava verificar uma fila de mensagens presas.

Tudo que precisava fazer naquele servidor tinha que ser feito em texto. Navegar por diretório com cd e ls. Ler arquivo de configuração com less. Verificar fila do Postfix com mailq. Checar log com tail -f /var/log/mail.log.

Sem atalho, sem clicar no arquivo errado por acidente, sem menu que mostrasse as opções disponíveis.


O que servidor headless força a desenvolver:

Você tem que saber o que quer fazer antes de fazer. Com GUI, você pode explorar — clicar, ver o que aparece, desfazer. Com terminal, cada comando tem consequência. rm não tem lixeira. Pipe mal formado executa na hora. Isso cria hábito de pensar antes de executar.

Configuração em arquivo de texto é melhor que configuração em GUI. Postfix configurado em /etc/postfix/main.cf é auditável, versionável, copiável. Você pode fazer diff de duas versões, reverter uma mudança, revisar o que alguém alterou. Configuração em GUI de appliance corporativo não tem nenhuma dessas propriedades.

Log é a única fonte de verdade sobre o que aconteceu. Sem GUI piscando aviso colorido, você vai ao log. tail -f /var/log/mail.log mostrando entrega em tempo real. grep "status=bounced" filtrando mensagens que falharam. Aprendi a ler log antes de ter framework de observabilidade.

O ambiente que você cria no terminal é reproduzível. Instalação documentada em apt install postfix dovecot-imapd. Configuração em arquivo de texto no repositório. Script de setup que reproduz o ambiente. Isso é Infrastructure as Code antes de eu conhecer o termo.


Hoje uso terminal para quase tudo que faço no trabalho. Não por nostalgia ou fetiche de developer — porque terminal é mais rápido, mais reproduzível, e mais auditável que qualquer GUI para o tipo de trabalho que faço.

Esse hábito não começou com Kubernetes ou Terraform. Começou num servidor Postfix sem interface gráfica em 2013.

Essa semana: tem alguma coisa que você faz regularmente via GUI que seria mais rápido e mais reproduzível em terminal?