Primeiros passos na configuração de um novo servidor.

Quando subo uma máquina nova sempre executo alguns comandos e faço algumas configurações, muita coisa já esta pronta nos meus dotfiles mas sempre tem muita coisa personalizada para fazer.

A primeira coisa é obter acesso ssh, ter certeza que as senhas de root não são as default.

Em seguida dou acesso de sudo para meu usuário caso já não tenha.

usermod -aG sudo ${USER}

Se for uma máquina na rede local eu configuro ela para usar zero configuration network, uma forma muito mais conveniente de acessar a máquina principalmente em redes IPv6. caso contrário esse é um bom momento para adicionar a maquina em um domínio.

apt install avahi-daemon

O próximo passo é copiar a chave ssh para o novo servidor e não precisar acessar mais com senha, garantindo ao mesmo tempo, um pouco mais de segurança.

ssh-copy-id \
    -o PreferredAuthentications=password \
    -o PubkeyAuthentication=no \
    ${USER}@example.local

Em seguida é uma boa ideia configurar o locale, isso evita vários problemas com comandos que precisam saber que você pretende usar UTF-8. Eu prefiro usar en_US.UTF-8 e pode ser necessário configurar a variável diretamente no bashrc LANG=en_US.UTF-8.

dpkg-reconfigure locales

Para otimizar um pouco o acesso via terminal e ter um pouco mais de responsividade eu instalo o mosh-server. Se a maquina estiver protegida por um firewall, precisa as portas de 60001 até 60999 UDP.

apt install mosh

Agora é uma boa hora para instalar o tmux, ao contrário da maioria, eu não uso o tmux para manter janelas no terminal, o principal motivo para usar o tmux é que em conjunto com o mosh você basicamente tem uma sessão indestrutível e muito prática, você pode fechar a máquina no trabalho, viajar de volta para casa e quando abrir a máquina o seu terminal vai estar exatamente como você deixou, com o cursor na mesma posição e tudo.

apt install tmux

Meu arquivo de ~/.tmux.conf é bastante simples e basta um scp para mandar uma cópia para a nova máquina.

scp ~/.tmux.conf novamaquina.local:/home/${USER}/

Se eu for codar na máquina, então vou instalar o neovim e dedico algum tempo para ter certeza que todos os plugins foram instalados, etc., mas na maioria das vezes o vim com configuração padrão é o suficiente.

apt install vim

Para finalizar, configuro dois atalhos que vou usar para facilitar a conexão, um usando o tmux e outro não, o nome dos atalhos eu sempre uso mosh_ e deixo o zsh preencher o resto.

alias mosh_novamaquina="mosh \
    --server='/usr/bin/mosh-server' \
    novamaquina.local \
    -- tmux new-session -A -s default"

alias mosh_novamaquina_ntm="mosh \
    --server='/usr/bin/mosh-server' \
    novamaquina.local"

Ativando rc.local

Tem pessoas que não gostam da ideia de ativar o rc.local porque ele existe para ser uma retrocompatibilidade as versões muito antigas do UNIX do fim dos anos 70. Mas eu considero extremamente simples e prático. A instalação precisa ser incrivelmente mais permanente para eu me importar em criar um serviço propriamente dito, e mesmo assim o rc.local ainda pode ser útil.

Obviamente o script precisa estar bem escrito e usar caminhos absolutos.

touch /etc/rc.local
chmod 700 /etc/rc.local
systemctl enable rc-local.service

Exemplo de script rc.local

#!/bin/bash
echo "rc.local"

# alguma coisa para iniciar no boot da maquina

exit 0

Boot no modo console

Eu normalmente nem mesmo instalo o X Window System, a maioria dos meus sistemas é operado via SSH e mesmo quando eu estou na frente do console, prefiro operar os servidores sem usar uma interface gráfica. Mas existem algumas situações em que você quer rodar algum software que é gráfico e nesses casos é preferível não carregar o X automaticamente, no lugar prefiro carregar o sistema no modo console e usar startx quando necessário.

Para carregar o sistema no modo console por padrão, use o comando abaixo.

systemctl set-default multi-user.target

Ajustando a fonte do console

Eu acho a fonte padrão do console muito pequena, para ficar mais legível eu prefiro mudar o tipo e o tamanho da fonte, para isso uso o seguinte comando.

dpkg-reconfigure console-setup

Ou edito o arquio /etc/default/console-setup como no exemplo abaixo.

FONT="Lat7-Terminus32x16.psf.gz"
ACTIVE_CONSOLES="/dev/tty[1-6]"
CHARMAP="UTF-8"
CODESET="Lat15"
FONTFACE="guess"
FONTSIZE="14x28"

Para mais detalhes sobre configurações do console leia o manual em man 5 console-setup.

Console mais limpo

Edite o arquivo /etc/sysctl.conf e remova o comentário da linha kernel.printk = 3 4 1 3, isso fará o kernel não imprima mensagens de baixo nível diretamente no console.

kernel.printk = 3 4 1 3

Docker

Caso a maquina vá servir containers Docker é interessante dar permissão para usuários “não root” terem acesso os serviço do Docker.

sudo usermod -aG docker ${USER}

Do lado do cliente baixe o executável estático do Docker de https://download.docker.com/ você só precisa do arquivo docker, coloque em qualquer diretório que esteja no path.

Configure a variável de ambiente DOCKER_HOST como no exemplo:

export DOCKER_HOST=ssh://user@example.local

GitHub

Configuração basica do git.

git config --global user.name "User Name"
git config --global user.email user@exemplo.com
git config --global pull.ff only

Sempre usar ssh quando acessar repositórios no GitHub.

git config --global url."git@github.com:".insteadOf "https://github.com/"

Golang com repo privado

Para que Go consiga buscar pacotes em repositórios privados é necessário configurar a variável de ambiente GOPRIVATE como no exemplo.

export GOPRIVATE=github.com/organização/repositório

Pode usar virgula , se quiser adicionar múltiplos repositórios, ou pode colocar apenas o nome da organização, sem o repositório, se quiser usar múltiplos repositórios da mesma organização.

Fonte do terminal

Eu costumo trocar a fonte do terminal para a fonte do IBM 3270, existe uma ótima reimplementação dessa fonte em https://github.com/rbanffy/3270font. Para falar a verdade eu uso essa fonte em tudo, fica fantástica especialmente quando estou usando meu PDP-11 rodando 2.11BSD. Eu sei que o correto seria usar a fonte do terminal DEC VT-102.

Cesar Gimenes

Última modificação