Spin up a WolfStack cluster on any cloud — in 90 seconds
One bash script per cloud. Provisions N VMs, installs WolfStack via cloud-init, wires up firewall rules + SSH keys + tags, and prints next steps. Single command to tear it all down.
Hetzner · AWS EC2 · Google Compute Engine · Microsoft Azure · DigitalOcean · Vultr · Linode · Scaleway
How this works
Each script is a thin layer over your provider’s own CLI (hcloud, aws, gcloud, az, doctl, vultr-cli, linode-cli, scw). It calls the provider’s API to provision N VMs in parallel with a cloud-init payload that installs WolfStack, then SSHes into each VM to wire them into a working cluster. Tags everything with your chosen prefix so --destroy can find it again.
No orchestration daemon on our side, no hosted bootstrap service, no credential storage we control. Your cloud credentials live where they already do (~/.aws/credentials, HCLOUD_TOKEN, gcloud auth, etc.) and the script just calls the provider CLI on your behalf. Read the source before you run it — that’s the whole pitch.
The cluster auto-forms: a shared cluster secret is generated locally and distributed via cloud-init, then after all VMs are reachable the script SSHes into each, builds a unified nodes.json with every peer, pushes it back, and restarts WolfStack. No token-pasting, no manual Add-Node clicks. End-to-end it’s ~90 seconds from ./bootstrap.sh to a working cluster.
Sizing — small / medium / large
Every script supports --size small|medium|large (default: medium). 4 GB RAM is too tight for real Docker / LXC / VM workloads — that’s why medium is the default. Pass --type with an explicit provider instance type if you need something outside this range.
| Provider | small (eval) | medium (default) | large |
|---|---|---|---|
| Hetzner | cx22 · €4.51/mo | cx32 · 4 vCPU / 8 GB / 80 GB · €9.42/mo | cx42 · 8/16/160 · €19.69/mo |
| Scaleway | DEV1-S · €3.65/mo | DEV1-L · 4 / 8 / 80 · €14.61/mo | PRO2-S · 4/16/40 · ~€36/mo |
| DigitalOcean | s-2vcpu-4gb · $24/mo | s-4vcpu-8gb · 4 / 8 / 160 · $48/mo | s-8vcpu-16gb · 8/16/320 · $96/mo |
| Vultr | vc2-2c-4gb · $24/mo | vc2-4c-8gb · 4 / 8 / 160 · $48/mo | vc2-6c-16gb · 6/16/320 · $96/mo |
| Linode | g6-standard-2 · $24/mo | g6-standard-4 · 4 / 8 / 160 · $48/mo | g6-standard-6 · 6/16/320 · $96/mo |
| GCP | e2-medium · ~$24/mo | e2-standard-2 · 2 / 8 / 100 · ~$48/mo | e2-standard-4 · 4/16/200 · ~$96/mo |
| AWS EC2 | t3.medium · ~$30/mo | t3.large · 2 / 8 / 100 EBS · ~$60/mo | t3.xlarge · 4/16/200 · ~$120/mo |
| Azure | Standard_B2s · ~$30/mo | Standard_B2ms · 2 / 8 / 100 · ~$60/mo | Standard_B4ms · 4/16/200 · ~$120/mo |
3-node cluster on medium ranges from €28/mo (Hetzner) to ~$180/mo (Azure). Pricing is May 2026 list price, ex-VAT/tax. Each script prints a live cost estimate from the provider’s API before provisioning.
Quick start
Clone the repo, pick your cloud, run the script.
git clone https://github.com/wolfsoftwaresystemsltd/wolfstack-cloud-bootstrap.git
cd wolfstack-cloud-bootstrap/<cloud>
./bootstrap.sh
Default for every cloud: 3 nodes, Ubuntu 24.04 LTS, the cheapest sensible plan,
cluster prefix wolfstack. Override with --nodes N,
--type STR, --region STR, --prefix STR.
Run any script with --help for the full menu.
Pick your cloud
Costs are May 2026 list-price for a continuously-running 3-node cluster on the default plan. Each script prints a live cost estimate from the provider’s pricing API before it provisions anything.
Hetzner Cloud
≈ €13.53/moDefault: 3× cx22 (2 vCPU, 4 GB RAM) in Nuremberg. Cheapest option here, simplest API. Excellent for evaluation.
brew install hcloud # or apt/dnf
export HCLOUD_TOKEN="..." # console.hetzner.cloud → Security → API Tokens
cd wolfstack-cloud-bootstrap/hetzner && ./bootstrap.sh
DigitalOcean
≈ $72/moDefault: 3× s-2vcpu-4gb in NYC3. Friendly CLI, predictable billing, popular with SMB teams.
brew install doctl
doctl auth init # paste API token
cd wolfstack-cloud-bootstrap/digitalocean && ./bootstrap.sh
Scaleway
≈ €11/moDefault: 3× DEV1-S in Paris. Cheapest European option after Hetzner; useful for EU data-residency requirements.
brew install scw
scw init # paste access + secret keys
cd wolfstack-cloud-bootstrap/scaleway && ./bootstrap.sh
Vultr
≈ $60/moDefault: 3× vc2-2c-4gb in Newark. Wide region coverage including hard-to-reach markets (India, Australia, Mexico, Korea).
brew install vultr/vultr-cli/vultr-cli
export VULTR_API_KEY="..." # my.vultr.com → Settings → API
cd wolfstack-cloud-bootstrap/vultr && ./bootstrap.sh
Linode (Akamai Cloud)
≈ $72/moDefault: 3× g6-standard-2 in us-east. Predictable pricing, decent global presence, integrated with Akamai’s edge network.
pip install linode-cli # or brew install linode-cli
linode-cli configure # paste personal access token
cd wolfstack-cloud-bootstrap/linode && ./bootstrap.sh
AWS EC2
≈ $45/moDefault: 3× t3.small in us-east-1. The script handles AMI lookup (Ubuntu 24.04 LTS via SSM), security-group creation, key-pair import, and tags everything with your prefix.
brew install awscli
aws configure # or aws configure sso
cd wolfstack-cloud-bootstrap/aws && ./bootstrap.sh
Google Cloud Platform
≈ $72/moDefault: 3× e2-medium in us-central1-a. Creates a tag-scoped firewall rule so the cluster opens only the WolfStack ports it needs — rest of the project untouched.
brew install --cask google-cloud-sdk
gcloud auth login
gcloud config set project YOUR_PROJECT_ID
cd wolfstack-cloud-bootstrap/gcp && ./bootstrap.sh
Microsoft Azure
≈ $90/mo
Default: 3× Standard_B2s in eastus. Each cluster lives in its own resource group (<prefix>-rg) so --destroy is one az group delete call.
brew install azure-cli
az login
cd wolfstack-cloud-bootstrap/azure && ./bootstrap.sh
After bootstrap — the cluster is already formed
The script auto-forms the cluster end-to-end. By the time it exits, every node is in nodes.json on every other node, the shared cluster secret is in place, and WolfStack’s 10-second polling loop has reconciled state. Open https://<any-node-ip>:8553, log in, and the dashboard shows all three nodes online and federated.
Login uses the system user’s password — root on most cloud images, ubuntu on AWS, azureuser on Azure. Cloud images don’t ship with a default password (SSH-key only); set one via SSH if you want to log in to the dashboard:
ssh user@<ip> 'sudo passwd $USER'
If a node hasn’t auto-joined within ~30 seconds (rare but possible if cloud-init was unusually slow), the manual fallback still works: SSH in, grab /etc/wolfstack/join-token, paste into the master’s Cluster → Add Node form. Each node generates its own token at install time regardless of whether auto-join succeeded.
Tear-down
Every script supports --destroy. It deletes the VMs, security groups / firewall rules / NSGs, SSH keys, and (on Azure) the entire resource group. Nothing is retained — you stop being billed for the cluster as soon as the script reports success.
./bootstrap.sh --destroy --prefix wolfstack
Lists what it’s about to delete and asks for confirmation. Pass --yes to skip the prompt for scripted use (CI, batch teardowns, etc.).
Security notes
- Credentials never leave your machine. The scripts call your provider’s CLI directly. Wolf Software Systems Ltd never sees, stores, or proxies your cloud credentials.
- Default firewall rules open ports 22, 8553, 8554 (TCP) and 9600, 9601 (UDP) to
0.0.0.0/0. Lock these down to your office IP or via the WireGuard bridge once the cluster’s live. - Self-signed TLS on the dashboard by default; the bootstrap health-check ignores cert errors. Switch to Let’s Encrypt via the Certificates page once nodes are reachable on a real domain.
- SSH keys are uploaded to the provider’s IAM/SSH-key service and reused. Generate a fresh key for cluster bootstrapping if you don’t want your existing key associated with the cluster:
ssh-keygen -t ed25519 -f ~/.ssh/wolfstack-cluster -C wolfstack - Cleanup-on-failure. If the third VM fails to launch, the first two are deleted automatically — no orphan billing.
Read the source
Every script is ~250-400 lines of bash, fully shellcheck-clean, with set -euo pipefail and consistent error handling. We expect operators to read it before running it.
A note on commercial use
The bootstrap scripts and WolfStack itself are dual-licensed — free for personal & non-commercial use under PolyForm Noncommercial 1.0.0; commercial use requires an active subscription to Homelab, Team, MSP, or Enterprise. Spinning up a cloud cluster for a company or for paying customers is commercial use — pick a tier on the pricing page.