Persönlich würde ich keine Dual-Container-Konfiguration auf etwas weniger als 8 GB RAM, 4 CPU-Kernen und 80 GB Festplatte betreiben, aber deine Erfahrungen und deine Situation können abweichen. Ich betreibe ein relativ aktives Forum auf dieser Hetzner-Infrastruktur mit etwa 300 aktiven Nutzern und irgendwo zwischen 70 und 100 DEU.
Bash-Skript zur Suche nach Hetzner-Servern
Ok, das könnte dir und anderen, die dies lesen, helfen. Es ist spezifisch für Hetzner, kann aber wahrscheinlich für andere VPS-Anbieter angepasst werden (frag mich nicht, das für dich zu tun).
Dies ist ein einfaches Bash-Skript, das alle 5 Minuten nach einem Hetzner-Server vom Typ CAX21 oder CX33 sucht und diesen als Thema in einer Kategorie deiner aktuellen Discourse-Instanz postet (du kannst das Skript jedoch für deine gewünschte Konfiguration ändern). Es funktioniert ähnlich wie eine RSS-Feed-Kategorie.
Du brauchst einen Hetzner-Token und einen Discourse-API-Schlüssel sowie die Kategorie-ID der Discourse-Kategorie, in der die Themen gepostet werden sollen. Das Skript kann so geändert werden, dass es einen Filter enthält, um auch den Standort anzugeben (dieser sucht nach allen Standorten).
Schritt 1: API-Tokens besorgen
- Hetzner-API-Token: Gehe zu deiner Hetzner-Cloud-Konsole → wähle dein Projekt → klicke links auf Sicherheit → API-Tokens → Token generieren (Nur-Lesen ist ausreichend). Kopiere und speichere diesen Schlüssel.
- Discourse-API-Schlüssel: Gehe zu deinem Discourse-Adminbereich → API → erstelle einen neuen Schlüssel (Systembenutzer, alle Endpunkte ist in Ordnung). Kopiere und speichere auch diesen.
Schritt 2: jq installieren
Melde dich per SSH auf deinem aktuellen Hetzner-Server an und installiere den jq-JSON-Parser (das dauert nur wenige Sekunden):
apt-get update
apt-get install jq -y
Schritt 3: Das Tracker-Skript einrichten
Erstelle auf deinem aktuellen Hetzner-Server das folgende Bash-Skript:
nano /root/hetzner_tracker.sh
Füge diesen Code ein (du musst deine tatsächlichen API-Schlüssel, deine Forum-URL und die Kategorie-ID, in der gepostet werden soll, einfügen).
#!/bin/bash
HETZNER_TOKEN="put_your_new_hetzner_token_here"
DISCOURSE_URL="https://your-forum.com"
DISCOURSE_USER="system"
DISCOURSE_API_KEY="put_your_new_discourse_api_key_here"
CATEGORY_ID=XX # deine Discourse-Forum-Kategorie-ID
# 1. Frage Hetzner nach den Servermodellen und hole NUR die IDs für die günstigen 8-GB-Modelle (CAX21 oder 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. Frage Hetzner nach den Echtzeit-Beständen aller Rechenzentren.
DC_JSON=$(curl -s -H "Authorization: Bearer $HETZNER_TOKEN" "https://api.hetzner.cloud/v1/datacenters")
# 3. Prüfe ALLE Standorte, um zu sehen, ob unsere spezifischen Modelle in der Liste „verfügbar“ stehen.
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)) |
"- Standort: \($loc | ascii_upcase) (\($dc)) - Servermodell-ID: \(.)"
')
# 4. Wenn wir eine Übereinstimmung gefunden haben, erstelle den Discourse-Beitrag und sende ihn!
if [ -n "$MATCHES" ]; then
RAW_TEXT="Ein günstiger 8-GB-Server (CAX21 oder CX33) ist jetzt verfügbar!
**Gefundene Übereinstimmungen:**
$MATCHES
[Gehe jetzt zur Hetzner-Konsole!](https://console.hetzner.cloud/)"
PAYLOAD=$(jq -n --arg title "🚨 HETZNER-ALARM: 8-GB-Server auf Lager!" \
--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"
# Deaktiviere das Skript nach dem Absenden, damit es dein Forum nicht spamt
chmod -x "$0"
fi
Speichere die Datei (Strg+O, Enter, Strg+X) und mache sie dann ausführbar:
chmod +x /root/hetzner_tracker.sh
Schritt 4: Das Skript automatisieren
Öffne eine Crontab-Konfigurationsdatei:
crontab -e
Füge diese Zeile ganz am Ende des vorhandenen Codes hinzu:
*/5 * * * * /root/hetzner_tracker.sh
Wie es funktioniert:
Alle 5 Minuten fragt dein Server Hetzner leise: „Haben Sie heute verfügbare Server?“
Wenn Hetzner ja sagt, verwendet das Skript sofort deine Discourse-API, um ein brandneues Thema in deiner angegebenen Kategorie zu erstellen, und wenn du Discourse so eingerichtet hast, dass du über neue Themen benachrichtigt wirst, sollten deine E-Mail und/oder dein Telefon vibrieren.
Hier ist ein Beispielthema aus der Zeit, als ich nach einem bestimmten 8-GB-CPX31-Server in den USA suchte.
Sobald es erfolgreich gepostet wurde, deaktiviert das Skript seine eigenen Ausführungsberechtigungen (chmod -x), damit es dein Forum nicht mit Hunderten von Beiträgen spamt, während der Server auf Lager ist.
Keine Sorge, ich habe das viele Male verwendet, und du wirst nicht ratelimited.
