feat(bot-irc): TLS-only ircd deploy kit for irc.profullstack.com#751
feat(bot-irc): TLS-only ircd deploy kit for irc.profullstack.com#751ralyodio wants to merge 2 commits into
Conversation
node-pnpm-ci and node-pnpm-test hardcoded `version:` for pnpm/action-setup@v4. When the target repo declares a `packageManager` field (e.g. pnpm@10.0.0), action-setup@v4 fails with ERR_PNPM_BAD_PM_VERSION on the mismatch — which broke b1dz.com CI. Rely on `packageManager` as the single source of truth (pnpm's recommended approach): drop the pinned `version` input from both workflow templates and remove the now-unused `pnpmVersion` input from schemas/manifests. Bump both packs 1.0.0 -> 1.1.0 and document the packageManager requirement. Tests updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Runbook + systemd unit + cert-renewal hook to host a Profullstack IRC endpoint on a DigitalOcean droplet using Ergo (single-binary Go ircd). SSL-only is enforced at the firewall (6697 open, 6667 never opened) and in the ircd config (single TLS listener on 6697, no plaintext listener) — not via DNS, which carries no port. sh1pt's irc bot connects with tls:true (defaults to 6697). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
vu1nz Security Review0 finding(s) in PR #751 No security issues found. Full AI AnalysisAfter thoroughly reviewing this pull request, I found NO security issues. This is a clean refactoring that improves the security posture by: Summary of ChangesThe PR removes hardcoded pnpm version parameters from GitHub Actions workflows and instead relies on the Security AnalysisNo security vulnerabilities identified. The changes actually improve security practices:
The code changes are purely configuration-related with no executable code modifications that could introduce vulnerabilities.
|
Greptile SummaryThis PR bundles two distinct changes: a new TLS-only Ergo IRC deployment kit for
Confidence Score: 4/5The IRC deployment files are safe to merge as-is; the action-pack version label should be corrected before consumers adopt the upgrade. Removing packages/actions/node-pnpm-ci/action.yml and packages/actions/node-pnpm-test/action.yml — the version numbers need a second look before any downstream consumer upgrades.
|
| Filename | Overview |
|---|---|
| packages/actions/node-pnpm-ci/action.yml | Version bumped to 1.1.0 while removing pnpmVersion input — this is a breaking change that should be a major version bump (2.0.0). |
| packages/actions/node-pnpm-test/action.yml | Same breaking removal of pnpmVersion as in node-pnpm-ci, versioned as a minor bump instead of a major one. |
| packages/actions/src/index.test.ts | Test assertions updated to verify the version string is absent and the action reference is present; negative + positive assertions cover the change correctly. |
| packages/bots/irc/deploy/SERVER.md | Solid runbook; TLS-only design is correct, setfacl cert access and smoke-test steps are well-documented. Missing SHA-256 verification on the binary download. |
| packages/bots/irc/deploy/certbot-deploy-hook.sh | Well-formed deploy hook: set -euo pipefail, case guard on RENEWED_LINEAGE, and systemctl reload issues SIGHUP without disrupting connected clients. |
| packages/bots/irc/deploy/ergo.service | Hardened systemd unit with ProtectSystem=strict, NoNewPrivileges, PrivateTmp, ReadWritePaths and ReadOnlyPaths — correct and minimal. |
Sequence Diagram
sequenceDiagram
participant certbot
participant hook as certbot-deploy-hook.sh
participant systemd
participant ergo as Ergo ircd
participant client as IRC Client
certbot->>hook: runs deploy hook (RENEWED_LINEAGE set)
hook->>hook: "case match */irc.profullstack.com"
hook->>systemd: systemctl reload ergo
systemd->>ergo: SIGHUP (ExecReload)
ergo->>ergo: rehash config + reload TLS cert
note over ergo,client: existing connections preserved
client->>ergo: new TLS connection on :6697
ergo-->>client: TLS handshake (renewed cert)
Reviews (1): Last reviewed commit: "feat(bot-irc): add TLS-only ircd deploy ..." | Re-trigger Greptile
| id: node-pnpm-ci | ||
| name: Node pnpm CI | ||
| version: 1.0.0 | ||
| version: 1.1.0 |
There was a problem hiding this comment.
Breaking removal versioned as a minor bump
Removing the pnpmVersion input is a backward-incompatible change: any consumer that currently passes pnpmVersion in their action invocation will have that input silently dropped (or error, depending on the action runner). Under semver this warrants a major version bump (2.0.0), not 1.1.0. The same applies to node-pnpm-test. Existing users who discover the upgrade path from a changelog or registry entry will assume 1.x → 1.1.0 is safe to adopt.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
| VER=v2.18.0 | ||
| curl -fsSL "https://github.com/ergochat/ergo/releases/download/${VER}/ergo-${VER}-linux-x86_64.tar.gz" \ | ||
| | tar xz --strip-components=1 | ||
| cp default.yaml ircd.yaml # start from the shipped default, then apply §5 |
There was a problem hiding this comment.
No binary integrity check on the Ergo download
The curl | tar install pipeline fetches the release binary over HTTPS but does not verify its SHA-256 checksum against the .sha256sum file that Ergo publishes alongside each release. A compromised CDN, redirected request, or supply-chain incident could deliver a tampered binary that tar would unpack silently. Adding a sha256sum -c step after the download (using the published checksum file from the same release) would close this gap.
|
Closing as misplaced: this is a server-side IRC deploy kit, but sh1pt's IRC package is a client bot. The IRC server lives in agentbbs (co-located with the BBS, members-only, TLS-only on 6697) — see agentbbs setup.sh §9b + docs/irc.md. Superseded there. |
Adds a deployment kit for hosting the Profullstack IRC endpoint at
irc.profullstack.comon a DigitalOcean droplet using Ergo v2.18.0 (single-binary Go ircd).Goal: accept only SSL/TLS IRC connections
Enforced two ways, neither of which is DNS (a hostname carries no port):
6697/tcp, never open6667.6697, no plaintext listener at all. (No STARTTLS-on-cleartext, which is TLS-strippable.)Files (
packages/bots/irc/deploy/)SERVER.md— runbook: DNS, ufw, certbot, Ergo install, theircd.yamloverlay, systemd, and verification (openssl s_clientsucceeds /nc 6667refused).ergo.service— hardened systemd unit;ExecReload=SIGHUPfor live cert rehash.certbot-deploy-hook.sh— reloads Ergo when the cert renews.Facts verified against Ergo docs: default config is
default.yaml→ircd.yaml, noinitdbstep, rehash-on-SIGHUP is supported.sh1pt's existing IRC bot connects with
tls: true(defaults to 6697) — no client changes needed.🤖 Generated with Claude Code