### Manage Web Applications with install-script Source: https://context7.com/virtualmin/virtualmin-gpl/llms.txt Commands to install, list, upgrade, and delete web applications like WordPress or Drupal. These commands require a valid domain and specific configuration parameters for databases and paths. ```bash virtualmin install-script --domain example.com --type wordpress --version latest --path /blog --db "mysql example_wordpress" --newdb virtualmin list-available-scripts virtualmin list-scripts --domain example.com virtualmin delete-script --domain example.com --id 12345 ``` -------------------------------- ### Modify Virtual Server Settings Source: https://context7.com/virtualmin/virtualmin-gpl/llms.txt Provides examples for updating domain configurations including passwords, disk quotas, IP addresses, and plan assignments. ```bash virtualmin modify-domain --domain example.com --pass "NewSecurePassword" virtualmin modify-domain --domain example.com --quota 5242880 --uquota 5242880 virtualmin modify-domain --domain oldname.com --newdomain newname.com virtualmin modify-domain --domain example.com --apply-plan "Premium Plan" ``` -------------------------------- ### Virtualmin Install Script API Source: https://context7.com/virtualmin/virtualmin-gpl/llms.txt Installs web applications (scripts) like WordPress, Drupal, phpMyAdmin into virtual servers. Supports various options for version, path, database setup, and user credentials. ```APIDOC ## Virtualmin Install Script ### Description Installs web applications (scripts) like WordPress, Drupal, phpMyAdmin into virtual servers. ### Method `virtualmin install-script` ### Endpoints - `virtualmin install-script --domain --type --version --path [--db ] [--newdb] [--user ] [--pass ] [--upgrade ]` - `virtualmin list-available-scripts [--multiline]` - `virtualmin list-scripts --domain ### Parameters #### Path Parameters - `--domain` (string) - Required - The domain to install the script on. - `--type` (string) - Required - The type of script to install (e.g., wordpress, drupal, phpmyadmin). - `--version` (string) - Required - The version of the script to install (e.g., latest, 6.4). - `--path` (string) - Required - The path within the domain to install the script. - `--db` (string) - Optional - Database details (e.g., "mysql example_db"). - `--newdb` - Optional - Creates a new database for the script. - `--user` (string) - Optional - Admin username for the script. - `--pass` (string) - Optional - Admin password for the script. - `--upgrade` (integer) - Optional - ID of the script to upgrade. ### Request Example ```bash virtualmin install-script \ --domain example.com \ --type wordpress \ --version latest \ --path /blog \ --db "mysql example_wordpress" \ --newdb ``` ### Response #### Success Response (200) - Installation status and details. #### Response Example (Output varies based on script and success/failure) ``` -------------------------------- ### Provisioning Virtual Servers with create-domain Source: https://context7.com/virtualmin/virtualmin-gpl/llms.txt Automate the creation of virtual servers, sub-servers, and aliases. This command supports configuring features like SSL, PHP modes, and resource limits based on predefined plans. ```bash virtualmin create-domain --domain example.com --pass "SecurePassword123" --desc "Example Company Website" --unix --dir --webmin --web --dns --mail --mysql --logrotate --limits-from-plan virtualmin create-domain --domain secure.example.com --pass "SecurePass456" --desc "Secure Site" --allocate-ip --unix --dir --webmin --web --ssl --dns --mail --mysql --logrotate --acme --ssl-redirect --limits-from-plan virtualmin create-domain --domain blog.example.com --parent example.com --dir --web --dns --prefix blog virtualmin create-domain --domain example.org --alias example.com --web --dns virtualmin create-domain --domain client.example.com --pass "ClientPass789" --plan "Business Plan" --template "Default Settings" --default-features --limits-from-plan virtualmin create-domain --domain newsite.com --pass "Password123" --unix --dir --web --dns --content "/path/to/index.html" virtualmin create-domain --domain phpsite.com --pass "Password123" --unix --dir --web --dns --mode fpm ``` -------------------------------- ### GET /virtualmin/remote-api Source: https://context7.com/virtualmin/virtualmin-gpl/llms.txt Remote HTTP/HTTPS API for integration with external systems. ```APIDOC ## GET /virtual-server/remote.cgi ### Description Executes Virtualmin commands remotely via HTTP requests. ### Method GET ### Parameters - **program** (string) - Required - The command to execute (e.g., list-domains). - **json** (int) - Optional - Set to 1 for JSON output. ### Request Example curl -k -u "root:password" "https://server.example.com:10000/virtual-server/remote.cgi?program=list-domains&json=1" ### Response #### Success Response (200) - **status** (string) - Success or error status. - **output** (object) - The command result data. ``` -------------------------------- ### Iterate and Modify Domains via CLI Source: https://context7.com/virtualmin/virtualmin-gpl/llms.txt Demonstrates how to loop through all domains in Virtualmin and apply specific modifications, such as changing the PHP execution mode to FPM. ```bash for domain in $(virtualmin list-domains --name-only); do echo "Processing: $domain" virtualmin modify-web --domain "$domain" --mode fpm done ``` -------------------------------- ### GET /virtualmin/group-quotas Source: https://github.com/virtualmin/virtualmin-gpl/blob/master/help/config_quota_list_groups_command.html Retrieves the list of Unix group quotas using a configured external command. ```APIDOC ## GET /virtualmin/group-quotas ### Description This endpoint retrieves group quota information by executing a configured external command. The command must output one line per group with space-separated fields. ### Method GET ### Endpoint /virtualmin/group-quotas ### Response #### Success Response (200) - **group_name** (string) - The Unix group name. - **used_blocks** (integer) - Current quota used in 1 kB blocks. - **soft_quota** (integer) - The soft quota in 1 kB blocks, or 0 for unlimited. - **hard_quota** (integer) - The hard quota in 1 kB blocks, or 0 for unlimited. #### Response Example webmaster 1024 5120 10240 users 2048 0 0 ``` -------------------------------- ### Virtualmin CLI Command Structure and Help Source: https://context7.com/virtualmin/virtualmin-gpl/llms.txt Basic usage of the virtualmin command-line tool to access help documentation and retrieve data in various formats like JSON, XML, or plain text. ```bash virtualmin help virtualmin help create-domain virtualmin [options...] virtualmin list-domains --multiline virtualmin list-domains --json virtualmin list-domains --xml virtualmin list-domains --name-only virtualmin list-domains --id-only ``` -------------------------------- ### SSL Certificate Generation API Source: https://context7.com/virtualmin/virtualmin-gpl/llms.txt Requests and installs SSL certificates from Let's Encrypt or other ACME providers, with support for automatic renewal, multiple hostnames, and various validation methods. ```APIDOC ## SSL Certificate Generation (ACME) ### Description Requests and installs SSL certificates from Let's Encrypt or other ACME providers with automatic renewal support. ### Methods #### Request Certificate ```bash # Request Let's Encrypt certificate with auto-renewal virtualmin generate-acme-cert --domain example.com --renew # Request certificate for multiple hostnames virtualmin generate-acme-cert --domain example.com --host example.com --host www.example.com --host mail.example.com --renew # Use default SSL hostnames virtualmin generate-acme-cert --domain example.com --default-hosts --renew # Request with connectivity check first virtualmin generate-acme-cert --domain example.com --check-first --validate-first --renew # Use specific ACME provider (ZeroSSL) virtualmin generate-acme-cert --domain example.com --acme zerossl --renew # DNS-only validation virtualmin generate-acme-cert --domain example.com --dns --renew # Web-only validation virtualmin generate-acme-cert --domain example.com --web --renew # Allow subset of hostnames if some fail virtualmin generate-acme-cert --domain example.com --default-hosts --allow-subset --renew # Configure renewal email notifications virtualmin generate-acme-cert --domain example.com --renew --email-error --email-master # Use staging server for testing virtualmin generate-acme-cert --domain example.com --staging # Skip DNS checks virtualmin generate-acme-cert --domain example.com --skip-dns-check --renew ``` ### Parameters - `--domain` (string) - Required - The domain name for which to generate the certificate. - `--host` (string) - Optional - Hostnames to include in the certificate. Can be specified multiple times. - `--default-hosts` - Use the domain's default SSL hostnames. - `--renew` - Enables automatic renewal for the certificate. - `--check-first` - Performs a connectivity check before requesting the certificate. - `--validate-first` - Validates domain ownership before requesting the certificate. - `--acme` (string) - Specifies the ACME provider (e.g., `zerossl`). - `--dns` - Use DNS-based validation. - `--web` - Use HTTP-based validation. - `--allow-subset` - Allows generating certificates for a subset of hostnames if some fail. - `--email-error` - Sends an email notification on renewal errors. - `--email-master` - Sends an email notification to the master user on renewal errors. - `--staging` - Uses the ACME staging server for testing. ```