News:

SMF - Just Installed!

Main Menu

Recent posts

#51
Web Application / How to Manage Startup Scripts ...
Last post by Suhitha - Sep 29, 2025, 02:24 AM
Question: How to Manage Startup Scripts for Vultr Instances

The process of setting up and configuring a new server or service to make it ready for use.

Startup Scripts for Vultr instances are files that run custom commands when your instances boot. The scripts automate repetitive tasks like installing software, configuring settings, querying third-party services, and more. These scripts are suitable when provisioning multiple Cloud Compute instances because they save time.

Follow this guide to manage Startup Scripts for Vultr Instances using the Vultr Customer Portal, API, CLI, or Terraform.


Vultr Customer Portal

1.Navigate to Orchestration and select Scripts.

2.Click Add Startup Script.

3.Enter a name, select the type, define some commands, and click Add Script.


Vultr API

1.Send a POST request to the Create Startup Script endpoint and encode the Startup script to Base64 format.

console


$ curl "https://api.vultr.com/v2/startup-scripts" \
    -X POST \
    -H "Authorization: Bearer ${VULTR_API_KEY}" \
    -H "Content-Type: application/json" \
    --data '{
        "name" : "Sample-Script",
        "type" : "pxe",
        "script" : "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
    }'


Visit the Create Startup Script endpoint to view additional attributes to add to your request.

2.Send a GET request to the List Startup Scripts endpoint to view all scripts.

console


$ curl "https://api.vultr.com/v2/startup-scripts" \
    -X GET \
    -H "Authorization: Bearer ${VULTR_API_KEY}"



Vultr CLI

1.Create a new scripts.yaml file.

console


$ nano scripts.yaml


2.Enter your Startup scripts into the file.

yaml


mkdir ~/my-apps
chmod 700 ~/my-apps

3.Save the file.

4.Convert the file contents to Base64 and note the output. For instance, bWtkaXIgfi9teS1hcHBzCmNobW9kIDcwMCB+L215LWFwcHM=.

console


$ echo -n "$(<scripts.yaml)" | base64


5.Create a new Startup script.

console


$ vultr-cli script create \
--name Sample-Script \
--type boot \
--script bWtkaXIgfi9teS1hcHBzCmNobW9kIDcwMCB+L215LWFwcHM=


6.List all scripts.

console


$ vultr-cli script list


7.Get the details of a specific script by specifying a script ID.

console


$ vultr-cli script get script_id

Run vultr-cli script create --help to view all options.


Terraform

1.Create a startup script and apply.

terraform


resource "vultr_startup_script" "boot" {
    name   = "Sample-Script"
    type   = "boot"   # boot | pxe
    script = <<-EOT
      #!/bin/sh
      mkdir -p /opt/my-apps
      chmod 700 /opt/my-apps
    EOT
}


2.Attach the script to an instance via user_data or by setting script_id.

terraform


resource "vultr_instance" "server" {
    region = "ewr"
    plan   = "vc2-2c-4gb"
    label  = "scripted"

    # Option A: user_data cloud-init
    user_data = <<-EOT
      #cloud-config
      runcmd:
        - echo "Hello from cloud-init" > /root/hello.txt
    EOT

    # Option B: associate the startup script
    script_id = vultr_startup_script.boot.id
}

3.Apply the configuration and observe the following output:

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
#52
Web Application / How to Delete Startup Scripts ...
Last post by Suhitha - Sep 29, 2025, 01:58 AM
Question: How to Delete Startup Scripts for Vultr Instances

Learn how to permanently remove custom startup scripts from your Vultr account when theyre no longer needed.

Deleting Startup Scripts for Vultr instances completely removes the script from your account. This step is necessary if you no longer need to run the commands when provisioning Cloud Compute instances. After deleting a startup script, you can't undo the operation, so you should take great care.

Follow this guide to delete Startup Scripts for Vultr instances using the Vultr Customer Portal, API, CLI, or Terraform.

Vultr Customer Portal


1.Navigate to Orchestration and select Scripts.

2.Select the target startup script and click the delete icon to remove the script.

3.Confirm the new change and click Delete.


Vultr API

1.Send a GET request to the List Startup Scripts endpoint and note the script ID.

console


$ curl "https://api.vultr.com/v2/startup-scripts" \
    -X GET \
    -H "Authorization: Bearer ${VULTR_API_KEY}"


