Commit Graph

9957 Commits

Author SHA1 Message Date
Stephen Chin
43cc3c83d2 fix(hermesagent): set XDG_RUNTIME_DIR in hermes .profile for SSH access 2026-05-10 14:10:53 -07:00
Stephen Chin
9919be3dac fix(hermesagent): show API key file location in CT footer 2026-05-10 14:10:39 -07:00
Stephen Chin
6a4c88c4cc fix(hermesagent): slim down login hint to su and dashboard tunnel only 2026-05-10 14:10:26 -07:00
Stephen Chin
1671917bab fix(hermesagent): move systemd env vars to EnvironmentFile 2026-05-10 14:10:09 -07:00
Stephen Chin
0b11ce1681 fix(hermesagent): add external script warning and remove redundant check
Adds third-party script warning with user confirmation before running
the upstream installer (install) and updater (update), matching the
kasm/pihole pattern. Removes redundant binary existence check per
reviewer feedback. Adds corresponding JSON warning note.
2026-05-09 11:50:57 -07:00
Stephen Chin
67d49e0b8a fix(hermesagent): single-line apt install for single dependency 2026-05-09 10:30:59 -07:00
Stephen Chin
434e170ee3 fix(hermesagent): move service details from CT footer to MOTD
Trims the verbose 12-line CT footer to the standard pattern plus
essential first-run setup steps. API server, API key, and dashboard
SSH tunnel details are now displayed on every SSH login via
/etc/profile.d/hermes-hint.sh instead.

Addresses PR feedback from CrazyWolf13.
2026-05-09 10:27:37 -07:00
Stephen Chin
a0bffe7a4f feat(hermesagent): replace shim+system-unit pattern with hermes-native user services
The previous approach used a /usr/bin/hermes shim to proxy commands from root
to the hermes user, and a hand-crafted system-level systemd unit for the
gateway. This worked for the default profile but broke down for named profiles:

- hermes profile create <name> generates an alias script in
  ~/.local/bin/<name> that calls hermes with -p <name>. These aliases live
  in the hermes user's PATH, not root's, so root could not invoke them.
- Maintaining parity would require per-profile shims, a watcher daemon to
  create/remove them, and system-unit mirrors for each profile gateway — all
  of which would need to stay in sync with hermes internals across updates.

New approach — work with hermes, not around it:

- loginctl enable-linger hermes: ensures the hermes user's systemd session
  starts at boot and persists without login. All user-unit gateways (default
  and per-profile) now survive reboots automatically.
- Gateway service management delegated entirely to hermes: 'hermes gateway
  install' / 'hermes setup' create and enable the user unit natively.
  The install script no longer pre-installs the gateway; hermes prompts the
  user to do so at the end of 'hermes setup'.
- hermes-dashboard.service remains a system unit (no native install command
  exists for it). Its After= no longer references hermes-gateway.service
  since there is no system-unit gateway to depend on.
- /usr/bin/hermes shim removed. Root is guided to 'su - hermes' via a two-
  line /etc/profile.d/hermes-hint.sh message on login, with a one-liner to
  make the switch automatic. Once logged in as hermes, all hermes commands,
  profile aliases, and gateway management work natively.
- update_script simplified: only hermes-dashboard (our unit) is stopped and
  restarted. hermes update --yes handles gateway service lifecycle itself.
2026-05-03 15:22:11 -07:00
Stephen Chin
8afb182095 fix(hermesagent): shim handles hermes user invocation
runuser requires root. When the hermes user calls the shim directly
(e.g. via su - hermes), exec the binary directly instead.
2026-05-02 12:30:34 -07:00
Stephen Chin
be8d55fb83 fix(hermesagent): pass --yes to hermes update to avoid interactive prompt
hermes update prompts "Restore local changes now? [Y/n]" when run
in a TTY context. --yes skips all interactive prompts.
2026-05-02 12:21:18 -07:00
Stephen Chin
21dfffd158 fix(hermesagent): correct JSON metadata
- default_credentials: username null/null (no SSH login for hermes
  service account; access is via root like all PVE Helper Scripts)
- Update setup note to reference root instead of hermes user
- Update dashboard tunnel note to use root and -fNL flags
2026-05-02 12:10:09 -07:00
Stephen Chin
aa975798a1 fix(hermesagent): correct SSH access instructions
The hermes service account has no password or SSH keys and cannot
be used to log in. Access is via root (standard PVE Helper Scripts
pattern). Also add -fN flags to the dashboard tunnel command so it
runs in the background without opening a shell session.
2026-05-02 12:09:56 -07:00
Stephen Chin
06d9c62e54 fix(hermes-agent): rename files to match NSAPP derivation
APP='Hermes Agent' produces NSAPP='hermesagent' via build.func's
lowercase+strip-spaces logic. Rename ct/, install/, json/, and
header files to match.
2026-05-02 09:45:59 -07:00
Stephen Chin
edf1a9604a fix(hermes-agent): harden .hermes directory permissions
The response_store.db and session JSON files under ~/.hermes/ are stored
in plaintext and readable by any process with filesystem access. Set
~/.hermes to 0700 (owner-only) and ~/home/hermes to 0750 to restrict
access to conversation history, credentials, and session data.

