Prerequisites

Proxmox host

  • Proxmox VE 8.x (7.x should work; the script only uses qm, pveum, pvesm).
  • CPU with AVX (any Intel/AMD from ~2012+). The script creates VMs with CPU type host so the flag passes through — MongoDB (Graylog’s store) crash-loops without it.
  • Internet access from the host and the VMs (image + package downloads).
  • A storage that can hold the VM disks (default sizing below), and the local storage able to hold snippets (default on).

Resource sizing

Topology RAM Disk Cores
Split — aleth-metrics 8 GB 60 GB 4
Split — aleth-logs (Graylog/OpenSearch) 12 GB 100 GB 4
Split — aleth-siem (Wazuh) 12 GB 80 GB 4
Single VM (everything) 24 GB 200 GB 4–8

Split is recommended when the host has ≥40 GB RAM; the script suggests the right default for your host.

Network

  • Decide static IPs for the VMs (recommended — they’re monitoring targets) or use DHCP reservations.
  • A domain for the web UIs. Recommended: a domain (or subdomain, e.g. lab.example.com) whose DNS is hosted in Cloudflare — Caddy obtains a publicly-trusted Let’s Encrypt wildcard certificate through the Cloudflare API (ACME DNS-01), and the deploy can create the *.lab.example.com → metrics-VM record for you. Nothing needs to be reachable from the Internet. Alternative: any internal suffix (e.g. lab.internal) on a DNS server you control, with Caddy’s private CA (TLS_MODE=internal) — you then trust its root cert on each client.
  • Firewall/router/switches that can send syslog, NetFlow/sFlow, and speak SNMP v3 — configured after deployment.

Accounts & keys to have ready

  • Cloudflare API token (for the recommended TLS mode): My Profile → API Tokens → Create Token → “Edit zone DNS” template, scoped to the zone that holds your domain, with permissions Zone → Zone → Read and Zone → DNS → Edit. The setup scripts verify the token against the Cloudflare API before continuing. It is stored only in /opt/alethurgy/.env (mode 600) on the metrics VM.
  • An email address for Let’s Encrypt expiry notices.
  • (Optional) an ntfy topic or self-hosted ntfy server for push alerts — the script defaults to public ntfy.sh with a random topic suffix.
  • (Optional, later) Anthropic API key or a local Ollama endpoint for the Grafana LLM plugin.

Nothing else is needed up front; every other credential (Grafana admin, Graylog admin, DB passwords, PVE API token) is created or generated by the setup script and stored in /opt/alethurgy/.env on each VM.

Next: Deployment.


This site uses Just the Docs, a documentation theme for Jekyll.