Features Services Pricing Documentation Changelog About PanelOps Contact & Support
Create Account
PanelOps v14 Documentation 4 min read

Diagnostics & Troubleshooting

Port conflicts, SSL verification, and crash loop recovery.

Documentation Diagnostics & Troubleshooting

Diagnostics & Troubleshooting

This guide provides fast remedies for common server, Docker, SSL, and network issues encountered during operation.


1. Port Binding Conflicts (Error: Port already in use)

When deploying an App Store container or custom Docker project:

  • Symptom: Error response from daemon: driver failed programming external connectivity on endpoint: Bind for 0.0.0.0:80 failed: port is already allocated
  • Solution:
    1. PanelOps includes an automated Port Allocator that checks host availability before assigning ports.
    2. If an unmanaged service is occupying the port, find it with:
      sudo netstat -tlpn | grep :PORT
      # or
      sudo ss -tulpn | grep :PORT
      
    3. Stop conflicting standalone services (e.g., sudo systemctl stop apache2).

2. Let's Encrypt SSL Challenge Failures

  • Symptom: ACME challenge failed for domain.com: Invalid response
  • Causes & Fixes:
    • DNS Propagation: Ensure your domain's A Record points to your server's public IP address. Test with dig A yourdomain.com +short.
    • Port 80 Accessibility: Let's Encrypt HTTP-01 verification requires port 80 to be open to the public. Verify with sudo ufw status.
    • Cloudflare Proxying: If using Cloudflare, temporarily set the DNS record to DNS Only (grey cloud) during initial SSL issuance.

3. High CPU or Memory Consumption

  • Use the integrated DevOps AI Agent or live telemetry under Monitoring → Real-Time Telemetry.
  • Check per-container utilization with:
    docker stats --no-stream
    
  • If a container is caught in an infinite crash loop, PanelOps will automatically throttle restarts and log an AI diagnostic analysis.

4. Resetting Admin Password via Terminal

If you are locked out of your Customer Node web panel:

cd /opt/panelops
node seeds/adminSeed.js

This resets the default credentials and outputs the updated access URL.