2.Send a DELETE request to the Delete Startup Script endpoint and specify a script ID.

console


$ curl "https://api.vultr.com/v2/startup-scripts/script_id" \
    -X DELETE \
    -H "Authorization: Bearer ${VULTR_API_KEY}"


Vultr CLI

1.List all scripts.

console


$ vultr-cli script list


2.Delete a script by specifying a script ID.

console


$ vultr-cli script delete script_id


Run vultr-cli script delete --help to view all options.


Terraform

1.Open your Terraform configuration where the Startup Script is defined.

2.Remove the vultr_startup_script resource block, or destroy it by target.

terraform


resource "vultr_startup_script" "boot" {
  name  = "Sample-Script"
  type  = "boot"  # boot | pxe
  script = "#!/bin/sh\necho hi\n"
}

# To delete, either remove this block from configuration
# or run: terraform destroy -target vultr_startup_script.boot


3.Apply the configuration and observe the following output:

Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
#53
Webserver / Unable to install Plesk licens...
Last post by Suhitha - Sep 27, 2025, 08:23 AM
Question: Unable to install Plesk license: cURL cannot communicate with license server


Symptoms

  • License installation on a Plesk server fails:

cURL cannot communicate with license server https://id-00.kaid.plesk.com:443/ (): Couldn't connect to server(7) cURL cannot communicate with license server https://id-00.kaid.plesk.com:443/ (): Couldn't resolve host name(6) (Error code: 2)


  • For Linux:

# host id-00.kaid.plesk.com
id-00.kaid.plesk.com is an alias for ka.plesk.com.
ka.plesk.com has address 195.214.233.82
ka.plesk.com has address 195.214.233.80
ka.plesk.com has address 195.214.233.81

  • For Windows:

c: /> nslookup id-00.kaid.plesk.com
Server:  UnKnown
Address:  2620:0:28a9:4::1
Non-authoritative answer:
Name:    ka.plesk.com
Addresses:  195.214.233.81
          195.214.233.80
          195.214.233.82
Aliases:  id-00.kaid.plesk.com

  • The connection to licensing servers fails:

# telnet ka.plesk.com 443
Trying 195.214.233.82...
telnet: Unable to connect to remote host: Connection refused

  • There are no blocking firewall rules for outbound traffic either in the local Firewall or in the external Firewall (if there is any)

  • Other operations on the server related to outgoing traffic, for example, packages installation or extensions catalog opening, fail as well
:

  • For Linux

# apt install nmap -y
..........
Err:1 http://archive.ubuntu.com/ubuntu xenial InRelease
Could not connect to archive.ubuntu.com:80 (203.0.113.2), - connection timed out [IP: 203.0.113.2 80]
..........
#wget https://ext.plesk.com
--2024-07-09 22:43:42-- https://ext.plesk.com/
Resolving ext.plesk.com (ext.plesk.com)... 79.127.235.11, 79.127.235.9, 79.127.213.245, ...
Connecting to ext.plesk.com (ext.plesk.com)|79.127.235.11|:443... connected.
WARNING: Could not save SSL session data for socket 3
Failed writing HTTP request: The specified session has been invalidated for some reason..
Retrying.
..........


For Windows:

c: /> curl https://ext.plesk.com
curl: (28) Failed to connect to ext.plesk.com port 443 after 21048 ms: Couldn't connect to server


Cause

Server-wide outgoing traffic issue. Most likely, issues on ISP/server provider side.


Resolution

Contact the ISP or server provider for further assistance.
#54
Webserver / Disabled Options in 'Bindings....
Last post by Suhitha - Sep 27, 2025, 08:08 AM
Question: Disabled Options in 'Bindings...' menu are reset when the certificate is changed in Plesk for Windows


Applicable to:

  • Plesk for Windows


Symptoms

Disabled options in IIS Manager > Hostname > Sites > example.com > Bindings... are reset when changing or reissuing a certificate.


Cause

This is caused by product issue PPPM-14255, which will be fixed in future releases.


Resolution

At the moment, there is no ETA for the fix release. In the meantime, it is possible to disable the necessary options globally using the registry for all domains.

Warning: These steps may affect the service stability and should be followed by a qualified administrator at his own risk

1.Connect to the server via RDP

2.Press the Windows Key + R, type regedit in the Run dialog box, and press Enter

3.Navigate to the required parameter. For example:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

