"readonly" is a safety bonus, but "local" is really important not to overwrite variables from functions.
better portability on BSD systems
* debug messages are sent to stdout * domains discovery from vhosts is extracted to "vhost-domains" * fixes suggested by shellcheck * variables are "local" or "readonly" wherever possible