Everyone

Provisioning Troubleshooting

Solutions for common provisioning failures including stuck services, failed account creation, package errors, and scheduler issues.

Last updated 1776211200
  • Related
  • Overview

    Most provisioning problems fall into one of a few categories: the scheduler isn't running, credentials are wrong, a package name doesn't match, or a network/firewall issue is blocking the Panel API. Start with the Provisioning Log — the error response from the Panel is almost always enough to identify the cause.

    Quick Diagnostic Checklist

    1. Is the Laravel scheduler running? (crontab -l on the Commerce server)
    2. Is there a failed entry in the Provisioning Log for this service?
    3. Can Commerce reach the Panel? (Test Connection on the server edit page)
    4. Does the package name in Commerce exactly match the Panel?

    Issue Reference

    Service stuck in pending

    Symptom: Client paid, invoice marked paid, but service status never changes from pending.

    Possible causes:

    Cause How to confirm Fix
    Scheduler not running crontab -l — no entry for schedule:run Add cron entry (see below)
    Queue not processing php artisan queue:failed Run php artisan queue:work or check Supervisor
    Job failed all 3 retries Check Provisioning Log — failed entry exists Fix the root cause, then re-trigger manually

    Correct cron entry:

    * * * * * cd /opt/opterius && php artisan schedule:run >> /dev/null 2>&1
    

    Verify the scheduler sees the commands:

    php artisan schedule:list
    

    "Account creation failed" in the log

    Symptom: Provisioning Log shows a failed create action.

    1. Click the failed log entry to view the full request and response.
    2. Match the error to the table below.
    Response / Error Cause Fix
    401 Unauthorized Wrong api_token Regenerate token in Panel → Settings → API; update server credentials
    Connection refused / cURL 7 Wrong api_url, wrong port, or firewall blocking Verify api_url; open port on Panel server firewall for Commerce IP
    422 account already exists Duplicate username on Panel Delete duplicate on Panel, or adjust username generation logic
    SSL certificate verify failed Self-signed cert on Panel Install a valid certificate; or set SSL_VERIFY=false in Commerce .env (dev only)
    504 Gateway Timeout Panel API slow / overloaded Check Panel server resources; increase module timeout
    403 Forbidden Commerce IP not in Panel allowlist Add Commerce server IP to Panel's API allowlist

    "Package not found"

    Symptom: Panel returns a package error; account not created.

    Cause: The package name set on the Commerce product does not match the package name in Opterius Panel. The comparison is case-sensitive and exact.

    Fix:

    1. Log in to Opterius Panel → Packages.
    2. Copy the exact package name (e.g. Basic Hosting — not basic hosting or Basic).
    3. Go to Commerce → Admin → Products → [product] → Provisioning tab.
    4. Paste the exact name into the Package Name field.
    5. Save and re-trigger the failed job.

    Service suspends but hosting account stays active on the panel

    Symptom: Commerce shows status = suspended, but the site is still live.

    Cause: The SuspendHostingAccountJob failed (likely a transient API error) after the status was updated locally.

    Fix:

    1. Check Provisioning Log for a failed suspend entry.
    2. Go to Admin → Services → [service] → Actions → Suspend to dispatch a new job.
    3. Monitor the log for the result.

    Scheduler not running — verification steps

    # Check for the cron entry
    crontab -l
    
    # Test the scheduler manually
    cd /opt/opterius && php artisan schedule:run
    
    # List all registered scheduled commands
    php artisan schedule:list
    

    The schedule list should include commerce:check-overdue-services (01:00) and commerce:check-termination-services (02:00).


    Re-triggering a Failed Job

    Any provisioning action can be manually dispatched:

    1. Go to Admin → Services → [service].
    2. In the Actions panel, click the relevant button: Create, Suspend, Unsuspend, or Terminate.
    3. The new job is dispatched immediately and its result appears in the Provisioning Log.

    Related