4.Edit the desired parameters and save the changes
#55
Webserver / Temporary inaccessibility for ...
Last post by Suhitha - Sep 27, 2025, 08:01 AM
Question: Temporary inaccessibility for some websites: AH01071: Got error 'Primary script unknown'


Symptoms

  • The Apache error log entries for the affected websites are similar the following:

[Mon Jan 22 13:27:01.735290 2024] [proxy_fcgi:error] [pid 9494:tid 139778703505152] [client 203.0.113.2:33400] AH01071: Got error 'PHP message: PHP Warning: Undefined array key "example" in /var/www/vhosts/example.com/httpdocs/example.php on line 83', referer: https://www.google.com
[Mon Jan 22 13:31:37.083939 2024] [proxy_fcgi:error] [pid 9494:tid 139778703505152] [client 203.0.113.2:35648] AH01071: Got error 'Primary script unknown'
[Mon Jan 22 13:32:44.573579 2024] [proxy_fcgi:error] [pid 9937:tid 139778586007296] [client 23.26.220.23:36104] AH01071: Got error 'Primary script unknown'
[Mon Jan 22 13:45:05.394552 2024] [security2:error] [pid 9494:tid 139778686719744] [client 78.153.140.218:39198] [client 203.0.113.3] ModSecurity: Access denied with code 403 (phase 1). Matched phrase "/.env" at REQUEST_URI. [file "/etc/httpd/conf/modsecurity.d/rules/comodo_free/02_Global_Generic.conf"] [line "117"] [id "210492"] [rev "3"] [severity "CRITICAL"] [tag "CWAF"] [tag "Generic"] [hostname "example.com"] [uri "/.env"] [unique_id "Za5VQR8pThynFWOzfw6jvgAAAIU"]
[Mon Jan 22 14:17:19.763567 2024] [proxy_fcgi:error] [pid 9494:tid 139778560829184] [client 203.0.113.4:45854] AH01071: Got error 'Primary script unknown'
[Mon Jan 22 14:19:21.361552 2024] [proxy_fcgi:error] [pid 9937:tid 139778594400000] [client 203.0.113.4:46832] AH01071: Got error 'PHP message: PHP Warning: Undefined variable $newPass in /var/www/vhosts/example.com/httpdocs/mailfiles/orderConfirm.php on line 17', referer: https://example.com/
[Mon Jan 22 14:23:49.363204 2024] [proxy_fcgi:error] [pid 9937:tid 139778577614592] [client 203.0.113.6:48482] AH01071: Got error 'Primary script unknown', referer: https://example.net/contact-us
[Mon Jan 22 14:23:50.963476 2024] [proxy_fcgi:error] [pid 9563:tid 139778728683264] [client 203.0.113.6:48486] AH01071: Got error 'Primary script unknown', referer: https://example.net/contact
[Mon Jan 22 15:11:20.941118 2024] [proxy_fcgi:error] [pid 27558:tid 139778632750848] [client 203.0.113.3:57112] AH01071: Got error 'Primary script unknown'
[Mon Jan 22 15:24:08.490614 2024] [proxy_fcgi:error] [pid 31177:tid 139778606368512] [client 203.0.113.3:58942] AH01071: Got error 'Primary script unknown', referer: https://example.com/example.php

  • Without any changes being done, websites are inaccessible for a period of time
  • The Plesk server does not appear to be experiencing high load


Cause

The "Primary script unknown" errors states that PHP is attempting to connect to a file it cannot locate or does not have permission to access.

If this happens temporarily, it may mean that bots are trying to access scripts that would break the security of the website and are not succeeding.

In all other cases, permissions for files and directories and web server configuration files need to be fixed.


Resolution

Fix permissions for files and directories and web server configuration files

1. Log into your server via SSH

2. Execute the following command in order to repair file permissions:

# plesk repair fs

3. Execute the following command in order to repair web server configuration files:

# plesk repair web


Additional information

Php: Primary script unknown error message displayed in FastCGI stderr
#56
Webserver / Nginx in Plesk cannot be start...
Last post by Suhitha - Sep 27, 2025, 07:55 AM
Question: Nginx in Plesk cannot be started: Not starting nginx as it is disabled in Plesk.


Applicable to:

  • Plesk for Linux



Symptoms

  • nginx fails to start:

