Installation and Configuration Guide
Step-by-step instructions for installing and configuring the Jellyfin Family WHMCS module: WHMCS deployment, connecting your Jellyfin server, creating the product and configuring the access policy.
WHMCS setup (install/update)
Jellyfin Family module WHMCS
Order now | Download | Community
Technical requirements
The PUQ Jellyfin Family module is encoded with ionCube Loader v13 (or newer) and is published as a separate build for each supported PHP major version. Installation and updates follow the same procedure.
| PHP version | WHMCS version | Module build |
|---|---|---|
| PHP 7.4 | 8.11.0 - | php74 |
| PHP 8.1 | 8.11.0 + | php81 |
| PHP 8.2 (or newer) | 8.11.0 + and 9+ | php82 |
Pick the build that matches the PHP runtime of your WHMCS server, not the WHMCS version — PHP 8.2 and any newer PHP always use
php82. Not sure which PHP version your WHMCS runs on? Check Utilities → System → PHP Info in the WHMCS admin area.
A reachable Jellyfin server, version 10.11.10 or newer, with an administrator account and an API key, is also required.
Download
A separate build is published for each PHP major version. All versions and historical builds are available in the index:
Direct "latest" downloads
PHP 8.2
wget https://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-Jellyfin-Family/php82/PUQ_WHMCS-Jellyfin-Family-latest.zip
PHP 8.1
wget https://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-Jellyfin-Family/php81/PUQ_WHMCS-Jellyfin-Family-latest.zip
PHP 7.4
wget https://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-Jellyfin-Family/php74/PUQ_WHMCS-Jellyfin-Family-latest.zip
Installation
Step 1: Extract the archive
On your WHMCS server (or locally, before uploading):
unzip PUQ_WHMCS-Jellyfin-Family-latest.zip
Step 2: Deploy the module
Copy and replace the puqJellyfinFamily folder into the WHMCS servers module directory, so the module lives at WHMCS_WEB_DIR/modules/servers/puqJellyfinFamily/:
puqJellyfinFamily → WHMCS_WEB_DIR/modules/servers/puqJellyfinFamily/
Example:
cp -r puqJellyfinFamily /var/www/html/whmcs/modules/servers/
Make sure ionCube Loader v13+ is enabled for the PHP version WHMCS runs on. On first load the module self-creates its database tables (puq_license and puqJellyfinFamily_media_account) — there is no SQL to run manually.
Step 3: Next steps
- Add a Jellyfin server in WHMCS — connect WHMCS to your Jellyfin server.
- Product configuration — create the PUQ Jellyfin Family product, enter the license key and configure the access policy.
Update
Installation and updates follow the same procedure. To update an existing installation:
- Back up the WHMCS database and the
modules/servers/puqJellyfinFamily/directory. - Download the new build that matches the current PHP version and overwrite all files in
modules/servers/puqJellyfinFamily/. - Open any WHMCS admin page once — the module verifies and creates any missing database tables automatically.
Upgrading from v2.x: no reconfiguration is required. The module reads existing product settings from the legacy
configoption2–configoption8slots (including Media Accounts Configuration inconfigoption2) until you save the product once through the new form, at which point they are consolidated intoconfigoption24.
Tip: always back up your WHMCS installation before performing an update.
Add a Jellyfin server in WHMCS
Jellyfin Family module WHMCS
Order now | Download | Community
Configure the connection to your Jellyfin server under System Settings → Servers → Add New Server.
| Field | Value |
|---|---|
| Name | A label for the server. |
| Hostname / IP Address | The Jellyfin server hostname or IP. |
| Module | PUQ Jellyfin Family. |
| Username | A Jellyfin administrator username. |
| Password | That administrator's password. |
| Access Hash | A Jellyfin API key (Jellyfin Dashboard → API Keys). |
| Secure (SSL) | Enable if Jellyfin is served over HTTPS. |
| Port | Jellyfin port (default 8096, or 443 when SSL is enabled). |
In the Server Details section select Module → PUQ Jellyfin Family, fill in the Username, Password and Access Hash (API key), tick Secure for SSL and set the Port.
Use Test Connection to confirm WHMCS can reach Jellyfin and authenticate. The module authenticates with the username / password + API key to obtain an access token, then calls System/Info to verify connectivity. On success some fields are auto-filled and the status shows Connection successful.
Finally, assign the server (or a server group that contains it) to your Jellyfin Family product under the product's Module Settings.
Product configuration
Jellyfin Family module WHMCS
Order now | Download | Community
Create a product of type PUQ Jellyfin Family (Setup → Products/Services), assign the Jellyfin server on the Module Settings tab, then configure the access policy in the injected configuration panel.
Media Accounts Configuration
-
Count of media accounts — how many additional media accounts (sub-users) the client may create under their main account. Leave empty or set to
0to disable the feature for this product. When set to a positive number, a Media Accounts card appears in the client area where the client can add up to that many sub-users.
Each media account is a separate Jellyfin user named
mainusername-name. It inherits the product's playback / transcoding / Live TV / SyncPlay / session settings, but its library access is limited to a subset of the main account's libraries (chosen per media account). Setting the count to0removes all existing media accounts on the next Change package.
Libraries Configuration
- Use all libraries — grant access to every library on the server (overrides the selection below).
- Libraries — the list of libraries is loaded live from the Jellyfin server assigned to the product's Server Group. Tick the libraries this product grants; use Select all to toggle everything, or Reload to refresh the list. Leaving everything unticked grants no library. If the server cannot be reached, a manual text box appears as a fallback (one library name per line). Ignored when "Use all libraries" is ON.
The dynamic list requires the product to be saved with a Server Group that contains a reachable Jellyfin server. Until then the panel shows a hint to select and save a Server Group.
User Configuration
- Streaming bitrate limit — 1–60 Mbps (empty = unlimited).
- SyncPlay access — create & join groups / join groups / disabled.
- Remote control of shared devices, Media downloads — on/off.
-
Max user sessions —
0disables the limit. -
Failed login attempts — lockout threshold;
-1disables it. - Username prefix / suffix — wrap the generated username.
Allow Playback
Toggle media playback, audio transcoding, video transcoding and video conversion without re-encoding.
Feature Access
Live TV access, Live TV recording management, and force transcoding of remote media sources.
Links
- Instruction / manual URL — shown as the User manual link in the client area.
Client Area
- Show password — show button / plain text / hidden.
-
Password generation —
length:characters, e.g.8:23456789abcdABCD. -
Username format —
standard(prefix<client_id>-<service_id>suffix) orcustom. -
Custom username — macro template:
{user_id},{service_id},{random_digit_x},{random_letter_x},{unixtime},{year},{month},{day},{hour},{minute},{second}.
Settings are stored as a single JSON document in configoption24. After saving, Create/Change actions push the resulting policy to Jellyfin.