proxy-manager: nginx proxy manager in officer

reads hosts and certificates against a live NPM 2.15.1. one grantable
permission, with /_config owner-only — reading which hosts are healthy
is worth sharing, an NPM admin login is not, and NPM has no read-only
role.

the quirk that shapes the whole plugin: NPM answers an unauthenticated
read with 404, not 401, because its router only registers a resource
once a token is present. so 'not signed in' and 'no such endpoint' are
the same response, and a naive client tells you a feature is missing
when your password is wrong. the client mints a fresh token and retries
once, then reports a persistent 404 as likelyAuth.

certificates sort by expiry rather than name, which is the only ordering
that answers a question.

no create/edit/delete and no cert issuance: NPM's own UI does those and
a wrong proxy host takes a domain off the internet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-25 08:38:15 +00:00
co-authored by Claude Fable 5
commit 5914e96cf3
12 changed files with 1155 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
import type { LayoutNode } from 'officerdev';
// Hosts wide, certificates beside it. Certificates is a glance rather than a workspace — you look at it
// when something is red — so it gets the narrower half.
export const defaultLayout: LayoutNode = {
type: 'group',
id: 'proxy-manager-root',
direction: 'horizontal',
children: [
{ node: { type: 'panel', id: 'proxy-manager-hosts', appType: 'proxy-manager-hosts' }, size: 62 },
{ node: { type: 'panel', id: 'proxy-manager-certificates', appType: 'proxy-manager-certificates' }, size: 38 },
],
};