# Installation FAQs

Hosting, server requirements, the Node.js bridge, SSL, and updates. For the full step-by-step setup, see the Web Installer Guide and Server Requirements. The questions below answer the things buyers most often ask before purchasing.

## Hosting & Requirements

### Q: What are the minimum requirements?

A: WaDesk runs on a standard Laravel 12 stack:

- PHP 8.2 or higher with the usual extensions (BCMath, Ctype, cURL, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML, Zip)
- MySQL 8.0+ (MariaDB 10.6+ is also supported)
- Apache or Nginx with `mod_rewrite`, or LiteSpeed
- A queue worker for background jobs (campaigns, webhooks, scheduled sends)
- Node.js 18+ — required; the Node bridge carries the send path and the scheduler for every engine (see below)

### Q: Can I run WaDesk on shared hosting, or do I need a VPS?

A: It depends on which engine you use.

- Cloud API or Twilio only: Shared hosting can work, provided your host allows long-running queue workers (or a frequent cron) for campaigns and webhooks.
- Unofficial API: A VPS or dedicated server with SSH is strongly recommended. The Node.js bridge is a persistent process that must stay running to hold the WhatsApp Web session alive. Most shared hosts will not let you run a long-lived Node process, so the QR connection will keep dropping.

> Recommendation: For any production or multi-tenant SaaS deployment, use a VPS. It gives you the control over Node, queue workers, and process management (for example with PM2 or Supervisor) that WaDesk needs to run reliably.

### Q: How is WaDesk installed?

A: WaDesk ships with a guided web installer. You upload the files, create an empty database, point your domain at the `public` folder, and visit your domain in a browser. The installer runs database migrations, seeds default data, and creates your admin account automatically. Full steps are in the Web Installer Guide.

## The Node.js Bridge (Unofficial API)

### Q: Why does the Unofficial API need a separate Node.js service?

A: The Unofficial API connects to WhatsApp using a Node.js library that speaks WhatsApp Web's protocol. Laravel (PHP) cannot hold that live socket connection itself, so WaDesk bundles a small Node.js bridge that maintains the WhatsApp session, renders the pairing QR code, sends outgoing messages, and forwards inbound messages back to the Laravel app via webhooks.

### Q: Do I need Node.js even if I only use the official engines?

A: Yes. The Node bridge is part of the send path for the official engines too — WhatsApp Cloud API (WABA) sends are dispatched through the bridge (it holds the per-phone WABA credentials and makes the Graph API call), and the bridge runs the scheduler plus the bulk-send pipeline (broadcasts, campaigns, scheduled messages, flows) for every engine, including Twilio. Only a single, one-off direct Twilio API send bypasses it. Treat the Node bridge as required for any production install.

### Q: How do I keep the bridge running permanently?

A: Run the bridge as a managed process so it restarts automatically after a crash or server reboot. On a VPS, PM2 or a systemd service is the typical choice. If the Node process stops, sending stops: Unofficial API devices go offline, WABA dispatch fails, and the scheduler + bulk pipeline (broadcasts, campaigns, scheduled, flows) pause until it returns. Unofficial API sessions re-establish automatically once the bridge is back.

## SSL & Domain

### Q: Do I need SSL (HTTPS)?

A: Yes — HTTPS is effectively mandatory. Both the Meta Cloud API and Twilio require a publicly reachable HTTPS webhook URL to deliver inbound messages and status callbacks; they will not POST to plain HTTP. A free Let's Encrypt certificate is sufficient. Set `APP_URL` to your `https://` domain and clear the config cache after changing it.

### Q: Can I remove "public" from the URL?

A: Yes, on a real domain or subdomain. Point the domain's document root directly at the `public` folder, or add a root `.htaccess` rewrite to the `public` directory. This does not work on localhost or in sub-folders. For Cloudflare users, set the SSL mode to Full or Full (Strict) to avoid mixed-content and redirect-loop errors.

### Q: My inbound messages or ad leads are not arriving. Why?

A: Almost always a webhook reachability problem. Confirm that your domain is publicly accessible over HTTPS, that the webhook URL and verify token are saved correctly in Meta/Twilio, and that no firewall or "under construction" page is blocking the callback route. Inbound delivery on the official engines depends entirely on Meta or Twilio being able to reach your server.

## Updates & Maintenance

### Q: How do I update to a new version?

A: Download the latest package from your CodeCanyon downloads, then replace the application files while preserving your `.env` file, `storage` directory, and any uploaded media. Run database migrations to apply schema changes and clear the caches afterward. Always take a full backup of your files and database before updating.

    php artisan migrate --force
    php artisan config:clear
    php artisan view:clear

### Q: Do updates cost extra?

A: No. Updates are free for the lifetime of the item. Your CodeCanyon support window covers assistance, but new versions themselves are always available to download at no additional cost.

### Q: Does WaDesk back itself up?

A: Backups are your responsibility as the server operator. WaDesk does not provide automated off-site backups. Schedule regular backups of your MySQL database and the `storage` directory, and keep a recent copy before any update or server change. See the Disclaimer for the full data-responsibility statement.