Snapshot: full project state
This commit is contained in:
58
new_fleet_tunnel.py
Normal file
58
new_fleet_tunnel.py
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Create new cloudflared tunnel for trustgram/games/hydros on CT148 (cert-based, no API token)."""
|
||||
import io, subprocess, re
|
||||
|
||||
CF = "/root/.cloudflared"
|
||||
|
||||
# 1. create tunnel
|
||||
r = subprocess.run(["/usr/bin/cloudflared", "tunnel", "create", "thetemple-fleet"],
|
||||
cwd=CF, capture_output=True, text=True, timeout=120)
|
||||
print("CREATE:", r.stdout.strip()[-300:], r.stderr.strip()[-300:])
|
||||
m = re.search(r"Created tunnel\s+\w+\s+with id\s+([0-9a-f-]+)", r.stdout + r.stderr)
|
||||
if not m:
|
||||
m = re.search(r"([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})", r.stdout + r.stderr)
|
||||
assert m, "tunnel UUID not found in output"
|
||||
uuid = m.group(1)
|
||||
print("UUID:", uuid)
|
||||
|
||||
# 2. config
|
||||
cfg = f"""tunnel: {uuid}
|
||||
credentials-file: {CF}/{uuid}.json
|
||||
ingress:
|
||||
- hostname: trustgram.thetempleofdoom.com
|
||||
service: http://10.30.20.62:80
|
||||
- hostname: games.thetempleofdoom.com
|
||||
service: http://10.30.20.73:3000
|
||||
- hostname: hydros.thetempleofdoom.com
|
||||
service: http://10.30.20.11:3000
|
||||
- service: http_status:404
|
||||
"""
|
||||
io.open(f"{CF}/config-fleet.yml", "w", encoding="utf-8").write(cfg)
|
||||
print("CONFIG WRITTEN")
|
||||
|
||||
# 3. DNS routes
|
||||
for host in ["trustgram", "games", "hydros"]:
|
||||
d = host + ".thetempleofdoom.com"
|
||||
rr = subprocess.run(["/usr/bin/cloudflared", "tunnel", "route", "dns", uuid, d],
|
||||
cwd=CF, capture_output=True, text=True, timeout=60)
|
||||
print(f"DNS {d}:", rr.stdout.strip()[-120:], rr.stderr.strip()[-120:])
|
||||
|
||||
# 4. systemd unit
|
||||
unit = f"""[Unit]
|
||||
Description=Cloudflare Fleet Tunnel (trustgram/games/hydros)
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/cloudflared tunnel --no-autoupdate --config {CF}/config-fleet.yml run
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
"""
|
||||
io.open("/etc/systemd/system/cloudflared-fleet.service", "w", encoding="utf-8").write(unit)
|
||||
subprocess.run(["systemctl", "daemon-reload"])
|
||||
subprocess.run(["systemctl", "enable", "cloudflared-fleet"])
|
||||
r = subprocess.run(["systemctl", "restart", "cloudflared-fleet"], capture_output=True, text=True)
|
||||
print("SERVICE:", "STARTED" if r.returncode == 0 else r.stderr[:300])
|
||||
Reference in New Issue
Block a user