Por que GCP?
Ao escrever bots para o Telegram, deparei-me com a questão de como fazer para que o bot funcionasse constantemente, de forma rápida e gratuita. As opções com Heroku e Pythonanywhere têm limites muito pequenos, se você tiver mais de um bot. Portanto, decidi usar o GCP. A plataforma oferece 300 dólares gratuitamente por um ano + enormes descontos ao utilizar esses recursos (até 94%).

Como hospedar seu bot?
Passo 1. Registro no GCP
Vamos para o site e clicamos em Comece gratuitamente.

Insira seus dados e informações do cartão. O dinheiro do cartão não será cobrado, a menos que você ative a assinatura paga.

Passo 2. Criar uma máquina virtual
Após o registro, você será levado à página principal do serviço. Você precisa selecionar a guia Compute Engine na seção Recursos.

É necessário criar uma nova instância.

Se você não for implantar um banco de dados em máquina virtual, pode escolher o g1-small, caso contrário, recomendo o n1-standard.

Você também precisará escolher um sistema operacional. Eu escolhi Debian GNU/Linux 9 (stretch).

Pronto, a VM foi criada. A implantação normal leva de 1 a 5 minutos.
Passo 3. Configuração da máquina virtual
Você pode se conectar por SSH do seu PC ou interagir através da plataforma.
Para isso, clique em SSH.
![]()
Você verá um terminal Linux em uma nova janela.

Agora vamos para a configuração. Primeiro, insira o comando:
sudo apt-get updatepara atualizar as informações sobre as versões mais recentes dos pacotes.
Depois, insira:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipVocê não precisa instalar o Python, ele já está presente.
Agora, é necessário instalar todas as bibliotecas necessárias. Há uma pequena nuance, todas as bibliotecas devem ser instaladas duas vezes:
pip3 install 'name_of_package'para usar com o comando python3, e
sudo pip3 install 'name_of_package' para o systemd. Esta ferramenta ajudará você a executar o bot e reiniciá-lo se ele falhar.
A maneira mais simples de executar o bot é através do python3, mas ele será desligado quando você desconectar. Você pode usar screen, mas o bot não será reiniciado automaticamente. Também é possível usar crontab com verificação de porta, mas eu acho que essa opção é mais complicada do que o systemd.
Passo 4. Carregar o bot no servidor
Existem duas maneiras de carregar seu bot. Se você não estiver familiarizado com o Git, pode simplesmente compactar o bot em .tar e carregá-lo no servidor:

Depois, descompactamos com o comando:
tar -xvf yourfile.tarAgora seu bot está armazenado na pasta com o nome do arquivo compactado.
O segundo método é através do Git. Não vou explicar como fazer isso para pessoas que sabem usá-lo.
Após a instalação com o comando:
sudo apt install gitVocê pode cloná-lo para sua VM.
Depois disso, vamos configurar o systemd. Para isso, vamos para o diretório dele:
cd /etc/systemd/systemE criamos o arquivo bot.service:
sudo nano bot.serviceInsira no espaço que se abriu o seguinte:
[Unit]
Description=Telegram bot 'Nome do bot'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/nome do seu usuário/nome da pasta onde está o bot
ExecStart=/usr/bin/python3 /home/nome do seu usuário/nome da pasta onde está o bot/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Feche e salve o arquivo. Fecha-se com o comando Ctrl+X.
Depois disso, digite os comandos um a um:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Se tudo correr bem, você verá algo assim:

Pronto, agora seu bot está funcionando por conta própria. Espero que meu artigo ajude você a hospedar seu bot.
P.S.
1. Verifique seu bot quanto a erros
Inicie seu bot e verifique seu funcionamento antes de executá-lo pelo systemd. Para isso, vá até a pasta do bot e inicie-o pelo python.
cd
python3 bot.py2. Adicione a codificação nos arquivos com os scripts py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Adicione no início do arquivo.
3. Erros no systemd
Se você verificou o bot quanto a erros e ele funcionou normalmente, mas não quer iniciar no systemd, você pode verificar os logs e entender qual é o problema visualizando o arquivo:
sudo nano /var/log/syslogVocê pode baixar esse arquivo e visualizá-lo no seu computador através do Notepad+.
4. Atualizando o bot
Se você deseja adicionar ou fazer o upload de uma nova versão do bot, insira o comando:
sudo systemctl stop botRealize todas as manipulações necessárias. E depois digite os seguintes comandos para que ele volte a funcionar:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botFonte: habr.com
