Files
spinifex/docs/install/install-source
Josh Siviour 58e0f2879f feat: serve the deployment CA from IMDS instead of baking it into images (#784)
Image import shelled out to virt-customize to install the deployment CA into
an imported image's trust store. The step was best-effort and skipped whenever
virt-customize was absent, which is the default: nothing in provisioning
installs guestfs-tools on a node. When it did run it mutated the image after
its checksum had been verified, it could not handle Windows guests, and it tied
CA rotation to re-importing every affected AMI.

Nothing the stack launches depended on it. ECS container instances, EKS k3s
servers and BootDirect microVMs all receive the gateway CA at launch via
user-data or fw_cfg, and boot itself needs no CA because IMDS is plain HTTP.
The only uncovered case is a customer instance whose own workload calls a
Spinifex HTTPS endpoint, which needs a pull mechanism rather than an image
mutation.

The IMDS responder now serves the CA at /spinifex/ca.pem, outside the /latest
tree so the AWS-compatible surface stays byte-identical to EC2's. The route is
token-free because a CA certificate is public material and the console already
serves it unauthenticated; the X-Forwarded-For SSRF guard still applies. The
PEM is cached and re-read on modtime change, so rotating ca.pem on a node
reaches guests without restarting vpcd.
2026-08-13 10:55:31 +10:00
..

title, description, category, tags, resources
title description category tags resources
Source Install Build Spinifex from source for development, custom builds, or contributing. Install
install
source
development
title url
Spinifex Repository https://github.com/mulgadc/spinifex
title url
Go Downloads https://go.dev/dl/

Source Installation

Build Spinifex from source for development, custom builds, or contributing.

Table of Contents


Overview

This guide builds Spinifex from source. For production deployments, the binary installer is recommended.

Supported Operating Systems:

  • Ubuntu 26.04
  • Debian 13

Instructions

Step 1. Install Dependencies

mkdir -p ~/Development/mulga && cd ~/Development/mulga
git clone https://github.com/mulgadc/spinifex.git
sudo make -C spinifex quickinstall
export PATH=$PATH:/usr/local/go/bin

Step 2. Clone Sibling Repositories

cd spinifex
./scripts/clone-deps.sh

This clones Predastore (S3) and Viperblock (EBS) alongside Spinifex.

Step 3. Development Initialisation

./scripts/dev-install.sh

This bootstraps a single-node development environment: builds binaries, configures OVN, initialises the cluster, installs the CA certificate, and starts all services.

Step 4. Verify Installation

export AWS_PROFILE=spinifex
aws ec2 describe-instance-types

If this returns a list of available instance types, your installation is working.

Congratulations! Spinifex is installed from source.

Continue to Setting Up Your Cluster to import an AMI, create a VPC, and launch your first instance.

Troubleshooting

Go Not Found in PATH

export PATH=$PATH:/usr/local/go/bin

CA Certificate Not Trusted

On a node or any host running spx/aws against the cluster:

sudo cp /etc/spinifex/ca.pem /usr/local/share/ca-certificates/spinifex-ca.crt
sudo update-ca-certificates

Inside a guest VM there is no /etc/spinifex; fetch the CA from IMDS instead:

sudo curl -fsS http://169.254.169.254/spinifex/ca.pem \
  -o /usr/local/share/ca-certificates/spinifex-ca.crt
sudo update-ca-certificates