Personalmente, non eseguerei una configurazione con due container su qualsiasi cosa inferiore a 8GB di RAM, 4 CPU e 80GB di disco, ma la tua esperienza e situazione potrebbero essere diverse. Sto gestendo un forum relativamente attivo su questa configurazione Hetzner con circa 300 utenti attivi e da 70 a 100 DEU.
Script bash per trovare server Hetzner
Ok, questo potrebbe essere utile a te e ad altri che leggono questo. È specifico per Hetzner ma probabilmente può essere adattato per altri fornitori VPS (non chiedermi di farlo per te, però).
Questo è uno script bash semplice che controllerà ogni 5 minuti la disponibilità di un server Hetzner CAX21 o CX33 e lo pubblicherà come argomento in una categoria della tua istanza Discourse corrente (puoi comunque modificare lo script per la configurazione che preferisci). Funziona in modo simile a una categoria feed RSS.
Avrai bisogno di un token Hetzner e di una chiave API Discourse, nonché dell’ID della categoria Discourse desiderata in cui pubblicare gli argomenti. Lo script può essere modificato per includere un filtro per specificare anche la posizione (questo cerca in tutte le loro posizioni).
Passo 1: ottenere i token API
- Token API Hetzner: vai nella tua console cloud Hetzner → seleziona il tuo progetto → poi clicca su sicurezza a sinistra → token API → genera token (solo lettura va bene). Copia e salva questa chiave.
- Chiave API Discourse: vai nell’amministratore Discourse → API → crea una nuova chiave (utente di sistema, tutti gli endpoint va bene). Copia e salva anche questa.
Passo 2: installare jq
Accedi via SSH al tuo server Hetzner corrente e installa il parser JSON jq (ci vogliono solo pochi secondi):
apt-get update
apt-get install jq -y
Passo 3: configurare lo script di tracciamento
Sul tuo server Hetzner corrente, crea il seguente script bash:
nano /root/hetzner_tracker.sh
Incolla questo codice all’interno (dovrai inserire le tue chiavi API effettive, l’URL del forum e l’ID della categoria in cui vuoi che pubblichi).
#!/bin/bash
HETZNER_TOKEN="inserisci_il_tuo_nuovo_token_hetzner_qua"
DISCOURSE_URL="https://il-tuo-forum.com"
DISCOURSE_USER="system"
DISCOURSE_API_KEY="inserisci_la_tua_nuova_chiave_api_discourse_qua"
CATEGORY_ID=XX # ID della categoria del tuo forum Discourse
# 1. Chiedi a Hetzner i modelli di server e ottieni SOLO gli ID per i modelli economici da 8GB (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. Chiedi a Hetzner i livelli di scorte in tempo reale di tutti i datacenter.
DC_JSON=$(curl -s -H "Authorization: Bearer $HETZNER_TOKEN" "https://api.hetzner.cloud/v1/datacenters")
# 3. Controlla TUTTE le posizioni per vedere se i nostri modelli specifici sono nell'elenco "disponibile".
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)) |
"- Posizione: \($loc | ascii_upcase) (\($dc)) - ID Modello Server: \(.)"
')
# 4. Se abbiamo trovato una corrispondenza, costruisci il post Discourse e invialo!
if [ -n "$MATCHES" ]; then
RAW_TEXT="Un server economico da 8GB (CAX21 o CX33) è ora disponibile!
**Corrispondenze trovate:**
$MATCHES
[Vai alla console Hetzner ora!](https://console.hetzner.cloud/)"
PAYLOAD=$(jq -n --arg title "🚨 ALLARME HETZNER: Server da 8GB in magazzino!" \
--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"
# Disabilita lo script dopo l'invio in modo da non spammare il tuo forum
chmod -x "$0"
fi
Salva il file (ctrl+o, invio, ctrl+x), e poi rendilo eseguibile:
chmod +x /root/hetzner_tracker.sh
Passo 4: automatizzare lo script
Apri un file di configurazione della pianificazione cron:
crontab -e
Aggiungi questa riga in fondo al codice esistente:
*/5 * * * * /root/hetzner_tracker.sh
Come funziona:
Ogni 5 minuti, il tuo server chiederà silenziosamente a Hetzner, “hai qualche server disponibile oggi?”
Se Hetzner dice di sì, lo script utilizza immediatamente la tua API Discourse per creare un nuovo argomento nella categoria specificata e, se hai configurato Discourse per notificarti i nuovi argomenti, la tua email e/o il tuo telefono dovrebbero vibrare.
Ecco un esempio di post di argomento quando cercavo un server CPX31 da 8GB specifico nell’area USA.
Una volta pubblicato con successo, lo script disabilita i propri permessi di esecuzione (chmod -x) in modo da non spammare il tuo forum con centinaia di post mentre il server è in magazzino.
Non preoccuparti, l’ho usato molte volte e non ti limiterà le richieste.
