pessoalmente, eu não executaria uma configuração de contêiner dual em qualquer coisa com menos de 8 GB de RAM, 4 CPUs e 80 GB de disco, mas sua experiência e situação podem ser diferentes. estou executando um fórum relativamente movimentado nesta configuração da Hetzner com cerca de 300 usuários ativos, e de 70 a 100 DEU.
script bash para encontrar servidor Hetzner
ok, isso pode ajudar você e outros que lerem isso. é específico para a Hetzner, mas provavelmente pode ser adaptado para outros fornecedores de VPS (não me peça para fazer isso por você).
este é um script bash simples que verificará a cada 5 minutos se há um servidor Hetzner CAX21 ou CX33 disponível e publicará como um tópico em uma categoria na sua instância atual do Discourse (você pode alterar o script para a configuração de sua escolha). funciona de maneira semelhante a uma categoria de feed RSS.
você precisará de um token da Hetzner e de uma chave de API do Discourse, além do ID da categoria do seu fórum Discourse desejado para onde os tópicos serão publicados. o script pode ser alterado para incluir um filtro que especifique a localização também (este procura em todas as suas localizações).
etapa 1: obter tokens de API
- token de API da Hetzner: vá para o console da nuvem da Hetzner → selecione seu projeto → depois clique em segurança à esquerda → tokens de API → gerar token (somente leitura é suficiente). copie e salve esta chave.
- chave de API do Discourse: vá para o administrador do Discourse → API → crie uma nova chave (usuário do sistema, todos os endpoints é suficiente). copie e salve esta também.
etapa 2: instalar jq
faça login via SSH no seu servidor Hetzner atual e instale o analisador JSON jq (leva apenas alguns segundos):
apt-get update
apt-get install jq -y
etapa 3: configurar o script de rastreamento
no seu servidor Hetzner atual, crie o seguinte script bash:
nano /root/hetzner_tracker.sh
cole este código dentro (você precisará inserir suas chaves de API reais, a URL do seu fórum e o ID da categoria onde deseja que os tópicos sejam publicados).
#!/bin/bash
HETZNER_TOKEN="coloque_seu_novo_token_da_hetzner_aqui"
DISCOURSE_URL="https://seu-forum.com"
DISCOURSE_USER="system"
DISCOURSE_API_KEY="coloque_sua_nova_chave_de_api_do_discourse_aqui"
CATEGORY_ID=XX # ID da categoria do seu fórum Discourse
# 1. Peça à Hetzner os modelos de servidor e obtenha APENAS os IDs dos modelos baratos de 8 GB (CAX21 ou 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. Peça à Hetzner os níveis de estoque em tempo real de todos os datacenters.
DC_JSON=$(curl -s -H "Authorization: Bearer $HETZNER_TOKEN" "https://api.hetzner.cloud/v1/datacenters")
# 3. Verifique TODAS as localizações para ver se nossos modelos específicos estão na lista "disponível".
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)) |
"- Localização: \($loc | ascii_upcase) (\($dc)) - ID do Modelo de Servidor: \(.)"
')
# 4. Se encontrarmos uma correspondência, construa a publicação do Discourse e envie!
if [ -n "$MATCHES" ]; then
RAW_TEXT="Um servidor de 8 GB econômico (CAX21 ou CX33) está agora disponível!
**Correspondências encontradas:**
$MATCHES
[Vá para o console da Hetzner agora!](https://console.hetzner.cloud/)"
PAYLOAD=$(jq -n --arg title "🚨 ALERTA HETZNER: Servidor de 8 GB em Estoque!" \
--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"
# Desabilite o script após a execução para que não spame seu fórum
chmod -x "$0"
fi
salve o arquivo (ctrl+o, enter, ctrl+x) e, em seguida, torne-o executável:
chmod +x /root/hetzner_tracker.sh
etapa 4: automatizar o script
abra um arquivo de configuração de agendamento cron:
crontab -e
Adicione esta linha ao final do código existente:
*/5 * * * * /root/hetzner_tracker.sh
como funciona:
a cada 5 minutos, seu servidor perguntará silenciosamente à Hetzner: “você tem algum servidor disponível hoje?”
se a Hetzner disser sim, o script usará imediatamente sua API do Discourse para criar um novo tópico na categoria especificada e, se você tiver o Discourse configurado para notificá-lo sobre novos tópicos, seu e-mail e/ou telefone devem vibrar.
aqui está um exemplo de publicação de tópico de quando eu estava procurando um servidor específico de 8 GB CPX31 na área dos EUA.
uma vez que a publicação for bem-sucedida, o script desabilita suas próprias permissões de execução (chmod -x) para que não spame seu fórum com centenas de publicações enquanto o servidor estiver em estoque.
não se preocupe, já usei isso muitas vezes e não vai atingir o limite de taxa para você.