Ref: https://github.com/NousResearch/hermes-agent/issues/7486
2026-05-02 08:09:21 -07:00
Stephen Chin
e0aaacdb96 fix(hermes-agent): restrict /proc access in systemd services
Hermes strips sensitive env vars from tool subprocesses, but child
processes can recover them by reading /proc/<parent_pid>/environ. Add
ProtectProc=invisible and ProcSubset=pid to both systemd services to
hide other processes' /proc entries and limit /proc to the service's
own PID namespace.

Ref: https://github.com/NousResearch/hermes-agent/issues/4427
2026-05-02 08:09:00 -07:00
Stephen Chin
16e774083f fix(hermes-agent): set UMask=0077 on systemd services
The Anthropic OAuth helper writes credential files with the process
default umask, resulting in 0644 permissions on sensitive files. Set
UMask=0077 on both hermes-gateway and hermes-dashboard services so all
files created at runtime are owner-only (0600/0700).

Ref: https://github.com/NousResearch/hermes-agent/issues/11003
2026-05-02 08:08:41 -07:00
Stephen Chin
ed9630a783 fix(hermes-agent): enable secret redaction by default
HERMES_REDACT_SECRETS is off by default, exposing API keys in chat output
and session JSON files. Add HERMES_REDACT_SECRETS=true to the .env file
created by the installer.

Ref: https://github.com/NousResearch/hermes-agent/issues/17691
2026-05-02 08:08:23 -07:00
Stephen Chin
adbfd66056 feat: add Hermes Agent LXC
Adds container scripts for Hermes Agent (Nous Research), a self-improving
AI agent with LLM provider integration, terminal execution, web browsing,
and multi-platform messaging support.

Files:
- ct/hermes-agent.sh
- install/hermes-agent-install.sh
- json/hermes-agent.json
- ct/headers/hermes-agent

Deviations from standard patterns (justified):

1. Uses upstream installer (curl-pipe) instead of fetch_and_deploy_gh_release:
   Hermes is a uv-managed Python application with complex dependency
   resolution, virtualenv management, and binary placement—not a single
   binary or tarball from GitHub Releases.

2. Dedicated 'hermes' service user (not running as root):
   The agent executes arbitrary terminal commands on behalf of the user.
   Running as root would give the AI unrestricted system access. This
   follows the protonmail-bridge service-user pattern for isolation.

3. Dashboard (port 9119) bound to localhost only, requiring SSH tunnel:
   The web UI provides admin access to an AI that can execute commands.
   SSH tunnel provides an authentication/authorization boundary.

4. /usr/bin/hermes shim script:
   The hermes CLI validates cwd permissions; running 'hermes' as root
   from /root fails. The shim cd's to /home/hermes and exec's as the
   hermes user via runuser.

5. setsid --wait wrapping of upstream installer:
   The upstream installer probes /dev/tty for interactive prompts even
   with --skip-setup; setsid detaches the controlling terminal.
