Step-by-step fixes with copy-ready commands for every NexaPanel issue. Find your problem below.
Auto-Repair — Fixes Most Issues Automatically
bash <(curl -fsSL https://nexapanel.hostganga.com/repair.sh)
Issues during fresh VPS setup
Installation stuck / failed midway
Root Cause
Check available disk space
df -h /Release any stuck package locks
rm -f /var/lib/apt/lists/lock /var/lib/dpkg/lock* /var/cache/apt/archives/lock
dpkg --configure -a && apt-get -f install -yRe-run installer (completely safe to re-run)
bash <(curl -fsSL https://nexapanel.hostganga.com/install.sh)Apache2 crashes during install — "Job for apache2.service failed"
Root Cause
Set Apache to port 8080 and disable auto-start
systemctl stop apache2 2>/dev/null || true
sed -i 's/^Listen 80$/Listen 8080/' /etc/apache2/ports.conf
systemctl disable apache2Switch web server in panel
Panel → Website → Edit → Web Server → Select Apache2 → Save — this will start Apache automatically on port 8080.
Only PHP 8.3 installed — versions 7.4, 8.0, 8.1, 8.2 missing
Root Cause
Add the ondrej/php PPA and install all PHP versions
apt-get install -y software-properties-common
add-apt-repository -y ppa:ondrej/php && apt-get update
for VER in 7.4 8.0 8.1 8.2 8.3; do
apt-get install -y php${VER} php${VER}-fpm php${VER}-mysql \
php${VER}-curl php${VER}-gd php${VER}-mbstring php${VER}-xml \
php${VER}-zip php${VER}-bcmath php${VER}-cli
systemctl enable --now php${VER}-fpm
donePanel not loading or service crashes
Panel URL not opening — browser shows "Connection Refused"
Root Cause
Check service status
systemctl status nexapanelStart or restart the panel service
systemctl restart nexapanel && systemctl enable nexapanelFind which port panel is listening on
grep 'PORT' /opt/nexapanel/.envAllow port through firewall
# UFW (Ubuntu/Debian):
ufw allow 8090/tcp
# firewalld (CentOS/AlmaLinux):
firewall-cmd --permanent --add-port=8090/tcp && firewall-cmd --reloadCheck recent panel logs
journalctl -u nexapanel -n 60 --no-pagerPanel service won't start — shows "Active: failed (Result: exit-code)"
Root Cause
View detailed crash reason
journalctl -u nexapanel -n 100 --no-pagerCheck if port is already occupied
ss -tlnp | grep 8090Run auto-repair to rebuild panel from scratch
bash <(curl -fsSL https://nexapanel.hostganga.com/repair.sh)Panel API returns 502 Bad Gateway
Root Cause
Restart panel and test health endpoint
systemctl restart nexapanel && sleep 8
curl -sf http://127.0.0.1:8090/api/panel/healthz && echo OKVerify nginx proxy_pass port matches panel port
grep proxy_pass /etc/nginx/sites-enabled/* /etc/nginx/conf.d/* 2>/dev/nullLogin page loads but login button does nothing
Root Cause
Test database connectivity
PGPASSWORD=$(grep DB_PASS /opt/nexapanel/.env | cut -d= -f2 | tr -d '"') \
psql -h 127.0.0.1 -U nexapanel -d nexapanel -c 'SELECT 1;'Restart services
systemctl restart nexapanel postgresqlWeb server config and startup problems
Nginx fails to start — "Failed to start nginx.service"
Root Cause
Test nginx configuration for syntax errors
nginx -tFind what is using port 80
ss -tlnp | grep ':80'Fix config and reload nginx
nginx -t && systemctl restart nginxView detailed nginx error log
journalctl -u nginx -n 80 --no-pager
tail -40 /var/log/nginx/error.logWebsite returns 404 Not Found or shows a blank page
Root Cause
List active nginx site configs
ls -la /etc/nginx/sites-enabled/
# RHEL/CentOS: ls /etc/nginx/conf.d/Test config and reload nginx
nginx -t && nginx -s reloadCheck and restart PHP-FPM
systemctl status php8.3-fpm
systemctl restart php8.3-fpmHTTP not redirecting to HTTPS
Root Cause
Add HTTP to HTTPS redirect in site config
# Edit your site config:
nano /etc/nginx/sites-available/yourdomain.com
# Add inside the server { listen 80; } block:
return 301 https://$host$request_uri;Test and reload
nginx -t && systemctl reload nginxPHP-FPM socket and version problems
PHP-FPM socket not found — "connect() to unix:/run/php/phpX.X-fpm.sock failed"
Root Cause
Restart PHP-FPM for the required version (replace X.X)
# Example for PHP 8.3:
systemctl restart php8.3-fpm
systemctl enable php8.3-fpm
# Confirm socket exists:
ls -la /run/php/php8.3-fpm.sockCheck which PHP-FPM versions are running
systemctl list-units 'php*-fpm' --no-pagerWebsite breaks after switching PHP version in panel
Root Cause
Start the target PHP version FPM service
# Replace X.X with your target version:
systemctl enable --now phpX.X-fpmReload nginx to apply new socket path
nginx -t && nginx -s reloadVerify the socket path in site config
grep fastcgi_pass /etc/nginx/sites-enabled/yourdomain.comPostgreSQL and MariaDB errors
PostgreSQL connection refused — panel cannot reach database
Root Cause
Check and restart PostgreSQL
systemctl status postgresql && systemctl restart postgresqlTest connection using credentials from .env
PGPASSWORD=$(grep DB_PASS /opt/nexapanel/.env | cut -d= -f2 | tr -d '"') \
psql -h 127.0.0.1 -U nexapanel -d nexapanel -c 'SELECT version();'Run the PostgreSQL auto-fix script
bash <(curl -fsSL https://nexapanel.hostganga.com/pg-fix.sh)MariaDB / MySQL — "Access denied for user"
Root Cause
Reset MariaDB root password
systemctl stop mariadb
mysqld_safe --skip-grant-tables &
sleep 3
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123'; FLUSH PRIVILEGES;"
killall mysqld_safe && systemctl start mariadbCheck what password panel uses
grep -i 'MYSQL\|MARIADB\|DB_' /opt/nexapanel/.envphpMyAdmin returns 404 or 502
Root Cause
Verify phpMyAdmin installation
ls -la /var/www/phpmyadmin/index.phpCheck nginx config for phpMyAdmin block
grep -r phpmyadmin /etc/nginx/sites-enabled/ /etc/nginx/conf.d/ 2>/dev/nullRe-install via repair script
bash <(curl -fsSL https://nexapanel.hostganga.com/repair.sh)Activation and validation problems
Trial license expired — panel shows "License Expired"
Root Cause
Request a new demo license
Visit nexapanel.hostganga.com/demo.php to get a fresh 15-day license, or purchase a paid plan for unlimited access.
Enter the new key in panel
Panel → Settings → License → Enter Key → Activate
"Invalid license" or "IP mismatch" error
Root Cause
Check your current server IP
curl -sf https://api.ipify.org && echoActivate the license via panel
Panel → Settings → License → Enter the key → click Activate
Get a new demo key for the new IP
nexapanel.hostganga.com/demo.php — enter your current server IP to get a new key.
Force a license refresh
PANEL_PORT=$(grep '^PORT=' /opt/nexapanel/.env | cut -d= -f2 | tr -d '"')
curl -sf "http://127.0.0.1:${PANEL_PORT}/api/panel/license"License validation cron job is failing
Root Cause
Inspect the system cron file
cat /etc/cron.d/nexapanel-systemTest license endpoint manually
PANEL_PORT=$(grep '^PORT=' /opt/nexapanel/.env | cut -d= -f2 | tr -d '"')
curl -sf "http://127.0.0.1:${PANEL_PORT}/api/panel/license"View the cron log
tail -60 /var/log/nexapanel-cron/license.log 2>/dev/null || echo 'No log file yet'Certificate generation and renewal problems
SSL certificate generation fails — Certbot returns an error
Root Cause
Verify DNS resolution for your domain
dig +short yourdomain.com
# Result should be your server IPConfirm port 80 is accessible from outside
curl -I http://yourdomain.com
ufw status | grep 80Run Certbot manually
certbot --nginx -d yourdomain.com -d www.yourdomain.com \
--non-interactive --agree-tos -m admin@yourdomain.comIf rate-limited, test with staging server first
certbot --nginx -d yourdomain.com --stagingSSL certificate is not auto-renewing
Root Cause
Test renewal in dry-run mode
certbot renew --dry-runCheck certbot cron entry
cat /etc/cron.d/nexapanel-system | grep certbotForce renew a specific domain certificate
certbot certonly --force-renew --nginx -d yourdomain.comPostfix and Dovecot mail problems
Emails are not being sent — Postfix error
Root Cause
Check Postfix service status
systemctl status postfix && postfix checkSend a test email from command line
echo 'Test from NexaPanel' | mail -s 'Test Email' your@email.comCheck the mail queue for stuck messages
mailq && postqueue -pRead recent mail logs
tail -100 /var/log/mail.logRestart mail services
systemctl restart postfix dovecotCannot receive emails — Dovecot IMAP error
Root Cause
Check Dovecot status
systemctl status dovecotOpen IMAP/IMAPS ports
ufw allow 143/tcp && ufw allow 993/tcp && ufw allow 587/tcpView Dovecot error log
tail -60 /var/log/dovecot.log 2>/dev/null || journalctl -u dovecot -n 60Application process management problems
Node.js app not starting in PM2
Root Cause
Check PM2 status and recent logs
pm2 status && pm2 logs --lines 80Run app directly to see the error
node /path/to/your/app.jsRestart all PM2 managed processes
pm2 restart all && pm2 saveReinstall PM2 systemd startup hook
pm2 startup systemd -u root && pm2 save"pm2: command not found"
Root Cause
Install PM2 globally and configure startup
npm install -g pm2 && pm2 startup systemd -u root && pm2 saveFTP account connection problems
FTP connection refused or "530 Login incorrect"
Root Cause
Check FTP service status
systemctl status vsftpd 2>/dev/null || systemctl status proftpd 2>/dev/nullOpen required FTP ports
ufw allow 21/tcp && ufw allow 20/tcp
ufw allow 40000:50000/tcpRestart the FTP service
systemctl restart vsftpd 2>/dev/null || systemctl restart proftpd 2>/dev/nullFile permissions and disk space problems
"Permission denied" in the file manager
Root Cause
Fix ownership and permissions for a domain
# Replace yourdomain.com with your actual domain:
chown -R www-data:www-data /var/www/yourdomain.com
find /var/www/yourdomain.com -type d -exec chmod 755 {} \;
find /var/www/yourdomain.com -type f -exec chmod 644 {} \;Disk full — "No space left on device"
Root Cause
Check disk usage by directory
df -h /
du -sh /* 2>/dev/null | sort -rh | head -20Clean apt cache and old packages
apt-get clean && apt-get autoremove -yFind files larger than 100 MB
find / -size +100M -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null | sortCompress and truncate old system logs
journalctl --vacuum-size=100M
truncate -s 0 /var/log/syslog 2>/dev/null
find /var/log -name '*.gz' -mtime +30 -deleteUFW, Fail2ban, and access control issues
Your IP is blocked — cannot access SSH or panel
Root Cause
From VPS console or another IP — unban your IP
# Fail2ban:
fail2ban-client unban YOUR.IP.ADDRESS
# UFW:
ufw delete deny from YOUR.IP.ADDRESS
ufw allow from YOUR.IP.ADDRESS to any port 22See who is currently banned
fail2ban-client status sshd
ufw status | grep DENYFirewall is blocking all traffic — server unreachable
Root Cause
From VPS rescue console — disable and reset UFW
ufw --force disable
ufw --force reset
ufw default allow incoming && ufw default allow outgoing
ufw enableThen set the correct production rules
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp
ufw allow 8090/tcp
ufw default deny incoming
ufw reload
ufw status verboseRun the repair script — it diagnoses and fixes most issues automatically.
bash <(curl -fsSL https://nexapanel.hostganga.com/repair.sh)Supports Ubuntu 20.04/22.04/24.04, Debian 11/12, AlmaLinux, Rocky Linux.
bash <(curl -fsSL https://nexapanel.hostganga.com/install.sh)