¿Por qué GCP?
Al escribir bots de Telegram, me encontré con la pregunta de cómo hacer que el bot funcione de manera continua y gratuita. Las opciones con Heroku y Pythonanywhere tienen límites demasiado bajos si tienes más de un bot. Por eso decidí utilizar GCP. La plataforma ofrece $300 gratis durante un año + enormes descuentos al utilizar estos fondos (hasta un 94%).

¿Cómo alojar tu bot?
Paso 1. Registro en GCP
Visitemos el sitio y hacemos clic en Empieza gratis.

Ingresa tus datos y tu tarjeta. No se realizarán cargos a la tarjeta si no activas una suscripción de pago.

Paso 2. Crear una máquina virtual
Después del registro, estarás en la página principal del servicio. Necesitas seleccionar la pestaña Compute Engine en la sección de Recursos.

Es necesario crear una nueva instancia.

Si no vas a desplegar una base de datos en una máquina virtual, puedes elegir g1-small, de lo contrario, recomiendo n1-standard.

También será necesario seleccionar un sistema operativo. Yo elegí Debian GNU/Linux 9 (stretch).

Listo, la VM ha sido creada. Su despliegue normal toma entre 1 y 5 minutos.
Paso 3. Configuración de la máquina virtual
Puedes conectarte por SSH desde tu PC o interactuar a través de la plataforma.
Para ello, haz clic en SSH.
![]()
Se abrirá una terminal de Linux en una nueva ventana.

Ahora pasemos a la configuración. Primero, ingresa el comando:
sudo apt-get updatepara actualizar la información sobre las versiones más recientes de los paquetes.
Luego ingresa:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipNo es necesario instalar Python, ya está incluido.
Ahora es necesario instalar todas las bibliotecas necesarias. Hay un pequeño detalle: debes instalar todas las bibliotecas dos veces:
pip3 install 'name_of_package'para usarlas a través del comando python3, y
sudo pip3 install 'name_of_package' para systemd. Esta utilidad te ayudará a iniciar el bot y reiniciarlo si se cae.
La forma más sencilla de ejecutar el bot a través de python3, pero se apagará si te desconectas. Se puede usar screen, pero el bot no se reiniciará automáticamente. También se puede usar crontab con comprobación de puerto, pero me parece que esta opción es más complicada que systemd.
Paso 4. Subir el bot al servidor
Hay dos formas de subir tu bot. Si no estás familiarizado con Git, puedes simplemente archivar el bot en .tar y subirlo al servidor:

Después de eso, desarchivamos con el comando:
tar -xvf yourfile.tarAhora tu bot está en la carpeta con el nombre del archivo.
El segundo método es a través de Git. No creo que sea necesario explicar cómo hacerlo a las personas que saben usarlo.
Después de instalarlo con el comando:
sudo apt install gitPuede clonarlo en su VM.
Después de esto, pasamos a la configuración de systemd. Para ello, accedemos a su directorio:
cd /etc/systemd/systemY creamos el archivo bot.service:
sudo nano bot.serviceEscribimos lo siguiente en la ventana que se abre:
[Unit]
Description=Bot de Telegram 'Nombre del bot'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/nombre de su usuario/nombre de la carpeta donde está el bot
ExecStart=/usr/bin/python3 /home/nombre de su usuario/nombre de la carpeta donde está el bot/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Cierre y guarde el archivo. Se cierra con el comando Ctrl+X.
Después de esto, ingrese los comandos uno por uno:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Si todo está bien, verá algo como lo siguiente:

Todo, ahora su bot funciona de manera independiente. Espero que mi artículo le ayude a alojar su bot.
P.D.
1. Verifique su bot por errores
Ejecute su bot y verifique su funcionamiento antes de ejecutarlo a través de systemd. Para ello, dirígete a la carpeta del bot y ejecútalo a través de python.
cd
python3 bot.py2. Agregue la codificación en los archivos de los scripts py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Inserte al comienzo del archivo.
3. Errores en systemd
Si ha verificado el bot por errores y funcionó normalmente, pero no quiere iniciarse en systemd, puede ver los registros y entender cuál es el error revisando el archivo:
sudo nano /var/log/syslogPuede descargar este archivo y revisarlo en su computadora a través de Notepad++.
4. Actualización del bot
Si quiere agregar o subir una nueva versión del bot, ingrese el comando:
sudo systemctl stop botRealice todas las manipulaciones necesarias. Luego ingrese los siguientes comandos para que funcione nuevamente:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botFuente: habr.com
