Como otimizar o Ubuntu Server

Como deixar o sistema enxuto (e sem Snaps!) ao ponto de consumir meros 100 Mb de RAM, ideal para Raspberry Pi 3 ou qualquer outro computador.


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


1. Introdução

Já ensinei no canal como instalar o Ubuntu Server 24.04 LTS:

Como otimizar o Ubuntu Server, deixá-lo enxuto? De que maneiras posso fazer o sistema da Canonical ficar absurdamente eficiente em consumo de hardware mas sem perder seus recursos mais importantes?

Os comandos e dicas abaixo servem tanto para o 22.04 quanto para o 24.04

2. Remoção de Pacotes

Antes de continuar, após instalar o sistema a primeira coisa que você precisa é remover os pacotes menos importantes. Assim quando der apt update e apt upgrade ele não vai perder tempo instalando pacotes que serão removidos depois. Os pacotes que recomendo remover são:

  • needrestart
    Esse é serviço que te avisa “precisa reiniciar tais serviços” após atualizar. Foi introduzido se não me engano no Ubuntu 22.04 e não é algo tão fundamental para servidores domésticos e/ou para pequenas empresas. Se algo precisar ser reiniciado, um simples reinício da máquina toda basta, jogo rápido.
  • cloud-init
    Quem cria imagens customizadas do Ubuntu ou ainda provisiona dezenas de bare-metais vai precisar dele; mas pro usuário comum que quer rodar um Docker em Raspberry Pi? Pode tirar. Ele consome RAM e CPU para algo que não será usado.
  • snapd
    Até o Ubuntu 24.04 LTS (e data desta publicação) não tem qualquer pacote Snap no sistema recém instalado. Pode remover o aplicativo snapd totalmente!
    Ele vai voltar caso você queira um servidor com interface de usuário e instale algo como o Chromium. Então atentos aos pacotes que instalar.
    Em essencia a maioria dos pacotes CLI como o docker.io e o SAMBA funcionarão sem dependências com Snaps.
  • unattended-upgrades
    Esse serviço fica rodando 24h em background “atualizando” seu servidor sem seu consentimento. Promete trazer atualizações de segurança imediatamente e de forma automática. Na prática, trava o “apt” e várias vezes eu precisei instalar um pacote e tive que aguardar a boa vontade do unatended-upgrades. Detalhe: ele costuma ser lento nas requisições, muito mais lento que o apt tradicional.
  • bluez
  • blueman
  • bluetooth
    São os serviços de bluetooth, se não me engano eles não vem por padrão mas caso venham e você não for usar, tire!
  • avahi-daemon
    Esse serviço tecnicamente é pra encontrar dispositivos automaticamente na rede como impressoras. Se não for seu caso, tire.
  • lvm2
    O lvm2 é o gestor de volumes llvm, se não for usar, tire!
  • update-notifier-common
    Esse pequeno serviço te notifica que tem atualizações novas a serem feitas logo que faz login e visualiza o motd.
  • apport
  • apport-symptoms
    São o serviço de envio de notificações de erros, no server eu nunca vi funcionando e não senti falta quando tirei.
  • wpasupplicant
    Caso não for usar o Wifi, tire.
  • apparmor
    Sistema interno de segurança do Ubuntu, esse aqui é para um caso extremo que você quer enxugar memória e já ficou sem ideias do que remover.
  • ufw
    Firewall do Ubuntu, removê-lo vai apenas expor toda e qualquer porta/serviço na rede. O faça se realmente quer enxugar o sistema!

Então os comandos ficam:

$ sudo apt purge needrestart cloud-init snapd unattended-upgrades plank deja-dup evolution evolution-data-server bluez blueman bluetooth avahi-daemon lvm2 update-notifier-common apport apport-symptoms wpasupplicant apparmor ufw network-manager

$ sudo apt autoremove

Dê apt update e upgrade normalmente a partir disso para dar sequência e otimizar o Ubuntu Server.

3. Desativando Serviços

Além de remover pacotes, tem serviços que seria interessante desligar para otimizar o Ubuntu Server:

  • systemd-networkd-wait-online.service
    Esse serviço espera que a rede seja estabelecida antes de continuar o processo de boot. O problema?
    Isso pode demorar até 1 minuto e meio sem justificativa. Desativo sempre, nunca fez falta.
  • apt-daily.timer
  • apt-daily-upgrade.timer
    É como um “apt update” automático diário. Eu não vi vantagem manter se o “apt update” é necessário de todo modo.
  • e2scrub_all.timer
  • e2scrub_reap.service
    Esse serviço verifica por erros no sistema de arquivos ext2, ext3 e ext4. Se usa BTRFS ou não faz questão dessa rotina, remova.

Então os comandos ficam:

$ sudo systemctl disable systemd-networkd-wait-online.service apt-daily.timer apt-daily-upgrade.timer e2scrub_all.timer e2scrub_reap.service
$ sudo systemctl mask systemd-networkd-wait-online.service apt-daily.timer apt-daily-upgrade.timer e2scrub_all.timer e2scrub_reap.service

Caso precise do NetworkManager em vez do systemd-network, também desative:

$ sudo systemctl disable NetworkManager-wait-online.service; sudo systemctl mask NetworkManager-wait-online.service

Esse serviço também espera que a rede seja estabelecida antes de continuar o processo de boot. Isso pode demorar até 1 minuto e meio sem justificativa. Desativo sempre, nunca fez falta.

4. Tweaks

Ajustes finos de otimização para otimizar o Ubuntu Server. Adicione ao arquivo /etc/sysctl.conf as seguintes linhas:

# Habilita o REISUB.
kernel.sysrq=1
# Se ficar sem memória livre, cause um kernel panic.
vm.panic_on_oom=1
# Se ocorrer kernel panic, reinicie o sistema.
kernel.panic=5
# Swap será usada somente se tiver 10% livre, 90% de uso
vm.swappiness=10

Já ao /etc/fstab adicione ao final:

# Montar as pastas /tmp e /var/tmp na RAM, consumirá mais RAM mas aliviará o uso de disco/SSD.
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0

5. Conclusão

E é isso.

Ah mas porque não usar logo Debian que é mais enxuto?

Porque o Ubuntu tem um repositório mais completo com a possibilidade de adicionar PPA’s sem burocracias, o netplan é incrível pra dar manutenções de rede, entre outros ajustes de fábrica, como a existência do ufw em detrimento ao firewalld do Debian. Otimizações que fazem falta.
É mais fácil enxugar um Ubuntu do que enriquecer um Debian.

No fim você chegará em algo próximo disso:

E ai, conhecia algumas dessas dicas e otimizações?
Deixe nos comentários se tiver alguma dica de como otimizar o Ubuntu Server!

Deixe um comentário