Dreamhost
Inventory and back up DreamHost shared-hosting accounts over SSH, and manage DreamHost DNS records through the official API. WHAT IT DOES
Gives a read-first inventory of a DreamHost shell account: the full home directory tree, likely application configuration files, redacted database references, mail directories, symlinks and special files, repository metadata, and crontab hints. It can also reconcile DNS records without modifying DreamHost-managed records. Use it to discover what must be preserved before a migration or retirement, rather than assuming the first rsync captured everything.
INSTALL
swamp extension pull @svendowideit/dreamhostDEPENDENCIES
None. SSH, rsync, and a DreamHost API key are expected to be available; no other extension is required for the inventory and DNS capabilities.
RUN
# Create an inventory behavior once, then confirm account and host details
swamp model create @svendowideit/dreamhost/inventory dreamhost-inventory \
--global-arg host=dreamhost.example --global-arg user=myshelluser
swamp model method run dreamhost-inventory accountInfo
# Build a recursive home-directory manifest of that account
swamp model method run dreamhost-inventory homeManifest \
--input maxEntries=100000
# Create a DNS behavior and export its zones for cutover planning
swamp model create @svendowideit/dreamhost/dns dreamhost-dns \
--global-arg 'authToken=${{ vault.get("dreamhost", "API_KEY") }}'
swamp model method run dreamhost-dns listZones
# Fan out the full inventory workflow across several shell usernames on one host
swamp workflow run @svendowideit/dreamhost-inventory-all \
--input host=dreamhost.example \
--input 'usernames=["shell-user-one","shell-user-two"]'
# Back up one account's remote files to a local directory
swamp model method run dreamhost-inventory backup \
--input localPath=./dreamhost-backup-fosiki
# Verify the local backup against the recorded inventory manifest
swamp model method run dreamhost-inventory verifyBackup \
--input localPath=./dreamhost-backup-fosikiCONFIGURE
All SSH-based models use these global arguments:
host SSH host (required)
user DreamHost shell username (required)
port SSH port (default 22)
identityFile Private key path (optional)
identityContent Vault-provided private key (optional)
password SSH password via sshpass (discouraged)
sshOptions Extra ssh -o options (default [])
remotePath Remote web root for site publishing (optional)DNS models require an authToken with the DNS commands enabled.
UPGRADE
Nothing is installed on the host. Bring an existing install up to date with:
swamp extension update @svendowideit/dreamhost
Behavior definitions and their global arguments remain valid across
releases; recreated workflow files (if any) are noted in the release
notes and validated with swamp workflow validate.
WHAT IT INSTALLS
Nothing on the host. It only reads remote state and local vault secrets, writes swamp resources, and can call the DreamHost DNS API.
Global Arguments
| Argument | Type | Description |
|---|---|---|
| authToken? | string | DreamHost API key; use a vault expression, e.g. |
| apiBase? | string | DreamHost API base URL |
| Argument | Type | Description |
|---|---|---|
| zone? | string | Only return records in this zone (domain), e.g. example.com |
| Argument | Type | Description |
|---|---|---|
| record | string | Record name: a full name (www.example.com), a short label (www) |
| type | string | Record type: A, AAAA, CNAME, MX, NAPTR, NS, SRV, or TXT |
| value | string | Record value |
| comment? | string | Optional comment stored with the record |
| zone? | string | Zone used to resolve a short record name (required when `record` has no dot) |
| Argument | Type | Description |
|---|---|---|
| record | string | Record name (full name, short label, or @) |
| type | string | Record type |
| value | string | Record value (must match exactly) |
| zone? | string | Zone used to resolve a short record name (required when `record` has no dot) |
| Argument | Type | Description |
|---|---|---|
| zone | string | Zone (domain) whose records are reconciled |
| records | array | Desired record set for the zone |
| prune? | boolean | Delete editable records in the zone that are absent from `records`; |
| dryRun? | boolean | Compute the diff without applying any changes |
Resources
| Argument | Type | Description |
|---|---|---|
| host? | string | |
| user? | string |
| Argument | Type | Description |
|---|---|---|
| host? | string | |
| user? | string | |
| maxEntries? | number | Maximum paths to include in one resource |
| Argument | Type | Description |
|---|---|---|
| host? | string | |
| user? | string |
| Argument | Type | Description |
|---|---|---|
| host? | string | |
| user? | string |
| Argument | Type | Description |
|---|---|---|
| host? | string | |
| user? | string |
| Argument | Type | Description |
|---|---|---|
| host? | string | |
| user? | string |
| Argument | Type | Description |
|---|---|---|
| host? | string | |
| user? | string |
| Argument | Type | Description |
|---|---|---|
| host? | string | |
| user? | string |
| Argument | Type | Description |
|---|---|---|
| host? | string | |
| user? | string | |
| localPath? | string | Local directory that receives the remote account |
| remotePath? | string | Remote root to back up (default: home, ~) |
| delete? | boolean | Delete local files absent from the remote account |
| dryRun? | boolean | Show what would change without transferring anything |
| checksum? | boolean | Use checksums, not size/time, to decide what to transfer |
| approveDiskUsage? | boolean | Approve the backup when free disk space would drop below 10 percent |
| excludes? | array | Extra rsync exclude patterns for this backup |
| rsyncArgs? | array | Extra rsync arguments for this backup |
| Argument | Type | Description |
|---|---|---|
| localPath | string | Local backup directory to verify |
| host? | string | |
| user? | string |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| host | string | SSH host — the domain (example.com), a DreamHost server hostname, or |
| user | string | DreamHost shell username |
| remotePath? | string | Remote web root, e.g. ~/example.com/ (required unless set per deploy) |
| port? | number | SSH port |
| identityFile? | string | Path to an SSH private key; defaults to ssh's own key selection |
| identityContent? | string | Inline SSH private key (use a vault expression); written to a temp |
| password? | string | SSH password (use a vault expression); requires sshpass. Prefer a key. |
| sshOptions? | array | Extra ssh options, e.g. ['StrictHostKeyChecking=accept-new'] |
| excludes? | array | Default rsync exclude patterns for deploy |
| rsyncArgs? | array | Extra rsync arguments applied to every deploy |
| remoteCommand? | string | Remote rsync binary (DreamHost servers have rsync preinstalled) |
| Argument | Type | Description |
|---|---|---|
| localPath | string | Local directory to publish |
| remotePath? | string | Override the remote web root for this deploy |
| delete? | boolean | Delete remote files absent locally (rsync --delete) |
| dryRun? | boolean | Show what would change without transferring anything (rsync -n) |
| excludes? | array | Override the default exclude patterns for this deploy |
| rsyncArgs? | array | Extra rsync arguments for this deploy |
| Argument | Type | Description |
|---|---|---|
| remotePath? | string | Remote path to test for existence |
| Argument | Type | Description |
|---|---|---|
| remotePath? | string | Remote path to inspect |
Resources
Inventory multiple DreamHost shell accounts through a shared `@svendowideit/dreamhost/inventory` model. Provide the DreamHost SSH host and a list of shell usernames; the workflow runs each account's account info, home manifest, configuration, database reference, mail, special-file, repository, and crontab inventory.
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented0/1missing
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit1/2partial
- @std/assert--jsr:@std/assert@1 is a range; audited 1.0.19, the version the registry resolved
1 dependency found
- jsr:@std/assert@1 -- audited 1.0.19
- Docs keep secrets in a vault1/1earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License2/2earned
- Verified public repository2/2earned
Spawns a subprocess with Deno.Command().
- models/dreamhost_site.ts:428 — no reason given