Beta. Only nodes with Also offer beta versions ticked (Settings → Updates) are offered this. Package installs (Proxmox CT, .deb/.rpm) need GH_INCLUDE_PRERELEASE=1 for the CT script; the Updates page picks it up on a node that has asked for betas.
2.1: what an Nginx Proxy Manager user expects, and an MCP server
An MCP server
Settings › MCP server. An AI assistant (Claude Code, Claude Desktop or any MCP client) can read this node at /mcp and, if you allow it, change it. Off by default. When you turn it on it is read-only until you also tick Allow changes.
- Its own token, not the API key. It is shown once when made and only its hash is kept. Replacing it ends the old one. The page gives the line to paste into Claude Code:
claude mcp add --transport http haproxy-manager https://<host>/mcp --header "Authorization: Bearer <token>". - Tools. Reading: status, services, every object collection, settings, the rendered haproxy.cfg,
haproxy -c, live stats, traffic, URL probes, logs, cluster health, history and diffs, certificate logs. Changing: publish/edit/pause/delete a service, rules and conditions through the wizards, request or issue certificates, create/replace/delete objects, haproxy and acme settings, restore a snapshot, Apply. Changing tools that offerdry_runshow the generated lines and HAProxy's verdict without storing anything, even while changes are off. Editing a service changes only the fields given. - Same checks as the UI. Every tool goes through the node's own API, so nothing is stored that HAProxy would not load, nothing goes live before Apply, and the audit log names the client (
mcp:claude-code POST …). - Secrets stay on the node. DNS credentials, passwords, keys and tokens come back as
[redacted], and[redacted]written back keeps the stored value. No tool hands over or takes in a private key. - Clusters. The settings and token are copied to every node. Point the client at the virtual IP or the UI's public name. A change asked of a passive node is made on the node holding the virtual IP, and the answer says so.
- No OAuth, so claude.ai's remote connectors cannot use it yet. Claude Code and Claude Desktop can.
Wildcard hosts
https://*.example.com now matches any one label under example.com (it used to be taken literally). An exact name still wins over a wildcard on the same listener. Wildcard certificates need a DNS challenge, and the wizard warns when an HTTP one is picked.
Redirection hosts
The publish wizard's What it does can be redirect to another address instead of forward to servers: 301, 302, 307 or 308, keeping the path or not. Such a service has no servers, health check or balancing.
Your own certificates
Certificates › Upload a certificate: a certificate, its private key and an optional chain. They are checked (the key must match the certificate and must not be encrypted), stored at 0600 and synced to the other nodes like issued ones. An uploaded certificate is never renewed; Replace uploads a new one. Download gives the certificate with its chain, or the private key after a confirmation, which is logged.
HSTS
Send HSTS (and for subdomains too) in the wizard's Certificate section, and on Backend Pools: Strict-Transport-Security: max-age=63072000, over HTTPS only.
Unknown hosts
Advanced · HAProxy › Settings › Unknown hosts: what a request for a name no service answers gets on an HTTP listener without a default pool. The choices are HAProxy's 503 (as before), a 404, dropping the connection, or a redirect to an address.
IPv6, WebSockets, client headers
- IPv6. Services listening on every address now answer over IPv6 as well (
bind :::port v4v6). This is skipped automatically on a node without IPv6, and Listen on IPv6 too turns it off. - WebSockets. WebSocket idle timeout (
timeout tunnel, default 1h) stops an idle WebSocket or terminal being cut after 50 seconds. - Client headers. Requests now carry
X-Real-IPandX-Forwarded-Hostnext toX-Forwarded-For.