# systemctl status nginx
* nginx.service - Startup script for nginx service
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/nginx.service.d
`-limit_nofile.conf
Active: failed (Result: exit-code) since Wed 2022-05-11 12:04:22 CEST; 4s ago
Process: 44106 ExecStartPre=/bin/sh -c [ '${NGINX_ENABLED}' = 'yes' ] || { echo Not starting nginx as it is disabled in Plesk. Run 'plesk sbin nginxmng -e' to enable nginx in Plesk.; exit 1; } (code=exited, status=1/FAILURE)

May 11 12:04:22 publicamedia.net systemd[1]: Starting Startup script for nginx service...
May 11 12:04:22 publicamedia.net sh[44106]: Not starting nginx as it is disabled in Plesk. Run 'plesk sbin nginxmng -e' to enable nginx in Plesk.
May 11 12:04:22 publicamedia.net systemd[1]: nginx.service: control process exited, code=exited status=1
May 11 12:04:22 publicamedia.net systemd[1]: Failed to start Startup script for nginx service.
May 11 12:04:22 publicamedia.net systemd[1]: Unit nginx.service entered failed state.
May 11 12:04:22 publicamedia.net systemd[1]: nginx.service failed.
  • Websites show default page


Cause

With disabled nginx, the service will continue to be inactive.


Resolution

Properly restart nginx by disabling and re-enabling it:

1.Connect to the server via SSH.

2.Disable nginx:

# plesk sbin nginxmng -d

3.Enable nginx:

# plesk sbin nginxmng -e
#57
Webserver / nginx warning after installing...
Last post by Suhitha - Sep 27, 2025, 07:49 AM
Question: nginx warning after installing Plesk update 61: [warn] the "listen ... http2" directive is deprecated


Symptoms

1. Plesk update 61 has been recently installed on Plesk server with previously enabled HTTP/2

2. Command # nginx -t or cron tasks show error:

New configuration files for the Apache web server were not created due to the errors in configuration templates: nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/plesk.conf.d/webmails/example.com_webmail.conf


Cause

Nginx directives for HTTP2 were updated by package vendor. Web server configuration was not regenerated during the update installation to avoid unplanned websites downtime.


Resolution

1.Applying the solution on a server with thousands domains can increase temporary sites downtime. In that case, apply the solution during server maintenance hours.

2.Log in to Plesk via SSH

3.Trigger nginx configuration files regeneration:

# plesk bin http2_pref --disable
# plesk bin http2_pref --enable
#58
Others / Vulnerability CVE-2023-51385
Last post by senthil - Sep 27, 2025, 07:37 AM
Applicable to:
  • Plesk for Linux
Situation
  • Vulnerability CVE-2023-51385 has been discovered for openssh-server package on Ubuntu/Debian servers.
Impact

In ssh in OpenSSH before 9.6, OS command injection might occur if a user name or host name has shell
metacharacters, and this name is referenced by an expansion token in certain situations. For example,an
untrusted Git repository can have a submodule with shell metacharacters in a user name or host name.

Call to action

Issue has been fixed and deployed with openssh-server package version 8.2p1-4ubuntu0.11.

If server is up to date, no further action is required.







#59
Webserver / How to check if http3 is worki...
Last post by Suhitha - Sep 27, 2025, 07:36 AM
Question

How to check if http/3 powered with Nginx/QUIC is working on a website?

Answer

Using browser's Dev Tools(Chrome) Method

Note: Some content may still be downloaded via http/http2 due to:

• The content is downloaded externally (e.g. the website provides URI's to resources located outside of the actual domain's virtualhost)
• Depending on browser's preferences

1.Open Dev tools

2.Select the "Network" tab, right click on "Name" and place a check mark on the "Protocol" entry:



3.Then without closing Dev Tools, open the website where http3 check should be performed and click on the first response:



The "Alt-Svc" header means that nginx is serving http3 and lets the browser know the page can be accessed via http3. Even though, the first query will always(until the headers are cached) be http/http2:



4.Refresh the page and check the results:



Note: Meanwhile for the website with invalid(outdated or containing a different subject name) SSL certificate http3 will work on Firefox, it won't be working on Chrome


Using the special curl-http3 Docker method

1.Connect to the environment with installed Docker via SSH

Note: It has to be an external server/device. Otherwise, curl-http3 will bypass the firewall rules if querying the domain on the same server where docker is launched, hence the results of the check would be false-positive.

2.Run the following command substituting example.com with actual domain name:

# docker run ymuski/curl-http3 curl --http3-only -ksSLI https://example.com
Example of successful response:

HTTP/3 200
server: nginx
date: Tue, 28 May 2024 16:36:45 GMT
content-type: text/html
content-length: 1653
x-accel-version: 0.01
last-modified: Thu, 16 May 2024 10:16:15 GMT
etag: "675-6188f867a0a22"
accept-ranges: bytes
alt-svc: h3=":443"; ma=86400
x-powered-by: PleskLin

If the response is received, then http3 is working on domain, otherwise this curl version would not be able to fetch data over normal 443/tcp connection and will result in with timeout after 300 seconds.


Using the online checker

Note: Checks might fail due to website resources(css/js/etc.) being loaded from 3rd-party sources.

Navigate to the online checker URL and specify the domain in question.
In case http3 is working as expected, it looks like:

#60
Webserver / mod_fcgid: stderr: Connection ...
Last post by Suhitha - Sep 27, 2025, 07:28 AM
Question: mod_fcgid: stderr: Connection refused appears repeatedly within the Apache error log for a website on a Plesk server


Symptoms

  • Plesk Obsidian running on a Linux-based operating system
  • The following errors are visible within the Apache Error Log for a website:

[Wed Jul 19 11:25:22.455351 2023] [fcgid:warn] [pid 29789:tid 139629537761024] [client 203.0.113.2:0] mod_fcgid: stderr: Connection refused
[Wed Jul 19 11:25:22.455389 2023] [fcgid:warn] [pid 29789:tid 139629537761024] [client 203.0.113.2:0] mod_fcgid: stderr: Connection refused
[Wed Jul 19 11:25:22.455392 2023] [fcgid:warn] [pid 29789:tid 139629537761024] [client 203.0.113.2:0] mod_fcgid: stderr: Connection refused
[Wed Jul 19 11:25:22.455399 2023] [fcgid:warn] [pid 29789:tid 139629537761024] [client 203.0.113.2:0] mod_fcgid: stderr: Connection refused
[Wed Jul 19 11:25:22.455403 2023] [fcgid:warn] [pid 29789:tid 139629537761024] [client 203.0.113.2:0] mod_fcgid: stderr: Connection refused

  • The following entries are visible within the Access Log for the website:

203.0.113.2 - - [19/Jul/2023:11:25:24 +0200] "POST /blog/wp-cron.php HTTP/1.0" 200 871 "-" "WordPress/6.2.2; https://example.com/blog"
203.0.113.2 - - [19/Jul/2023:11:25:24 +0200] "GET /blog/ HTTP/1.0" 200 17171 "-" "WordPress/6.2.2; https://example.com/blog"
203.0.113.2 - - [19/Jul/2023:11:25:24 +0200] "GET /blog/ HTTP/1.0" 200 17171 "-" "WordPress/6.2.2; https://example.com/blog"
203.0.113.2 - - [19/Jul/2023:11:25:24 +0200] "GET /blog/ HTTP/1.0" 200 17171 "-" "WordPress/6.2.2; https://example.com/blog"
203.0.113.2 - - [19/Jul/2023:11:25:24 +0200] "GET /blog/ HTTP/1.0" 200 17171 "-" "WordPress/6.2.2; https://example.com/blog"
203.0.113.2 - - [19/Jul/2023:11:25:24 +0200] "GET /blog/ HTTP/1.0" 200 17171 "-" "WordPress/6.2.2; https://example.com/blog"
203.0.113.2 - - [19/Jul/2023:11:25:19 +0200] "POST /blog/wp-cron.php?doing_wp_cron=1689758719.9299299716949462890625 HTTP/1.0" 200 871 "-" "WordPress/6.2.2; https://example.com/blog"
  • A portion of the website (for example, the Blog section) is using a separately installed WordPress script
  • The WordPress script has a heavily customized .htaccess file that contains entries from security and performance plugins such as Wordfence, W3 Total Cache or All In One WP Security
  • The connection from the main website script to the WordPress script is being refused due to the configurations of the security and performance plugins in WordPress.


Cause


The connection from the main website script to the WordPress script is being refused due to the configurations of the security and performance plugins in WordPress, which can be seen within the .htaccess file of the WordPress script.


Resolution

Review and adjust the settings of the plugins on the side of the WordPress script in order to allow the connection from the main website to the WordPress portion of it.

Alternatively, you may disable the necessary plugins on the side of WordPress plugins entirely.