System Requirements

LicenceForge is designed to run on a standard WordPress hosting stack. This page lists all required and recommended dependencies for both the server plugin and the client library that ships with your licensed products.

Server Plugin Requirements

These requirements apply to the WordPress site running LicenceForge (your license server).

Core Requirements

Component Minimum Recommended Notes
WordPress 5.8+ 6.4+ Defined as WPLF_MIN_WP_VERSION. The plugin checks this on activation and displays an admin notice if unmet.
PHP 7.4+ 8.0+ Defined as WPLF_MIN_PHP_VERSION. The built-in health check reports a warning if running below PHP 8.0.
MySQL 5.6+ 8.0+ Required for JSON functions used in analytics queries (JSON_EXTRACT, JSON_UNQUOTE).
MariaDB 10.1+ 10.6+ Alternative to MySQL. JSON function support was added in MariaDB 10.2.

Note

LicenceForge performs version checks on activation and again during the plugins_loaded hook. If requirements are not met, the plugin will display an admin notice and stop loading -- it will not break your site.

PHP Extensions

These PHP extensions are used by the server plugin:

Extension Required Used For
openssl Yes AES-256-CBC encryption of Stripe keys and S3 secrets at rest (WPLF_Crypto::encrypt_option)
json Yes REST API request/response encoding, webhook payload handling
hash Yes SHA-256 hashing of license keys, IP addresses, download tokens, and ZIP integrity checks
mysqli Yes WordPress database driver (required by WordPress itself)
curl Recommended Used by wp_remote_request for Stripe API calls, health check self-tests, and S3 operations

Disk Space

If you use local storage for plugin ZIP files, ensure your server has adequate disk space. The built-in health check monitors free space and reports:

  • Warning when free disk space drops below 500 MB
  • Error when free disk space drops below 100 MB

For S3-compatible storage, disk space is only needed for the plugin itself (roughly 5 MB).

WordPress Cron

LicenceForge relies on WP-Cron for background tasks including license expiration, webhook retries, and data cleanup. If your host disables wp-cron.php or your site receives low traffic, set up a real server-side cron job:

*/5 * * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Optional Integrations

These plugins and services are not required but unlock additional features when available.

Integration Minimum Version Purpose
WooCommerce 6.0+ Automatic license creation on order completion. Supports order processing and completed statuses, refund handling, and license display on the thank-you page and order emails.
WooCommerce Subscriptions 4.0+ Maps subscription lifecycle events (active, on-hold, cancelled, expired, renewal) to license status changes.
Stripe Account -- Direct Stripe integration via webhooks for payment processing, subscription management, and automatic license provisioning without WooCommerce.

Tip

You can use LicenceForge without any payment integration. Licenses can be created manually from the admin dashboard -- useful during development or for free products with activation limits.

Client Library Requirements

These requirements apply to customer sites running your licensed plugin/theme with the WPLF Client Library embedded.

Component Minimum Notes
WordPress 5.0+ The client library uses standard WordPress HTTP API functions (wp_remote_request) and transients.
PHP 7.4+ Uses typed properties and return types.
Outbound HTTPS Required The client must be able to reach your license server over HTTPS to validate and activate licenses.

Client Library Encryption

The client library encrypts stored license keys using the best available method:

  1. Preferred: libsodium -- Uses sodium_crypto_secretbox (XSalsa20-Poly1305). Built into PHP 7.2+ and bundled with WordPress 5.2+. No additional installation required on modern stacks.
  2. Fallback: XOR cipher -- If libsodium is not available, the client falls back to a simple XOR-based cipher. This provides obfuscation but not cryptographic security.

Warning

The XOR fallback is significantly weaker than libsodium encryption. If your customer base includes sites running PHP versions without libsodium support, recommend they upgrade. All modern PHP 7.2+ installations include libsodium by default.

The encryption key is derived from the WordPress AUTH_KEY constant via SHA-256 hashing, truncated to 32 bytes. This means:

  • Each WordPress installation has a unique encryption key
  • Customers should ensure their wp-config.php has unique authentication keys (not the default placeholder values)
  • If AUTH_KEY changes, stored license keys must be re-entered

Hosting Recommendations

Since your license server handles API requests from every customer site, hosting performance matters more than for a typical WordPress site.

Small Scale (under 500 licenses)

  • Standard shared or managed WordPress hosting
  • WP-Cron via page views is typically sufficient
  • Local ZIP storage works fine

Medium Scale (500--5,000 licenses)

  • VPS or managed WordPress hosting with dedicated resources
  • Server-side cron recommended
  • Consider S3 storage for ZIP distribution
  • Object caching (Redis/Memcached) improves API response times

Large Scale (5,000+ licenses)

  • Dedicated server or high-performance managed hosting
  • Server-side cron required
  • S3-compatible storage strongly recommended
  • CDN in front of the REST API for geographic distribution
  • MySQL 8.0+ for better JSON query performance

Checking Your Environment

After installation, the LicenceForge Health dashboard widget and the Settings page both display diagnostic information about your environment. The health check validates:

  • Cron scheduling (maintenance ran within expected window)
  • Database tables (all 8 tables present)
  • Webhook processing (error rates within thresholds)
  • Storage availability (writable directory or S3 connection)
  • REST API reachability (self-test ping)
  • Disk space (500 MB warning, 100 MB error thresholds)
  • PHP version (warns below 8.0)
LicenceForge health checks showing database status and all checks passing
The health widget provides a quick overview of your server environment and plugin status.

Next Steps