Guide accessibility reviews for UI, documents, and workflows. Use for WCAG-oriented audits, keyboard review, semantics, contrast, and remediation planning.
日本語の概要は準備中です。原文の説明を表示しています。
Manage Nginx Proxy Manager (NPM) reverse proxy hosts via its REST API using the native Python client npm_api.py. Use when creating, modifying, diagnosing, removing, or cleaning up proxy hosts, or when coordinating Docker service deployments with NPM routing.
日本語の概要は準備中です。原文の説明を表示しています。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Give an AI agent the ability to manage reverse proxy configuration in Nginx Proxy Manager from the terminal. Covers create, modify, diagnose, remove, cleanup, and backup/restore workflows for proxy hosts, with coordinated Docker operations.
Do not use for NPM access lists, TCP/UDP streams, or redirection hosts (extend as needed).
The framework default is Python 3.12+. This skill uses npm_api.py, a native Python client that talks directly to the NPM REST API with requests plus Python standard library modules. No Bash, curl, or jq is required.
npm_api.py handles:
npm-api.conf with hostile-input sanitization.requests available from the LocalSetup uv project environment.http://127.0.0.1:81).npm_default) that NPM and all public-facing containers are attached to.<TOOLS_DIR>/npm-api/
npm_api.py # Native Python client (primary tool)
npm-api.conf # Local config (gitignored, chmod 600)
data/ # Token cache and backup directory (auto-created, ignored)
Default <TOOLS_DIR>: ~/.localsetup/tools. Adapt to environment. The config template is maintained in references/npm-api-conf-example.md.
NGINX_IP=127.0.0.1
NGINX_PORT=81
API_USER=admin@example.com
API_PASS=yourpassword
DATA_DIR=<TOOLS_DIR>/npm-api/data # optional; defaults to data/ next to script
Set permissions: chmod 600 <TOOLS_DIR>/npm-api/npm-api.conf. Gitignore this file.
npm_api.py loads the config, fetches a bearer token, and caches it under data/<IP_PORT>/token/. Token refresh is automatic. Do not commit generated data/ contents.
Every container that needs public HTTP/HTTPS access:
<NPM_NETWORK> (default: npm_default).NPM listens on 80/443 and forwards by hostname. Docker DNS resolves container names within the shared network.
Removing a service = delete NPM proxy host + stop/remove containers. Creating a service = deploy container on <NPM_NETWORK> + create NPM proxy host.
| Parameter | Default |
|---|---|
| forward_scheme | http |
| ssl_forced | true |
| http2_support | true |
| hsts_enabled | false |
| caching_enabled | false |
| block_exploits | true |
| allow_websocket_upgrade | false |
| access_list_id | 0 (none) |
| advanced_config | (empty) |
Use forward_scheme: https only when the container's internal port actually speaks TLS. Enable allow_websocket_upgrade only for apps that use WebSockets. Use advanced_config only for nginx-level tuning (e.g. client_max_body_size 1000M).
All commands are run as python3 npm_api.py <flag> [args]. No interactive prompts are ever shown.
| Action | Command |
|---|---|
| Check connectivity / token | python3 npm_api.py --info |
| List all proxy hosts | python3 npm_api.py --host-list |
| Search by domain | python3 npm_api.py --host-search <domain> |
| Show one host | python3 npm_api.py --host-show <id> |
| Create proxy host | python3 npm_api.py --host-create <domain> -i <container> -p <port> [options] |
| Update a field | python3 npm_api.py --host-update <id> key=value [key=value ...] |
| Enable | python3 npm_api.py --host-enable <id> |
| Disable | python3 npm_api.py --host-disable <id> |
| Delete | python3 npm_api.py --host-delete <id> |
| Backup | python3 npm_api.py --backup |
Optional flags for --host-create:
| Flag | Effect |
|---|---|
--scheme https | Use HTTPS to reach backend (default: http) |
--websocket | Enable WebSocket upgrade |
--no-ssl-force | Do not redirect HTTP to HTTPS |
--no-http2 | Disable HTTP/2 |
--hsts | Enable HSTS header |
--caching | Enable NPM caching |
--no-block-exploits | Disable exploit blocking |
--access-list-id N | Apply NPM access list N |
--advanced-config "..." | Raw nginx config block |
Proxy host IDs are integers assigned by NPM. Always fetch a fresh list before modify, delete, or enable/disable. Do not reuse IDs from memory.
<NPM_NETWORK>. Do not publish ports 80 or 443.docker compose up -dpython3 npm_api.py --host-create <domain> -i <container> -p <port> [options]. Prompt user to attach an SSL certificate.ls-cloudflare-dns-records.python3 npm_api.py --host-search <domain> and test the public URL.Safety gates:
Steps: identify current state (python3 npm_api.py --host-list and docker inspect), show changes, wait for confirmation, apply Docker-side changes, then update NPM proxy host if needed:
python3 npm_api.py --host-update <id> forward_host=<new_name>
python3 npm_api.py --host-update <id> forward_port=<new_port>
python3 npm_api.py --host-update <id> forward_scheme=https
docker ps -a, docker network inspect <NPM_NETWORK>, python3 npm_api.py --host-list, python3 npm_api.py --info.docker inspect), and proxy host config (python3 npm_api.py --host-search <domain>).| Symptom | Check |
|---|---|
| 502 Bad Gateway | Container not on <NPM_NETWORK>, wrong port, container stopped |
| SSL errors | Certificate missing/expired, domain mismatch |
| Redirect loop | ssl_forced=true on backend that also redirects to HTTPS |
| WebSocket failure | allow_websocket_upgrade not enabled |
| "Not found" / wrong app | forward_host or forward_port wrong |
| DNS not resolving | DNS record missing or not propagated |
docker exec <npm_container> curl -s http://<backend>:<port>/Safety gates:
Steps:
python3 npm_api.py --host-list to identify targets.python3 npm_api.py --host-delete <id> for each confirmed target.Removes orphan NPM proxy hosts (no running backend) and unused Docker resources.
Safety gates: same double confirmation as Remove; second confirmation must include "cleanup".
python3 npm_api.py --host-list then check each host's backend with docker ps. List stopped containers, dangling images, unused networks.python3 npm_api.py --host-delete <id> for each orphan, then targeted Docker prune commands.Warn separately before docker volume prune (data loss risk).
Backup is non-destructive; no double confirmation required.
Restore is destructive: show exactly what will be overwritten, require double confirmation with phrase containing "restore".
Backup:
python3 npm_api.py --backup (writes proxy hosts, users, settings, access lists, and certificates to DATA_DIR/<ip_port>/backups/<timestamp>/).~/.localsetup/backups/compose/.Restore: NPM does not expose a REST restore endpoint. Re-import from backup by re-running the Create workflow for each proxy host using the saved proxy_hosts.json. For certificates, re-attach via NPM UI.
python3 npm_api.py --info.<NPM_NETWORK> for the target environment before running Create or Modify.forward_host for containers on <NPM_NETWORK>. Never use container IPs.npm_api.py exits non-zero, the STDERR message is actionable; surface it to the user verbatim.npm_api.py auto-refreshes. If that fails, the error message will specify which config field to check (NGINX_IP, NGINX_PORT, API_USER, or API_PASS).LOCALSETUP_DEBUG=1 before starting the command to add diagnostic events to STDERR: HTTP method and API URL, token refresh/cache timing, and backup item counts. These debug-added lines do not intentionally include request or response headers, request or response bodies, passwords, or bearer-token values. They can disclose private API endpoints and exception context, so review and sanitize them before sharing.<NPM_NETWORK> when creating a proxy host.| Placeholder | Meaning | Example |
|---|---|---|
<TOOLS_DIR> | Root of tools directory | ~/.localsetup/tools |
<NPM_API> | Path to npm_api.py | ~/.localsetup/tools/npm-api/npm_api.py |
<NPM_NETWORK> | Shared Docker network name | npm_default |
<BACKUP_DIR> | Backup directory for compose files | ~/.localsetup/backups/compose |
npm-api.conf is gitignored; permissions must be 600.data/ backup directory may contain SSL private keys; restrict permissions accordingly.まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
Guide accessibility reviews for UI, documents, and workflows. Use for WCAG-oriented audits, keyboard review, semantics, contrast, and remediation planning.
日本語の概要は準備中です。原文の説明を表示しています。
Use when choosing a LocalSetup Agent-* lane for exploration, research, bounded implementation, or review. Consult the static capability matrix; do not probe account or network availability.
日本語の概要は準備中です。原文の説明を表示しています。
Guide agent email inbox workflows with prompt-injection defenses. Use for inbound email processing, webhooks, routing, and safety review.
日本語の概要は準備中です。原文の説明を表示しています。
Navigate and understand codebases using agentlens hierarchical documentation. Use when exploring new projects, finding modules, locating symbols in large files, finding TODOs/warnings, or understanding code structure.
日本語の概要は準備中です。原文の説明を表示しています。
Use for Agent Q signed encrypted file-drop or mail ship and ingest, private registry v2 setup, queue status, and transport maintenance.
日本語の概要は準備中です。原文の説明を表示しています。
Inventory wrapper for the alirezarezvani Claude skills bundle. Use when triaging its broad skill catalog and large script surface before any targeted import.
日本語の概要は準備中です。原文の説明を表示しています。