Skip to main content

ign8vault

Spin up a production HashiCorp Vault + Consul stack in minutes — Hetzner Cloud VPS, Cloudflare DNS, Let's Encrypt TLS, and daily restic backups to Hetzner StorageBox.

pipx install ign8vault
ign8vault quickstart   # full step-by-step guide

Quickstart

1. Install

pipx install ign8vault

2. Configure

ign8vault setenv

Walks you through every credential interactively with hints on where to find each value. Writes a .env file in the current directory. Run it again after provisioning to fill in VAULT_ADDR and VAULT_TOKEN.

Variable Where to get it
IGN8_DOMAIN Your base domain, e.g. example.com
IGN8_ADMIN_EMAIL Your email — used for Let's Encrypt notifications
IGN8_HETZNER_TOKEN console.hetzner.cloud → Project → Security → API Tokens
IGN8_CLOUDFLARE_TOKEN dash.cloudflare.com → Profile → API Tokens (Zone:DNS:Edit)
IGN8_CLOUDFLARE_ZONE_ID Cloudflare dashboard → select domain → Overview → right sidebar
IGN8_STORAGEBOX_HOST Hetzner StorageBox hostname — optional, skip for no backups
IGN8_STORAGEBOX_PASSWORD Hetzner account → StorageBox details

3. Provision

ign8vault up

Creates a Hetzner VPS, Cloudflare DNS records (vault.<domain> + consul.<domain>), installs Consul + Vault + nginx + TLS, and sets up daily backups. Credentials are saved to .ign8vault/vault-init.json — keep the unseal keys safe.

4. Finish configuration

ign8vault setenv

Re-run setenv to fill in VAULT_ADDR and VAULT_TOKEN from .ign8vault/vault-init.json. Existing values are preserved.

5. Create users (optional)

ign8vault adduser <username>

Creates a Vault userpass account and a scoped SSH-signing token. Use the printed token as VAULT_TOKEN for ign8vault sign.

6. Sign your SSH key

ign8vault sign

Generates an ed25519 keypair in ~/.ssh/signedssh/ and signs it via the Vault SSH CA. Re-run any time to renew (8-hour validity by default).

7. Configure a target host

ign8vault setupsshd --host <ip> --user <user> --password <pw>

Installs the Vault CA public key on the host, reloads sshd, and adds a ~/.ssh/config entry. After this, ssh <alias> works with your signed cert — no passwords, no per-host authorized_keys.

8. Connect

ssh <alias>

Tear down

ign8vault destroy

Deletes the Hetzner server and Cloudflare DNS records.


Commands

Command Description
ign8vault up Provision the full stack
ign8vault adduser <name> Create a Vault user + SSH-signing token
ign8vault sign Create/sign the SSH keypair
ign8vault setupsshd Configure a host to trust the Vault CA
ign8vault setenv Write Vault env vars to shell profile
ign8vault quickstart Print this guide in the terminal
ign8vault destroy Tear it all down

State

All local state is stored in .ign8vault/:

  • keys/ — server provisioning SSH keypair
  • vault-init.json — root token + unseal keys (chmod 600, keep safe)
  • state.json — Hetzner server ID (used by destroy)

Signed SSH keys live in ~/.ssh/signedssh/ and are separate from the provisioning state.

After a reboot

Vault requires 3 of the 5 unseal keys after every restart:

vault operator unseal   # run 3 times with different keys

Metadata

Release files for ign8vault 2.0.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ign8vault 2.0.10
File Size Uploaded Provenance Actions
ign8vault-2.0.10.tar.gz 20.7 kB Without provenance Details for ign8vault-2.0.10.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ign8vault 2.0.10
File Interpreter ABI Platform Actions
ign8vault-2.0.10-py3-none-any.whl Python 3 none any Details for ign8vault-2.0.10-py3-none-any.whl

Total release size: 43.1 kB

Release files / ign8vault-2.0.10.tar.gz

Download URL ign8vault-2.0.10.tar.gz
Size 20.7 kB
Tags Source
SHA-256 checksum
How to use checksums
6bb14b1c0cfb21cd8604f830c7f1e64116180293022c0b795b5dd339e91635e5
BLAKE2b-256 checksum
How to use checksums
14f37c3d7879b43af11816c97ec1f7c2d56ecb754dfff9e5705a11af7945dafd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.4 CPython/3.14.4 Darwin/25.4.0

Release files / ign8vault-2.0.10-py3-none-any.whl

Download URL ign8vault-2.0.10-py3-none-any.whl
Size 22.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4741e2d8c34a136e4afb12b1b3eb699ee7a143c4ed7beff246142ea35ac86241
BLAKE2b-256 checksum
How to use checksums
4399dd3dc6730c64686f2b29ee5668f0d524de78260d1560784d489e7e586c00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.4 CPython/3.14.4 Darwin/25.4.0

Security for ign8vault 2.0.10

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.0.10 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page