Nomploy Nomad Packs

← All packs

vaultwarden v0.1.0

Identity

Vaultwarden — a lightweight, Rust-based server implementing the Bitwarden API (password manager) for self-hosting. Deployed as a host-networked Nomad service with a persistent Docker volume; uses the bundled SQLite database.

nomad-pack run vaultwarden --registry nomploy
1 task http 8280 1 volume image vaultwarden/server:latest
Variables 11
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run vaultwarden -f values.hcl --registry nomploy
# The name of the Nomad job.
job_name = "vaultwarden"

# The Nomad namespace to deploy into.
namespace = "default"

# The datacenters to deploy to.
datacenters = ["*"]

# The Vaultwarden container image.
image = "vaultwarden/server:latest"

# Host port for the Vaultwarden web vault / API. Default 8280 (avoids 8222 used by the nats pack's monitoring).
port = 8280

# Public URL Vaultwarden is served at (e.g. https://vault.example.com). STRONGLY recommended — WebAuthn/U2F, some clients, and the admin page need it correct. Empty = leave unset (works for basic LAN use over the IP).
domain = ""

# Allow open user registration. Set false once your users have signed up (or use invitations from the admin page).
signups_allowed = true

# Argon2/plain token guarding the /admin page. Empty = admin page DISABLED (recommended unless you need it). If set, treat it as a secret.
admin_token = ""

# Docker named volume for /data (SQLite DB, RSA keys, attachments, icon cache). All of Vaultwarden's state — BACK IT UP. Vaultwarden runs as root, so a fresh volume is writable.
data_volume = "vaultwarden_data"

# Placement constraints — pin to one node so the local volume stays put. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []

# The task resources.
resources = {
    cpu    = 300
    memory = 256
  }
NameTypeDefaultDescription
job_name string
"vaultwarden"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"vaultwarden/server:latest"
The Vaultwarden container image.
port number
8280
Host port for the Vaultwarden web vault / API. Default 8280 (avoids 8222 used by the nats pack's monitoring).
domain string
""
Public URL Vaultwarden is served at (e.g. https://vault.example.com). STRONGLY recommended — WebAuthn/U2F, some clients, and the admin page need it correct. Empty = leave unset (works for basic LAN use over the IP).
signups_allowed bool
true
Allow open user registration. Set false once your users have signed up (or use invitations from the admin page).
admin_token key string
""
Argon2/plain token guarding the /admin page. Empty = admin page DISABLED (recommended unless you need it). If set, treat it as a secret.
data_volume string
"vaultwarden_data"
Docker named volume for /data (SQLite DB, RSA keys, attachments, icon cache). All of Vaultwarden's state — BACK IT UP. Vaultwarden runs as root, so a fresh volume is writable.
constraints list
[]
Placement constraints — pin to one node so the local volume stays put. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 300
    memory = 256
  }
The task resources.
Readme

vaultwarden

Vaultwarden — a lightweight, Rust-based server that implements the Bitwarden API, so you can self-host a password manager and use the official Bitwarden apps/extensions against it. Host-networked Nomad service with a persistent Docker volume; uses the bundled SQLite database.

Usage

nomad-pack registry add nomploy github.com/Nomploy/nomad-packs
nomad-pack run vaultwarden --registry nomploy

In nomploy: create a Compose service, type Nomad Pack, pack vaultwarden, custom registry github.com/Nomploy/nomad-packs, then Deploy.

Open the web vault, create your account, then point Bitwarden clients at the same URL.

Serve it over HTTPS

Vaultwarden serves plain HTTP here, but in practice you must front it with a reverse proxy that terminates TLS — browser crypto (unlock, WebAuthn) and the Bitwarden clients require HTTPS. Set domain to your public https://… URL so links, WebAuthn and the admin page work.

Key variables

Variable Default Notes
image vaultwarden/server:latest Pin a tag in production.
port 8280 Web vault / API host port (off 8222 to dodge the nats pack).
domain "" Public https:// URL — strongly recommended.
signups_allowed true Turn off after your users register (or invite from /admin).
admin_token "" Empty = /admin disabled. Set a strong token to enable it.
data_volume vaultwarden_data SQLite DB + keys + attachments. Back it up.
constraints [] Pin to a node so the local volume stays put.
resources cpu 300 / mem 256 Lightweight.

Notes