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
Hetznercx22 · €4.51/mocx32 · 4 vCPU / 8 GB / 80 GB · €9.42/mocx42 · 8/16/160 · €19.69/mo
ScalewayDEV1-S · €3.65/moDEV1-L · 4 / 8 / 80 · €14.61/moPRO2-S · 4/16/40 · ~€36/mo
DigitalOceans-2vcpu-4gb · $24/mos-4vcpu-8gb · 4 / 8 / 160 · $48/mos-8vcpu-16gb · 8/16/320 · $96/mo
Vultrvc2-2c-4gb · $24/movc2-4c-8gb · 4 / 8 / 160 · $48/movc2-6c-16gb · 6/16/320 · $96/mo
Linodeg6-standard-2 · $24/mog6-standard-4 · 4 / 8 / 160 · $48/mog6-standard-6 · 6/16/320 · $96/mo
GCPe2-medium · ~$24/moe2-standard-2 · 2 / 8 / 100 · ~$48/moe2-standard-4 · 4/16/200 · ~$96/mo
AWS EC2t3.medium · ~$30/mot3.large · 2 / 8 / 100 EBS · ~$60/mot3.xlarge · 4/16/200 · ~$120/mo
AzureStandard_B2s · ~$30/moStandard_B2ms · 2 / 8 / 100 · ~$60/moStandard_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.

Universal — clone and pick a cloud
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/mo

Default: 3× cx22 (2 vCPU, 4 GB RAM) in Nuremberg. Cheapest option here, simplest API. Excellent for evaluation.

Prerequisites
brew install hcloud  # or apt/dnf
export HCLOUD_TOKEN="..."  # console.hetzner.cloud → Security → API Tokens
Bootstrap
cd wolfstack-cloud-bootstrap/hetzner && ./bootstrap.sh

DigitalOcean

≈ $72/mo

Default: 3× s-2vcpu-4gb in NYC3. Friendly CLI, predictable billing, popular with SMB teams.

Prerequisites
brew install doctl
doctl auth init  # paste API token
Bootstrap
cd wolfstack-cloud-bootstrap/digitalocean && ./bootstrap.sh

Scaleway

≈ €11/mo

Default: 3× DEV1-S in Paris. Cheapest European option after Hetzner; useful for EU data-residency requirements.

Prerequisites
brew install scw
scw init  # paste access + secret keys
Bootstrap
cd wolfstack-cloud-bootstrap/scaleway && ./bootstrap.sh

Vultr

≈ $60/mo

Default: 3× vc2-2c-4gb in Newark. Wide region coverage including hard-to-reach markets (India, Australia, Mexico, Korea).

Prerequisites
brew install vultr/vultr-cli/vultr-cli
export VULTR_API_KEY="..."  # my.vultr.com → Settings → API
Bootstrap
cd wolfstack-cloud-bootstrap/vultr && ./bootstrap.sh

Linode (Akamai Cloud)

≈ $72/mo

Default: 3× g6-standard-2 in us-east. Predictable pricing, decent global presence, integrated with Akamai’s edge network.

Prerequisites
pip install linode-cli  # or brew install linode-cli
linode-cli configure  # paste personal access token
Bootstrap
cd wolfstack-cloud-bootstrap/linode && ./bootstrap.sh

AWS EC2

≈ $45/mo

Default: 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.

Prerequisites
brew install awscli
aws configure  # or aws configure sso
Bootstrap
cd wolfstack-cloud-bootstrap/aws && ./bootstrap.sh

Google Cloud Platform

≈ $72/mo

Default: 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.

Prerequisites
brew install --cask google-cloud-sdk
gcloud auth login
gcloud config set project YOUR_PROJECT_ID
Bootstrap
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.

Prerequisites
brew install azure-cli
az login
Bootstrap
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:

Set a password for the dashboard login
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.

Tear down everything tagged with the prefix
./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.

View on GitHub See pricing

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.

Esc