Skip to content

Instantly share code, notes, and snippets.

@douglasmiranda
Last active January 22, 2019 20:30
Show Gist options
  • Save douglasmiranda/b8e5cfb4869f97472a92c7b3e4641eb5 to your computer and use it in GitHub Desktop.
Save douglasmiranda/b8e5cfb4869f97472a92c7b3e4641eb5 to your computer and use it in GitHub Desktop.
Debian Stretch + Docker (PT-BR) (Digital Ocean)

Debian Stretch + Docker

Setup replicado na Digital Ocean e CloudCone, mas funciona basicamente da mesma forma em qualquer server com Debian Stretch + acesso root por ssh.

Resumo:

  • vamos criar um usuário comum do sistema, permitir que ele execute comandos sudo (requisitando senha)
  • vamos conectar ao servidor com ssh com o novo usuário, com acesso a partir de chave pública e desabilitar acesso ssh com senha, bem como acesso ssh do root direto
  • configurar um simples firewall
  • instalar Docker e executá-lo sem o sudo
  • No fim há um tópico "Possíveis erros", então ao se deparar com erros, visite essa seção

Usuários

Crie um usuário para não ficar o tempo tempo todo sendo root:

adduser <username>

Se depois quiser alterar a senha de um usuário:

passwd <username>

Permita que seu novo usuário possa executar comandos sudo:

usermod -a -G sudo <username>

Se estamos como root ainda, vamos trocar para o usuário <username>:

su - <username>

Nesse momento estamos na home do user <username>. Se executar pwd, no terminal vai ver que estamos em /home/<username>.

Acesso por ssh

Vamos adicionar a chave pública ao ~/.ssh/authorized_keys do nosso user pra logar com o esquema chave privada e pública.

Uma vez dentro de /home/<username>, como user <username>:

mkdir .ssh

Crie o arquivo .ssh/authorized_keys, coloque as chaves públicas que quiser, cada uma em uma linha. (Se não sabe sobre chaves públicas e privadas, procure saber, pesquise por ssh-keygen.)

echo "<conteúdo do ~/.ssh/id_rsa.pub> do seu computador, por exemplo" > .ssh/authorized_keys
OU
vim .ssh/authorized_keys # cole o conteúdo e feche o arquivo

Aplique as permissões corretas, é importante por questões de segurança:

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

Troque de user novamente, voltando para root:

exit

Essa foi a forma manual, é importante saber esses passos, você pode fazer de uma forma menos manual com ssh-copy-id:

ssh-copy-id root@SERVER-IP

Garantindo que não poderemos mais fazer login direto como root

No arquivo /etc/ssh/sshd_config, a configuração "PermitRootLogin", deve estar como "no", assim:

PermitRootLogin no

Pra permitir login somente com sua public key, desabilite login com senha:

PasswordAuthentication no

Reinicie o serviço:

service ssh restart

Firewall

NOTE: se seu host tem um Cloud Firewall você pode usá-lo, pode ser até melhor, menos recursos utilizados em sua instância.

Firewall com ufw

sudo apt-get install -y ufw

Negando todas conexões ao servidor:

sudo ufw default deny incoming

Permitindo todas conexões saírem do servidor:

sudo ufw default allow outgoing

Habilitando ssh (22):

sudo ufw allow ssh

Habilitando http (80):

sudo ufw enable http

Habilitando https (443)

sudo ufw enable https

Utils

sudo apt-get install -y htop

Docker

https://docs.docker.com/install/linux/docker-ce/debian

Instalação:

sudo apt-get update \
&& sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt-get update \
&& sudo apt-get install -y docker-ce

Após a instalação

https://docs.docker.com/install/linux/linux-postinstall/

Para poder executar o Docker com seu user que criamos no início do tutorial:

sudo groupadd docker
sudo usermod -aG docker $USER

Reinicie sua instância/server:

sudo reboot

Se tudo deu certo, isso vai funcionar agora:

docker run hello-world

Docker Compose

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Possíveis erros

Se sua distribuição do linix não tem sudo você pode ver a seguinte mensagem quando tenta usar:

-bash: sudo: command not found

Para resolver basta logar como root e instalar:

apt-get install sudo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment