Cansado de depender de hospedagens grátis que ficam mais offline do que ficam online? Querendo aprender a como hospedar o seu bot em uma VPS? Então você chegou ao lugar certo! Neste tutorial você irá aprender a como escolher uma VPS, proteger ela, como copiar arquivos e rodar o seu bot!
Grátis não significa que são boas, Heroku/Glitch/Discloud possuem limites de recursos do que você pode fazer na sua máquina (Quem nunca viu uma gambiarras que fazem para o bot não morrer na Heroku/Glitch/Discloud?).
Sim, elas são boas se o seu bot é pequeno (menos de 100 servidores), mas com o passar do tempo o seu bot irá precisar de mais recursos, coisas que uma hospedagem grátis não irá conseguir te oferecer.
Se você está querendo fazer que o seu bot seja grande, você terá que alguma hora ou outra tirar dinheiro do bolso para conseguir investir nele, você não pode ficar dependendo eternamente de hospedagens grátis.
Sem contar que essas hospedagens grátis não te garantem estabilidade ou performance, elas compartilham CPU com várias pessoas (ou seja, se uma pessoa está usando muita CPU você também será afetado, isto também acontece com VPS convencionais mas empresas com reputação boa tentam evitar ao máximo isto) e estão cagando para você.
Hospedagens grátis compartilham o mesmo IP para vários usuários, se algum dos seus amiguchos de IP resolverem ficar floodando a API do Discord com requests inválidos, o Discord irá banir o IP por uma hora e todos os bots serão afetados, e olha que isso nem é apenas uma hipótese, isto já aconteceu na Discloud!
E o melhor: Uma VPS é apenas sua, sério! Quer hospedar um website pessoal na sua VPS? Só instalar um nginx
e se divertir! Querendo que o seu bot tenha música com o Lavalink? Só hospedar e conectar o seu bot nele! Você quer hospedar um servidor de Minecraft na sua VPS? Só craftar meu parça! O céu é o limite! (E é claro, os recursos da sua VPS)
E mexendo com VPS você aprende sobre Linux e como resolver problemas nele, algo útil para você colocar no seu currículo.
Então esse tutorial não é para você, se você quer que o seu bot cresca, você terá que investir nele. Este tutorial são para pessoas que querem fazer um bot decente que cresca, e não para as pessoas que ficam fazendo um bot que só responde comando de ping e já ficam se achando.
ssh-copy-id
, por exemplo) que não estão disponíveis no PowerShell.Se o seu bot é pequeno, é melhor começar com uma VPS pequena também! Uma VPS de 1GB de RAM e dois núcleos já está de bom tamanho para um bot pequeno. Se no futuro você precisar de uma nova máquina, você pode fazer upgrade no VPS atual ou comprar uma nova máquina e migrar seu bot para ela... e talvez em um futuro distante migrar para um dedicado da SoYouStart ou da OVH!
Sobre o sistema operacional, recomendo escolher Ubuntu! Ubuntu é utilizado por várias pessoas, então encontrar soluções para seus problemas no Google é fácil.
Neste tutorial eu irei utilizar o Ubuntu 20.04 para a minha VPS, mas os passos serão parecidos em versões mais antigas/novas do Ubuntu.
Ao comprar a sua VPS, eles podem perguntar para você...
root
da sua máquina (como se fosse uma "Conta de administrador"), escolha uma senha segura e guarde ela!alfajor
! Comprou a sua VPS? Yay! Agora é só esperar ela te enviar os dados da sua máquina para você (algumas enviam por email, outras te mostram no próprio painel deles) e, quando tiver, avance para a próxima etapa!
Você terá que conectar a sua VPS via SSH (Secure Shell Protocol), abra o WSL (pode ser em qualquer pasta do seu PC) no seu computador e execute... ssh root@{ip da sua máquina}
ssh
: Nome do comandoroot
: O nome do usuário na sua VPS, como você quer conectar via administrador, iremos usar root
{ip da sua máquina}
: O IP da sua VPSroot@{ip da sua máquina}
: Significa "root @ (at) IP", que em português seria "root em IP": "Quero me conectar como root em IP"!Exemplo: ssh [email protected]
Ao conectar, você irá ver a seguinte mensagem:
Apenas escreva yes
Depois ele irá pedir a senha da máquina, coloque a senha que você recebeu (ou configurou) e, se der tudo certo, você estará conectado na sua máquina! Ah, não se preocupe se você estiver escrevendo mas não estiver aparecendo nenhum caractere, o SSH está recebendo a sua senha sim, ele só não mostra para evitar gente espiando atrás de você... motivo bem bobo, mas vida que segue.
Parabéns! Agora quer esfregar na cara das suas amigaxxx que agora você tem uma VPS? Então instale o neofetch com... apt install neofetch
e depois neofetch
Nice! Tá, mas vamos voltar ao nosso foco.
Ah, e uma dica: CTRL-C não copia textos em uma janela SSH, CTRL-C serve para você enviar um pedido de finalizar o processo para o Linux! Se você quer copiar algo da sua tela, selecione com o mouse e depois clique com botão direito, isto irá copiar o texto selecionado. Se você quiser colar algo, aperte com o botão direito na tela SSH.
Uma coisa que você precisa fazer é proteger a sua VPS contra invasores, enquanto uma senha de login é seguro... sabia que tem uma alternativa mais segura que senhas?
Você pode proteger o seu servidor com uma SSH identity key, uma SSH identity key é um arquivo que apenas pessoas com esse arquivo vão conseguir logar no seu servidor, assim deixando impossível de invasores conseguirem entrar na sua VPS! Exceto se você passar o arquivo para alguém e ela usar o arquivo para logar... mas aí foi você que decidiu ser burrinho.
Para gerar uma key SSH, abra o WSL em uma nova janela, vá na sua "home" do seu WSL (cd ~
) e use explorer.exe .
, isto irá abrir uma nova janela do Explorer do seu ambiente WSL! Isto será útil no futuro quando a gente precisar copiar a nossa key gerada para o Windows.
Para gerar uma key SSH, no WSL use ssh-keygen
, escreva um nome para a sua key (eu irei chamar a minha de alfajor_key
) e coloque uma senha para ela (enquanto uma senha na sua key deixa ela mais segura (já que precisa de uma senha para poder usar ela) eu recomendo deixar vazio, ou seja, sem nenhuma senha.)
A sua key será gerada e será salva na pasta que você está no shell, agora precisamos copiar a sua key para a sua VPS!
Para isto, iremos usar o comando ssh-copy-id
, que serve para copiar keys para outras máquinas.
ssh-copy-id -i {nome da key} root@{ip da sua máquina}
Ao usar o comando, ele irá pedir a senha da sua VPS, só colocar ela e, se aparecer Number of key(s) added: 1
quer dizer que deu certo! Yay!
Antes de você tentar conectar, você precisa alterar as permissões da key gerada, para isto, use chmod 400 {nome da sua key}
Exemplo: chmod 400 alfajor_key
Isto irá alterar a permissão da sua key para que o ssh
não reclame que as permissões estão "muito abertas". (Frescura do SSH)
Para testar se deu certo, use o comando de SSH novamente, mas coloque -i {nome da key}
como parâmetro, isto irá falar para o SSH "use essa key aqui vlw te amo"
Exemplo: ssh -i alfajor_key [email protected]
Se você conseguir conectar na sua máquina sem o SSH pedir a sua senha, então quer dizer que deu certo!
Agora iremos desativar para meliantes não conseguirem logar como root no seu servidor sem ter a sua key.
Na sua máquina, use nano /etc/ssh/sshd_config
(nano
é um editor de texto!) e procure por PasswordAuthentication
Dica: Você pode procurar por palavras no nano
usando CTRL + W e depois escrevendo o que você quer procurar.
Tire o #
na frente do PasswordAuthentication
e troque de yes
para no
e salve o arquivo (CTRL + X, depois escreva y
e depois aperte ENTER)
Reinicie o servidor SSH da sua máquina utilizando service ssh restart
e pronto, meliantes não irão conseguir ficar tentando chutar a sua senha!
Tente se conectar na sua máquina novamente com a sua key gerada (com o parâmetro -i {sua key}
e depois sem a key (sem o parâmetro -i
), se você conseguir logar com a key mas não conseguir logar sem a key, então deu tudo certo!
Agora precisamos conectar a VPS via SFTP para que você consiga copiar arquivos da máquina. Nós iremos usar WinSCP para isto.
Lembra daquela tela do Windows Explorer que você abriu no passo passado? Então, copie a sua key gerada para alguma pasta no seu Windows 10 para que o WinSCP possa encontrar.
Ao abrir o WinSCP, vai aparecer várias opções, vá em "New Site".
root
Agora vá em "Advanced" -> "SSH" -> "Authentication" e selecione o arquivo da sua key em "Private key file"! Ah, não se esqueça de trocar para mostrar todos os arquivos!
O WinSCP irá perguntar se você deseja converter a sua key para um formato compatível com o PuTTY, clique em "Sim" e escolha o local da sua key em formato PuTTY (pode ser na mesma pasta que você deixou a key criada anteriormente).
Clique em "OK" e, na tela inicial de criação de sites, clique em "Save", assim você não precisará colocar essas informações toda hora que você quiser mexer nos arquivos da sua VPS.
Agora é só clicar em "Login", o WinSCP irá perguntar se você deseja confiar no host, só clicar em "Yes"
Incrível! Aliás, eu prefiro usar o WinSCP no estilo de interface "Explorer", se você quiser trocar, é em "Preferences" -> "Interface".
Antes de tudo, instale o curl
na sua máquina, curl
é uma ferramenta útil para baixar coisas da internet e algumas packages precisam dela!
apt install curl
Para instalar o node.js na sua máquina, só usar
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
Se você precisar de uma versão mais antiga/nova do node.js, veja aqui!
Use aquele node
maroto no terminal para ver se está tudo funcionando...
E, se tudo estiver certo, o npm
também irá funcionar!
Por padrão o Ubuntu 20.04 já vem com o Python 3.8.2, então...
Caso tenha algum update disponível você pode atualizar o Python com apt upgrade python3
.
Para instalar o JDK na sua máquina, só usar
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
sudo apt-get install -y software-properties-common
sudo apt-get install adoptopenjdk-11-hotspot
E use aquele java -version
maroto no terminal para ver se tudo está funcionando...
Screen é uma ferramenta que permite você criar sessões adicionais na sua VPS.
Um exemplo seria no Windows: Se você rodar o seu bot em um prompt de comando e fechar o prompt de comando, o seu bot morre. A sua sessão SSH é como se fosse um prompt de comando do Windows, se você fechar a sua conexão o seu bot morre.
E para isto que serve o screen! O screen permite você criar mais "prompts de comandos" na sua VPS, assim você poderá executar vários processos ao mesmo tempo e eles não irão encerrar automaticamente ao fechar a sua conexão!
Para instalar o screen, use
apt install screen
Usar o screen é fácil:
screen -S {nome da sua screen}
: Cria uma screen com o nome {nome da sua screen}
screen -r {nome da sua screen}
: Volta para a sua screen já criadaCTRL + A + D
: Desconecta de uma screen caso você esteja dentro delaexit
: Dentro de uma screen o exit
deleta a screen criada.screen -Dr {nome da sua screen}
: Raramente você irá utilizar este comando, você só deverá usar ele quando a sua screen mostra que está "Attached" mesmo que você não esteja dentro dela! As vezes isto acontece quando a sua conexão SSH morre por problemas de internet/energia.Agora chegamos na seção que todos estavam esperando... como executar o seu bot!
Primeiro teremos que copiar o nosso humilde bot para a VPS, para isto iremos usar o WinSCP. Neste tutorial eu irei usar como exemplo um bot feito em JavaScript (node.js), mas são os mesmos passos para bots em outras linguagens, basta alterar os comandos para executar o bot.
No WinSCP, conecte na sua VPS e na barrinha de "Address" escreva /home
e aperte ENTER para acessar a pasta /home
na sua VPS.
Na pasta /home
, crie uma pasta com um nome muito foof para o seu bot... que tal chamar ela de alfajor
?
Para criar uma pasta no WinSCP, clique com botão direito -> "New" -> "Folder", e aí é só escolher o nome dela.
Entre dentro da sua nova pasta e copie os arquivos do seu bot para o WinSCP (É simples! Só selecionar todos os seus arquivos e arrastar para o WinSCP).
Dica: Copiar vários arquivos pequenos demora muito mais tempo do que copiar um único arquivo grande, então uma alternativa é compactar todos os arquivos do seu projeto (com o 7zip/WinRAR, etc), instalar o unzip
na sua VPS com apt install unzip
e depois descompactar na VPS utilizando unzip NomeDoArquivo.zip
!
Quando acabar, vá para a janela aonde você está conectado ao seu servidor via SSH e utilize cd /home/alfajor
(o comando cd
serve para você se mover para uma pasta, igual como funciona no prompt de comando do Windows).
Se você compactou o arquivo igual como o Power Tech Tips disse, use unzip NomeDoArquivo.zip
!
E agora vem a hora tão emocionante, executar o bot!
Para executar, use node index.js
(Ou o comando necessário para iniciar o seu bot) e, se der tudo certo...
Yay! Deu tudo certo!! Mas agora a gente precisa rodar o bot em uma screen, já que, se você fechar a sua conexão SSH, o bot irá morrer.
Primeiro vamos matar o processo do bot utilizando CTRL + C
, isto irá parar o seu bot e irá retornar para o terminal.
Agora, vamos criar uma screen com screen -S bot
(você pode alterar bot
para outro nome, tipo owo_meu_bot_fofo
ou algo assim) e aí é só usar node index.js
dentro da screen!
Agora você pode fechar a sua conexão SSH e ficar em paz e harmonia e ser feliz! Caso você queria voltar ao processo do seu bot futuramente, você pode usar screen -r bot
E é isso, se divirta com a casa do seu novo bot!