Compare commits

..

No commits in common. "95b32880d126f6aac9348a74a74f310300349469" and "450d490e16bfc3b8f86149d23ec84cfff659a28e" have entirely different histories.

2 changed files with 362 additions and 851 deletions

89
README.md Executable file → Normal file
View file

@ -13,11 +13,6 @@
9. [Screens](#screens)
10. [TODO](#todo)
> [!WARNING]
> Sometime Global RESTORE (--restore) function may not works for HOST only (fix will come)
>
> Single RESTORE (--restore-id , add host one by one) should work well.
## Description
🛠️ This BASH script enables the management of ![Nginx Proxy Manager](https://github.com/NginxProxyManager/nginx-proxy-manager?utm_source=nginx-proxy-manager) through its **API**.
@ -50,22 +45,15 @@ wget https://raw.githubusercontent.com/Erreur32/nginx-proxy-manager-API/main/ngi
chmod +x nginx_proxy_manager_cli.sh
```
> [!IMPORTANT]
> With new version 2.0.0 some commands are changed.
>
## Settings
Only edit these 4 variables:
Only edit these 3 variables:
```bash
```
## Nginx proxy IP address (your Nginx IP)
NGINX_IP="127.0.0.1"
## Existing user (user and password) on NPM
API_USER="existingUser@mail.com"
API_PASS="password"
# Path to store .txt files and Backups
BASE_DIR="/path/nginx_proxy_script/data"
```
## Usage
@ -75,8 +63,7 @@ BASE_DIR="/path/nginx_proxy_script/data"
## Options
```tcl
🌐 Host proxy creation:
🌐 Host proxy Domain creation:
-d DOMAIN_NAMES Domain name (required for creating/updating hosts)
-i FORWARD_HOST IP address or domain name of the target server (required for creating/updating hosts)
-p FORWARD_PORT Port of the target server (required for creating/updating hosts)
@ -84,22 +71,21 @@ BASE_DIR="/path/nginx_proxy_script/data"
-c CACHING_ENABLED Enable caching (true/false, default: false)
-b BLOCK_EXPLOITS Block exploits (true/false, default: true)
-w ALLOW_WEBSOCKET_UPGRADE Allow WebSocket upgrade (true/false, default: true)
-l CUSTOM_LOCATIONS Custom locations (JSON array of location objects)
-a ADVANCED_CONFIG Advanced configuration (block of configuration settings)
📦 Backup and Restore:
--backup Backup all configurations to a file
--backup-id id Backup a single host configuration and its certificate (if exists)
--restore Restore configurations from a backup file
--restore-id id Restore a single host configuration and its certificate (if exists)
📦 Backup and Restore:
--host-backup Backup all configurations to a file
--host-backup-id id Backup a single host configuration and its certificate (if exists)
--host-restore Restore configurations from a backup file
--host-restore-id id Restore a single host configuration and its certificate (if exists)
🔧 Miscellaneous:
--check-token Check if the current token is valid
--create-user user pass email Create a user with a username, password and email
--delete-user username Delete a user by username
--host-check-token Check if the current token is valid
--host-create-user user pass email Create a user with a username, password and email
--host-delete-user username Delete a user by username
--host-delete id Delete a proxy host by ID
--host-show id Show full details for a specific host by ID
--show-default Show default settings for creating hosts
--host-show-default Show default settings for creating hosts
--host-list List the names of all proxy hosts
--host-list-full List all proxy hosts with full details
--host-list-ssl-certificates List all SSL certificates
@ -107,75 +93,59 @@ BASE_DIR="/path/nginx_proxy_script/data"
--host-search hostname Search for a proxy host by domain name
--host-enable id Enable a proxy host by ID
--host-disable id Disable a proxy host by ID
--host-ssl-enable id Enable SSL, HTTP/2, and HSTS for a proxy host
--host-ssl-enable id Enable SSL, HTTP/2, and HSTS for a proxy host (don't need to generate a custom cert.)
--host-ssl-disable id Disable SSL, HTTP/2, and HSTS for a proxy host
--generate-cert domain email [--custom] Generate a Let's Encrypt or Custom certificate for the given domain and email
--host-generate-cert domain email [--custom] Generate a Let's Encrypt or Custom certificate for the given domain and email
--host-help Display this help
```
## Examples
```bash
📦 Backup First !
./nginx_proxy_manager_cli.sh --backup
🌐 Host Creation:
./nginx_proxy_manager_cli.sh -d example.com -i 192.168.1.10 -p 8080 (check default values below)
./nginx_proxy_manager_cli.sh --info
./nginx_proxy_manager_cli.sh --show-default
./nginx_proxy_manager_cli.sh --create-user newuser password123 user@example.com
./nginx_proxy_manager_cli.sh --delete-user 'username'
./nginx_proxy_manager_cli.sh --host-list
./nginx_proxy_manager_cli.sh --host-ssl-enable 10
./nginx_proxy_manager_cli.sh --list-hosts
./nginx_proxy_manager_cli.sh --ssl-host-enable 10
./nginx_proxy_manager_cli.sh --generate-cert example.com user@example.com --custom (for custom certificat)
🔧 Advanced Example:
🔧 Advanced proxy tab example:
./nginx_proxy_manager_cli.sh -d example.com -i 192.168.1.10 -p 8080 -a 'proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;'
🛡️ Custom Certificate:
./nginx_proxy_manager_cli.sh --generate-cert example.com user@example.com --custom
🛡️ Custom locations:
./nginx_proxy_manager_cli.sh -d example.com -i 192.168.1.10 -p 8080 -l '[{"path":"/api","forward_host":"192.168.1.11","forward_port":8081}]'
🔖 Full options:
./nginx_proxy_manager_cli.sh -d example.com -i 192.168.1.10 -p 8080 -f https -c true -b true -w true -a 'proxy_set_header X-Real-IP $remote_addr;' -l '[{"path":"/api","forward_host":"192.168.1.11","forward_port":8081}]'
```
#### SSL
Enable SSL for the Host:
#### Enable SSL for the Host:
Assuming the host ID is *10*, you would enable SSL for the host as follows:
./nginx_proxy_manager_cli.sh --host-ssl-enable 10
./nginx_proxy_manager_cli.sh --ssl-host-enable 10
##### Verifying the Configuration
#### Verifying the Configuration
After running the above commands, you can verify the SSL configuration by checking the details of the proxy host.
./nginx_proxy_manager_cli.sh --host-show 10
./nginx_proxy_manager_cli.sh --show-host 10
This command will show the full details of the proxy host with ID *10*, including whether SSL is enabled.
By following these steps, you can enable SSL for your proxy host for the first time using Let's Encrypt.
##### Better way to check if SSL is active
You should now see the parameters activated:
- "ssl_forced": 1,
- "letsencrypt_agree": true,
- "http2_support": 1
./nginx_proxy_manager_cli.sh --host-list
👉 List of proxy hosts (simple)
ID Domain Status SSL
1 toto.fun disable ✘
2 titi.fun disable ✅
3 tutu.fun enabled ✅
You should now see the parameters activated ✅
##### Host proxy info
```
./nginx_proxy_manager_cli_.sh --host-show 10
./nginx_proxy_manager_cli_.sh --show-host 10
✅ Nginx url: http://127.0.0.1:81/api
✅ The token is valid. Expiry: 2025-07-12T08:14:58.521Z
@ -237,4 +207,3 @@ You should now see the parameters activated ✅
- [x] Export all settings to NPM
- [ ] Domain TLS check validity
- [ ] Better Error Handeling
- [ ] Restore Function need to be optimized

File diff suppressed because it is too large Load diff