Deploy Hermes Agent LXC (#118) on gihyeon + IaC hygiene #1
Reference in New Issue
Block a user
Delete Branch "hermes-agent-lxc"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds and deploys the Hermes Agent (Nous Research) as unprivileged LXC #118 on the
gihyeonnode, managed by Terraform. Also bringsmain(stuck at the initial commit) up to current, including PBS refinements and IaC hygiene fixes discovered during the deploy.Status: deployed & verified — container created via Terraform, Docker stack up, Discord connector responding end-to-end (Discord → Hermes → litellm/GLM-5.2).
What's included
hermes.tf,hermes-variables.tf— LXC #118 (2C/4GB/512swap, 24Glocal-lvm, DHCP@intra01, onboot,features { nesting }), Debian 12 template download.scripts/hermes-bootstrap.sh— in-container bootstrap: Docker + compose,docker-compose.yml(imagenousresearch/hermes-agent,/data+/fastworkspace mounts),.envtemplate.outputs.tfupdates, deploy docs underdocs/./data←/mnt/pve/hdd/nfs_shared/hermes(14TB HDD),/fast←/media/2tb/hermes(2TB SSD).Implementation notes / gotchas resolved
nesting— Proxmox returns HTTP 403 (changing feature flags (except nesting) is only allowed for root@pam) forkeyctl. Sokeyctl+ bind mounts (mp0/mp1) are applied out-of-band on the node console as root@pam.download_fileusesoverwrite_unmanaged = trueto adopt the Debian template already present ongihyeon'slocaldatastore (avoids "refusing to override existing file").lifecycle { ignore_changes = [features, mount_point] }so routine plans don't try to strip the console-applied keyctl/mounts.Security
terraform.tfvars(holds the Proxmox API token) is removed from tracking and a.gitignoreadded (*.tfvars, keeping*.tfvars.example).Follow-ups (not in this PR)
terraform applyyet —pbs.tfhas a disk-size drift (16vs live48G); use-targetor fixpbs.tffirst.🤖 Generated with Claude Code
- download_file.debian12_template_gihyeon: overwrite_unmanaged=true to adopt the Debian template already present on gihyeon's local datastore (avoids 'refusing to override existing file') - container.hermes: drop keyctl from features — API token gets HTTP 403 ('changing feature flags (except nesting) is only allowed for root@pam'); keep nesting only so token-based create succeeds - container.hermes: lifecycle ignore_changes=[features, mount_point] so the console-applied keyctl + bind mounts (mp0=/data, mp1=/fast; root@pam-only) do not show as drift on routine plans Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>