Peppasorg
🐷 PEPPASORG is an integrated system combining a Telegram bot and a Minecraft server setup, deployed on Google Cloud Platform (GCP).
Install / Use
/learn @LuisCusihuaman/PeppasorgREADME
🚀 PEPPASORG
PEPPASORG es un sistema que integra un bot de Telegram y un servidor de Minecraft en GCP, permitiendo control remoto y automatización del servidor junto con respuestas dinámicas en el chat.
Características Principales
- Bot de Telegram: Utiliza
Telegrafpara interactuar con la API de Telegram,node-fetchpara solicitudes HTTP, yGiphyFetchpara integrar búsqueda de GIFs. - Servidor de Minecraft: Una instancia en GCP permite a los jugadores acceder a un mundo persistente de Minecraft, con la capacidad de controlar el estado del servidor a través del bot de Telegram.
- Despliegue en GCP: Se detallan los pasos para desplegar el bot de Telegram como una función serverless en Google Cloud Run y la VM para el servidor de Minecraft.
Los comandos del bot incluyen:
/prender_servercito: Inicia el servidor y responde con un GIF de juego./apagar_servercito: Detiene el servidor y responde con un GIF de sueño.

Índice
- Introducción
- Configuración del Minecraft Server
- Despliegue del Telegram Bot
- Obtención de tokens de API y credenciales
- Configuración y Administración del Minecraft Server
- Desarrollo
- Soporte y Documentación
- Contribuidores
📦 Configuración del Minecraft Server
👉 Se solicitara habilitar compute.googleapis.com para crear la maquina virtual donde correrá el servidor de Minecraft.
Obtener una IP Pública Estática en Google Cloud Platform
- Reserva una dirección IP estática en GCP:
gcloud compute addresses create minecraft-static-ip --region=us-central1
🐷 Despliegue de la VM Minecraft Server
- Crea una instancia de VM en GCP con el siguiente comando:
SERVER_GCP_ZONE=us-central1-a SERVER_GCP_NAME=minecraft-server SERVER_GCP_MACHINE_TYPE=e2-standard-4 USERNAME=$(whoami) gcloud compute instances create $SERVER_GCP_NAME \ --zone=$SERVER_GCP_ZONE \ --machine-type=$SERVER_GCP_MACHINE_TYPE \ --boot-disk-size=20GB \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=$SERVER_GCP_NAME \ --address=minecraft-static-ip \ --metadata username=$USERNAME,startup-script='#!/bin/sh USERNAME=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/username" -H "Metadata-Flavor: Google") mkdir -p /home/minecraft && \ git clone https://github.com/LuisCusihuaman/peppasorg.git /home/minecraft && \ mkdir -p /home/minecraft/mods && \ chown -R $USERNAME:$USERNAME /home/minecraft curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && usermod -aG docker $USERNAME cd /home/$USERNAME/ && sudo -u $USERNAME docker compose up -d'
💸 PRICING: $104.82/ mo
Configurar Reglas de Firewall
- Agrega reglas de firewall para permitir el tráfico en los puertos necesarios:
gcloud compute firewall-rules create allow-25565-8080 \ --allow tcp:25565,tcp:8080 \ --target-tags=$SERVER_GCP_NAME \ --description="Allow traffic on port 25565 (MINECRAFT SERVER) and 8080 (FILE SERVER)"
🤖 Despliegue del Telegram Bot (OPCIONAL)
👉 Se solicitara habilitar cloudbuild.googleapis.com y run.googleapis.com (TOMARA UN TIEMPO) para la construcción y despliegue del bot.
Configuración de permisos para la cuenta de servicio de Minecraft
-
Crear la cuenta de servicio:
gcloud iam service-accounts create minecraft-server-account --display-name "Minecraft Server Account" -
Obtener tu ID de proyecto automáticamente:
PROJECT_ID=$(gcloud config get-value project) echo $PROJECT_ID -
Crear un rol personalizado con los permisos necesarios para iniciar y detener la instancia de Minecraft:
gcloud iam roles create minecraft_instance_control --project $PROJECT_ID --title "Minecraft Instance Control" --description "Custom role for starting and stopping Minecraft instance" --permissions compute.instances.start,compute.instances.stop,compute.instances.list,compute.zoneOperations.get,compute.zoneOperations.list -
Asignar el rol personalizado a la cuenta de servicio:
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:minecraft-server-account@$PROJECT_ID.iam.gserviceaccount.com" --role=projects/$PROJECT_ID/roles/minecraft_instance_control -
Generar el archivo de clave JSON para la cuenta de servicio:
gcloud iam service-accounts keys create ./my_credentials.json --iam-account=minecraft-server-account@$PROJECT_ID.iam.gserviceaccount.com
Despliegue del Bot en Google Cloud Run
-
Clonar el repositorio del bot: Primero, clona el repositorio del bot de Telegram a tu entorno local o de desarrollo:
git clone https://github.com/LuisCusihuaman/peppasorg.git peppasorg-bot -
Copiar el archivo de credenciales: Copia
my_credentials.jsonal directorio del proyecto clonado:cp my_credentials.json peppasorg-bot/ -
Construye la imagen del contenedor y súbela a Container Registry: Desde el directorio del proyecto, construye y sube la imagen directamente a Google Container Registry:
PROJECT_ID=$(gcloud config get-value project) gcloud builds submit --tag gcr.io/$PROJECT_ID/peppasorg-bot peppasorg-bot/ -
Despliega en Cloud Run: Utiliza el siguiente comando para desplegar tu bot:
SERVER_GCP_REGION=us-central1 SERVER_GCP_ZONE=us-central1-a SERVER_GCP_NAME=minecraft-server GIPHY_TOKEN=your-giphy-token BOT_TOKEN=your-bot-token gcloud run deploy peppasorg-bot \ --image gcr.io/$PROJECT_ID/peppasorg-bot \ --platform managed \ --region $SERVER_GCP_REGION \ --allow-unauthenticated \ --set-env-vars PRODUCTION='true',\ SERVER_GCP_NAME=$SERVER_GCP_NAME,\ SERVER_GCP_ZONE=$SERVER_GCP_ZONE,\ GIPHY_TOKEN=$GIPHY_TOKEN,\ BOT_TOKEN=$BOT_TOKEN -
Configura el webhook de Telegram: Configura el webhook de Telegram para que el bot pueda recibir actualizaciones de mensajes:
CLOUD_RUN_URL=$(gcloud run services describe peppasorg-bot --region $SERVER_GCP_REGION --format 'value(status.url)') curl -F "url=${CLOUD_RUN_URL}/bot${BOT_TOKEN}" https://api.telegram.org/bot${BOT_TOKEN}/setWebhookReemplaza
your-bot-tokencon el token de tu bot de Telegram,your-giphy-tokencon tu token de API de Giphy.
Este proceso clonará el repositorio del bot, copiará el archivo de credenciales necesario en el directorio del proyecto, construirá la imagen del contenedor y la desplegará en Google Cloud Run.
🔑 Obtención de tokens de API y credenciales
🤖 Token del bot de Telegram
- Abre la aplicación de Telegram y busca el bot "BotFather".
- Inicia un chat con BotFather y envía el comando
/newbot. - Sigue las indicaciones para crear un nuevo bot y obtener tu token de bot.
🎞️ Token de Giphy
- Ve al Portal de Desarrolladores de Giphy.
- Crea una nueva aplicación y obtén tu clave de API de Giphy.
☁️ Credenciales de Google Cloud Platform
- Ve a la Consola de Google Cloud.
- Crea un nuevo proyecto o selecciona uno existente.
- Navega a "APIs y servicios" > "Credenciales".
- Haz clic en "Crear credenciales" y selecciona "Cuenta de servicio".
- Sigue las indicaciones para crear una nueva cuenta de servicio y descarga el archivo de clave JSON.
Después de obtener estos tokens y credenciales, coloca el archivo de clave JSON de GCP en la raíz del proyecto, con el nombre:
const options = {
keyFilename: './my_credentials.json',
};
👮 Configuracion y Administracion del Minecraft Server
Ejecutar cualquiera de estos comandos en el RCON:
RCON_PASSWORD=password
docker compose exec mc rcon-cli list
docker compose exec mc rcon-cli say "Hola, jugadores"
docker compose exec mc rcon-cli op <player> #Dar permisos de administrador
docker compose exec mc rcon-cli deop <player> #Quitar permisos de administrador
docker compose exec mc rcon-cli whitelist add <player>
docker compose exec mc rcon-cli whitelist remove <player>
docker compose exec mc rcon-cli ban <player>
docker compose exec mc rcon-cli ban-ip <ip>
docker compose exec mc rcon-cli pardon <player>
docker compose exec mc rcon-cli pardon-ip <ip>
docker compose exec mc rcon-cli save-all
docker compose exec mc rcon-cli save-off
docker compose exec mc rcon-cli save-on
docker compose exec mc rcon-cli stop
Configura el minecraft.env con las siguientes variables de entorno:
Documentación de Minecraft Server
💻 Desarrollo
-
Exporta las variables de entorno necesarias en tu terminal:
export SERVER_GCP_NAME=minecraft-server export SERVER_GCP_ZONE=us-central1-a export BOT_TOKEN=your-bot-token export GIPHY_TOKEN=your-giphy-token -
Copia el archivo de credenciales
my_credentials.jsonde GCP en el directorio del proyecto. -
Ejecuta
pnpm installpara instalar las dependencias necesarias. -
Ejecuta
pnpm startpara iniciar el servidor de desarrollo.
📚 Soporte y Documentación
Para más información y solución de problemas, consulta los siguientes recursos:
- Documentación de la API del Bot de Telegram
- Documentación de la API de Giphy
- [Documentación de Google Cloud Plat
