personalmente, no ejecutaría una configuración de doble contenedor en nada menos que 8 GB de RAM, 4 CPUs y 80 GB de disco, pero tu experiencia y situación pueden variar. Estoy ejecutando un foro relativamente activo en esta configuración de Hetzner con alrededor de 300 usuarios activos y entre 70 y 100 DEU.
script bash para encontrar servidores Hetzner
vale, esto podría ayudarte a ti y a otros que lean esto. Es específico para Hetzner, pero probablemente se pueda adaptar para otros proveedores de VPS (no me pidas que lo haga por ti).
Este es un script bash sencillo que comprobará cada 5 minutos si hay servidores Hetzner CAX21 o CX33 disponibles y publicará el resultado como un tema en una categoría de tu instancia actual de Discourse (aunque puedes modificar el script según la configuración que prefieras). Funciona de manera similar a una categoría de feed RSS.
Necesitarás un token de Hetzner, una clave API de Discourse y el ID de la categoría de Discourse donde quieras que se publiquen los temas. El script se puede modificar para incluir un filtro que especifique la ubicación (este busca en todas sus ubicaciones).
paso 1: obtener tokens API
- token API de Hetzner: ve a tu consola de Hetzner Cloud → selecciona tu proyecto → luego haz clic en seguridad a la izquierda → tokens API → generar token (con solo lectura está bien). Copia y guarda esta clave.
- clave API de Discourse: ve a la administración de Discourse → API → crea una nueva clave (usuario del sistema, todos los endpoints está bien). Copia y guarda esta también.
paso 2: instalar jq
Conéctate por SSH a tu servidor actual de Hetzner e instala el analizador JSON jq (solo tarda unos segundos):
apt-get update
apt-get install jq -y
paso 3: configurar el script de seguimiento
En tu servidor actual de Hetzner, crea el siguiente script bash:
nano /root/hetzner_tracker.sh
Pega este código dentro (tendrás que insertar tus claves API reales, la URL de tu foro y el ID de la categoría donde quieres que se publiquen).
#!/bin/bash
HETZNER_TOKEN="pon_tu_nuevo_token_de_hetzner_aquí"
DISCOURSE_URL="https://tu-foro.com"
DISCOURSE_USER="system"
DISCOURSE_API_KEY="pon_tu_nueva_clave_api_de_discourse_aquí"
CATEGORY_ID=XX # ID de la categoría de tu foro Discourse
# 1. Pide a Hetzner los modelos de servidor y obtén SOLO los IDs de los modelos baratos de 8 GB (CAX21 o CX33)
TYPES_JSON=$(curl -s -H "Authorization: Bearer $HETZNER_TOKEN" "https://api.hetzner.cloud/v1/server_types")
TARGET_IDS=$(echo "$TYPES_JSON" | jq -c '[.server_types[] | select(.name == "cax21" or .name == "cx33") | .id]')
# 2. Pide a Hetzner los niveles de stock en tiempo real de todos los centros de datos.
DC_JSON=$(curl -s -H "Authorization: Bearer $HETZNER_TOKEN" "https://api.hetzner.cloud/v1/datacenters")
# 3. Comprueba TODAS las ubicaciones para ver si nuestros modelos específicos están en la lista de "disponibles".
MATCHES=$(echo "$DC_JSON" | jq -r --argjson targets "$TARGET_IDS" '
.datacenters[] |
.location.name as $loc |
.name as $dc |
.server_types.available[] |
select(. as $avail | $targets | index($avail)) |
"- Ubicación: \($loc | ascii_upcase) (\($dc)) - ID del modelo de servidor: \(.)"
')
# 4. Si encontramos una coincidencia, construye la publicación de Discourse y ¡envíala!
if [ -n "$MATCHES" ]; then
RAW_TEXT="¡Un servidor económico de 8 GB (CAX21 o CX33) está disponible ahora!
**Coincidencias encontradas:**
$MATCHES
[¡Ve a la consola de Hetzner ahora!](https://console.hetzner.cloud/)"
PAYLOAD=$(jq -n --arg title "🚨 ALERTA HETZNER: ¡Servidor de 8 GB en stock!" \
--arg raw "$RAW_TEXT" \
--argjson cat "$CATEGORY_ID" \
'{title: $title, raw: $raw, category: $cat}')
curl -s -X POST "$DISCOURSE_URL/posts.json" \
-H "Api-Key: $DISCOURSE_API_KEY" \
-H "Api-Username: $DISCOURSE_USER" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
# Desactiva el script después de enviar para que no spamee tu foro
chmod -x "$0"
fi
Guarda el archivo (ctrl+o, enter, ctrl+x) y luego hazlo ejecutable:
chmod +x /root/hetzner_tracker.sh
paso 4: automatizar el script
Abre un archivo de configuración de programación cron:
crontab -e
Añade esta línea al final del código existente:
*/5 * * * * /root/hetzner_tracker.sh
cómo funciona:
cada 5 minutos, tu servidor preguntará en silencio a Hetzner: “¿tienes algún servidor disponible hoy?”
si Hetzner dice que sí, el script utiliza inmediatamente tu API de Discourse para crear un tema completamente nuevo en la categoría especificada, y si tienes configurado Discourse para notificarte sobre nuevos temas, tu correo electrónico y/o teléfono deberían vibrarte.
Aquí tienes un ejemplo de publicación de tema de cuando buscaba un servidor CPX31 de 8 GB específico en la zona de EE. UU.
una vez que publica correctamente, el script desactiva sus propios permisos de ejecución (chmod -x) para que no spamee tu foro con cientos de publicaciones mientras el servidor esté en stock.
no te preocupes, lo he usado muchas veces y no te limitará por tasa.