Symptom: bash: ./bin/server-tools: Permission denied
Check:
ls -la bin/server-tools
Solution:
chmod +x bin/server-tools
Symptom: /usr/local/bin/server-tools: Permission denied, even though the install itself succeeded.
Cause: The installed binary is intentionally chmod 700 (root-only). A direct invocation without sudo fails, even for the owning user's own shell if it isn't root.
Solution:
sudo server-tools <command>
# not: server-tools <command>
Symptom: Script exits immediately
Solution:
sudo server-tools <command>
# or
sudo su -
server-tools <command>
Symptom: ERROR: MySQL connection failed
Check:
# MySQL running?
systemctl status mysql
# Credentials present?
cat /root/.my.cnf
# Manual test
mysql -e "SELECT 1"
Solution:
# Create credentials
echo -e "[client]\npassword=YOUR_ROOT_PASSWORD" > /root/.my.cnf
chmod 600 /root/.my.cnf
Symptom: The interactive menu shows Database Management [mysql not installed], the server-tools db ... CLI command exits.
Cause: Neither mysql/mysqldump nor mariadb/mariadb-dump are on the PATH — typically because mariadb-client isn't installed.
Solution:
apt-get install mariadb-client
The database menu re-activates automatically afterwards. All other features (VHost, SSL, firewall, etc.) continue to work normally without this.
Symptom: ERROR: Apache configuration test failed
Check:
apache2ctl configtest
Solution: The configtest output shows the error. Common causes:
# Check PHP-FPM
systemctl status php8.3-fpm
# Enable modules
a2enmod headers proxy_fcgi
systemctl reload apache2
Symptom: server-tools vhost audit shows [DRIFT] lines for individual directives (e.g. a missing X-Forwarded header or a ProxyPass mismatch).
Cause: The VHost was manually edited after creation, or it predates a given template addition.
Solution: Add the missing directive to the VHost config by hand (find the path via vhost info --domain <domain>) and audit again. vhost audit never writes anything back automatically - it only reports the mismatch.
Symptom: server-tools vhost audit reports [SKIP] template audit not yet implemented for nginx.
Cause: Drift detection currently only checks Apache directives and isn't implemented for Nginx backends yet.
Solution: None yet - compare Nginx VHosts against the canonical template manually until Nginx support for vhost audit lands.
Symptom: ERROR: ACL support not available or setfacl: command not found
Check:
# ACL tools installed?
which setfacl getfacl
# Filesystem supports ACLs?
mount | grep acl
Solution:
# Install ACL package
apt-get install acl
# If ACLs not enabled in mount
mount -o remount,acl /var/www
Symptom: WARNING: Config file is world-readable
Solution:
chmod 600 /etc/server-tools/config
If your problem isn't listed here: The audit log at
/var/log/server-tools-audit.logcontains details about all executed operations and any errors encountered.