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.