2026-05-02 06:25:28 -07:00
tremor021
b0cb194bd5 soulsync: fix Micks stuff again 2026-04-30 18:53:22 +02:00
CanbiZ (MickLesk)
6d9d44642c Merge pull request #1645 from WaffleThief123/forgejo-runner-fix
forgejo-runner (FIX): support generated/unattended mode and configurable runner labels
2026-04-30 15:39:37 +02:00
CanbiZ (MickLesk)
0d04c568ad fix(invidious): companion key must be exactly 16 chars (rand -hex 8) 2026-04-30 15:30:21 +02:00
CanbiZ (MickLesk)
7aa3343e1f fix(ente): match actual subscriptions schema (storage column, attributes jsonb, no transaction_id) 2026-04-30 15:03:23 +02:00
CanbiZ (MickLesk)
8a10bfe155 fix(garmin-grafana): pass --homepath to grafana-cli plugin install 2026-04-30 15:02:14 +02:00
CanbiZ (MickLesk)
ca8ddd34a7 fix(ente): replace fragile HMAC email lookup with user_id-based admin/subscription setup 2026-04-30 15:00:56 +02:00
CanbiZ (MickLesk)
8058b92558 fix(invidious): bump RAM to 4GB / disk to 8GB (Crystal compile needs >=2.5GB free) 2026-04-30 14:57:00 +02:00
CanbiZ (MickLesk)
c7bc06aaa5 fix(garmin-grafana): avoid set -e abort on ((retries++)) returning 0 2026-04-30 14:51:02 +02:00
CanbiZ (MickLesk)
01376b3e51 fix(paperclip): trim notes to fit Discord 2000 char limit 2026-04-30 14:50:33 +02:00
CanbiZ (MickLesk)
59331708a5 fix(invidious): broken sed address, key typo, wrong service paths, missing logrotate path 2026-04-30 14:46:36 +02:00
CanbiZ (MickLesk)
328561e64d fix(invidious): use ~ as sed delimiter and anchor-based replacement (pipe in pattern broke sed) 2026-04-30 14:43:43 +02:00
CanbiZ (MickLesk)
50af211392 fix(garmin-grafana): revert chronograf to fetch_and_deploy_from_url (no .deb in GH releases) 2026-04-30 14:42:50 +02:00
CanbiZ (MickLesk)
cbd38c581e fix(authentik): align install with two-volume layout from ct/authentik.sh
- drop redundant curl of default.yml (file is part of release tarball)
- stop creating /opt/authentik-data dirs in install (mounted later as separate volume)
- enable services without --now in install (started after data volume is attached)
2026-04-30 14:37:57 +02:00
CanbiZ (MickLesk)
501b2145f1 fix(ente): use HMAC-SHA-256 email_hash for user lookup (schema has no plain email column) 2026-04-30 14:36:07 +02:00
CanbiZ (MickLesk)
90f77a81ca fix(plane): set anonymous download on MinIO uploads bucket, raise upload limits 2026-04-30 14:36:02 +02:00
CanbiZ (MickLesk)
8cf1ff11e1 docs(blinko): add note about F5 refresh after signup 2026-04-30 14:36:02 +02:00
CanbiZ (MickLesk)
e84dca5efa fix(invidious): strip git invocations from invidious.cr before make 2026-04-30 14:35:57 +02:00
CanbiZ (MickLesk)
7dfe23a785 refactor(garmin-grafana): use fetch_and_deploy_gh_release for Chronograf, split config blocks 2026-04-30 14:35:52 +02:00
CanbiZ (MickLesk)
b920412247 fix(clickhouse): clarify URL labels (Play UI / HTTP API on 8123) 2026-04-30 14:35:47 +02:00
CanbiZ (MickLesk)
720b077c22 Update nagios-install.sh 2026-04-30 14:13:52 +02:00
CanbiZ (MickLesk)
5b84bd9742 Update nagios.sh 2026-04-30 14:01:24 +02:00
CanbiZ (MickLesk)
bfc3b8b617 simplify nagios 2026-04-30 14:00:30 +02:00
CanbiZ (MickLesk)
c632b4eeaa fix release parsing 2026-04-30 13:57:35 +02:00
CanbiZ (MickLesk)
f490247be0 Add GitLab checker; gate storyteller update
Introduce GitLab release helpers and use them to conditionally update Storyteller.

- misc/tools.func: add get_latest_gitlab_release and check_for_gl_release functions (GitLab API calls, token support, pinning, error handling, requires jq).
- ct/storyteller.sh: wrap update sequence with check_for_gl_release so rebuild/deploy only runs when a new GitLab release is detected; update author metadata.
- install/storyteller-install.sh: remove python3 from apt dependencies and drop NODE_OPTIONS export; minor whitespace cleanup.

These changes prevent unnecessary rebuilds by detecting upstream GitLab releases and improve robustness of release detection and error reporting.
2026-04-30 13:41:10 +02:00
CanbiZ (MickLesk)
edc740e0a0 Merge branch 'main' of https://github.com/community-scripts/ProxmoxVED 2026-04-30 13:32:45 +02:00
tremor021
390061cf50 tools.func: handle minor versions for 8.x 2026-04-30 12:17:36 +02:00
CanbiZ (MickLesk)
520ea1cfe1 Update bitfocus-companion-install.sh 2026-04-30 10:06:52 +02:00
github-actions[bot]
b8f9aa8b70 chore: update app headers [skip ci] 2026-04-30 07:46:37 +00:00
CanbiZ (MickLesk)
e8f006659e Fetch authentik default.yml; update app name
Download authentik's lib/default.yml for the specified AUTHENTIK_VERSION before running go mod/download and build (added curl to ct/authentik.sh and install/authentik-install.sh to write to /opt/authentik/authentik/lib/default.yml). Also normalize Bitfocus Companion app name to "Bitfocus-Companion" in ct/bitfocus-companion.sh.
2026-04-30 09:46:14 +02:00
CanbiZ (MickLesk)
e531e0372c Update tools.func 2026-04-30 09:37:35 +02:00
CanbiZ (MickLesk)
33cf0fe2ae Update tools.func 2026-04-30 09:28:12 +02:00
CanbiZ (MickLesk)
df33695453 Update authentik.sh 2026-04-30 09:22:19 +02:00