← Back to DevOps & Cloud
DevOps & Cloud by @weird-aftertaste

npm-proxy

Manage Nginx Proxy Manager (NPM) hosts, certificates, and access

New
Source Code

NPM Proxy Skill

Manage Nginx Proxy Manager (NPM) via its REST API.

Configuration

Set the following environment variables:

  • NPM_URL: The URL of your NPM instance (e.g., https://npm.example.com)
  • NPM_EMAIL: Your NPM admin email
  • NPM_PASSWORD: Your NPM admin password

Usage

# List all proxy hosts
python scripts/npm_client.py hosts

# Get details for a specific host
python scripts/npm_client.py host <host_id>

# Enable/Disable a host
python scripts/npm_client.py enable <host_id>
python scripts/npm_client.py disable <host_id>

# Delete a host
python scripts/npm_client.py delete <host_id>

# List certificates
python scripts/npm_client.py certs

Workflows

Adding a new Proxy Host

To add a new host, use curl directly (the script is currently minimal). Example payload for POST /api/nginx/proxy-hosts:

{
  "domain_names": ["sub.example.com"],
  "forward_scheme": "http",
  "forward_host": "192.168.1.10",
  "forward_port": 8080,
  "access_list_id": 0,
  "certificate_id": 0,
  "ssl_forced": false,
  "meta": {
    "letsencrypt_email": "",
    "letsencrypt_agree": false,
    "dns_challenge": false
  },
  "advanced_config": "",
  "locations": [],
  "block_exploits": true,
  "caching_enabled": false,
  "allow_websocket_upgrade": true,
  "http2_support": true,
  "hsts_enabled": false,
  "hsts_subdomains": false
}

Enabling SSL (Let's Encrypt)

  1. List certs with certs to see if one exists.
  2. Update the host with certificate_id and ssl_forced: true.