PUQ Mautic

Emby Family WHMCS module

This module allows your company to offer public media services to customers through Emby accounts. It facilitates the creation of customer accounts on a pre-configured Emby server, enabling the sale of various media packages at different prices. Moreover, it includes the functionality to add multiple media accounts for a single service. This feature enables customers to manage multiple Emby accounts under one subscription. Administrators retain control over user account management, with the ability to suspend, terminate, or unsuspend accounts, change passwords, and more. Meanwhile, clients have the autonomy to manage their devices and libraries efficiently. The module also supports multiple languages, ensuring accessibility for a diverse user base.

Description

Emby Family module WHMCS 

 Order now | Download | FAQ

Thanks to the module, the company can now offer public media services to its customers based on Emby accounts with added flexibility.

The module facilitates the creation of customer accounts on a pre-prepared Emby server. Now, it empowers users to define and manage multiple media accounts, allowing for more tailored offerings and increased customer satisfaction. Each account corresponds to a selected package, enabling customers to access varied media content at different price points. Notably, clients can now possess multiple independent media accounts, broadening their media access options.

Moreover, the module seamlessly integrates with Emby Connect functionality, enabling users to access their media accounts across different devices and platforms with ease.

For seamless operation, the module leverages Emby API to manage client accounts, ensuring efficient account creation and management processes.

We've meticulously crafted an installation manual for the module, encompassing all necessary steps, from preparing the Emby server to configuring PHP, Emby, SSL certificates, and more.

Functions:

Available options in the admin panel:

Available options in the client panel:


WHMCS minimal version: 8 +

Emby minimal version: 4.7+

image-1720787673953.png

image-1714990684458.png

Changelog

Emby Family module WHMCS 

 Order now | Download | FAQ
v2.0 Released 24-09-2024

Module is coded ionCube v13

Supported php version:


v1.2.1 Released 13-08-2024

  1. Fixed bug with password, when "Show password" is "no"
  2. Fixed a bug with sub-accounts. Now, if the number of media accounts equals 0, when "Change package" is clicked, the sub-accounts are removed.

v1.2 Released 12-07-2024
  1. Buttons for copying login and password have been added to the client area
  2. Client area more adapted for mobile version
  3. Fixed bug with edit sub-account
  4. New module settings: 
    • Subtitle Downloading
    • Camera upload
    • Media conversion
    • Social media sharing
    • User Preference Access

v1.1 Released 15-05-2024
  1. Fixed a bug where purchasing a new service would alter the parameters of all accounts on the server.
  2. Translate some phrases
  3. Some changes in client area

v1.0 Released 02-05-2024

First version

Installation and configuration guide

Installation and configuration guide

WHMCS setup(install/update)

Emby Family module WHMCS 

 Order now | Download | FAQ

Module is coded ionCube v13

Supported php version:

To install and update a module, you must perform one and the same action.

1. Download the latest version of the module.

PHP 8.2

wget http://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-Emby-Family/php82/PUQ_WHMCS-Emby-Family-latest.zip

PHP 8.1

wget http://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-Emby-Family/php81/PUQ_WHMCS-Emby-Family-latest.zip

PHP 7.4

wget http://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-Emby-Family/php74/PUQ_WHMCS-Emby-Family-latest.zip

All versions are available via link: http://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-Emby-Family/

2. Unzip the archive with the module.
unzip PUQ_WHMCS-Emby-Family-latest.zip
3. Copy and Replace "puqEmbyFamily" to "WHMCS_WEB_DIR/modules/servers/"
Installation and configuration guide

Setup guide: Emby setup

Emby Family module WHMCS 

 Order now | Download | FAQ

1. Install Emby on your server

To simplify deployment and help automate this for as many users as possible, we provide a BASH script to handle repo installation as well as installing Emby. All you need to do is run this command on your system

wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.7.14.0/emby-server-deb_4.7.14.0_amd64.deb
dpkg -i emby-server-deb_4.7.14.0_amd64.deb

2. SSL certificate generation:

sudo apt install nginx certbot python3-certbot-nginx
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email YOUR_EMAIL -d DOMAIN_NAME
echo "0 0 * * *  root  certbot renew --quiet --no-self-upgrade --post-hook 'systemctl reload nginx'" | sudo tee -a /etc/cron.d/renew_certbot

 

3. Configure nginx from a subdomain

Create a file named nginx.conf.

cd /etc/nginx/conf.d/
nano nginx.conf

Then, insert the following text, replacing DOMAIN_NAME with your domain.

# Uncomment the commented sections after you have acquired a SSL Certificate
server {
        listen 80;
        #listen [::]:80;
        server_name DOMAIN_NAME;

        # Uncomment to redirect HTTP to HTTPS
        return 302 https://$host$request_uri;
}

server {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name DOMAIN_NAME;

        ## The default `client_max_body_size` is 1M, this might not be enough for some posters, etc.
        client_max_body_size 20M;

        # use a variable to store the upstream proxy
        # in this example we are using a hostname which is resolved via DNS
        # (if you aren't using DNS remove the resolver line and change the variable to point to an IP address e.g `set $emby 127.0.0.1`)
        set $emby 127.0.0.1;
        resolver 127.0.0.1 valid=30;

        ssl_certificate /etc/letsencrypt/live/DOMAIN_NAME/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/DOMAIN_NAME/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
        add_header Strict-Transport-Security "max-age=31536000" always;
        ssl_trusted_certificate /etc/letsencrypt/live/DOMAIN_NAME/chain.pem;
        ssl_stapling on;
        ssl_stapling_verify on;

        # Security / XSS Mitigation Headers
        # NOTE: X-Frame-Options may cause issues with the webOS app
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "0"; # Do NOT enable. This is obsolete/dangerous
        add_header X-Content-Type-Options "nosniff";

        # COOP/COEP. Disable if you use external plugins/images/assets
        add_header Cross-Origin-Opener-Policy "same-origin" always;
        add_header Cross-Origin-Embedder-Policy "require-corp" always;
        add_header Cross-Origin-Resource-Policy "same-origin" always;

        # Permissions policy. May cause issues on some clients
        add_header Permissions-Policy "accelerometer=(), ambient-light-sensor=(), battery=(), bluetooth=(), camera=(), clipboard-read=(), display-capture=(), document-domain=(), encrypted-media=(), gamepad=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), interest-cohort=(), keyboard-map=(), local-fonts=(), magnetometer=(), microphone=(), payment=(), publickey-credentials-get=(), serial=(), sync-xhr=(), usb=(), xr-spatial-tracking=()" always;

        # Tell browsers to use per-origin process isolation
        add_header Origin-Agent-Cluster "?1" always;


        # Content Security Policy
        # See: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
        # Enforces https content and restricts JS/CSS to origin
        # External Javascript (such as cast_sender.js for Chromecast) must be whitelisted.
        # NOTE: The default CSP headers may cause issues with the webOS app
        #add_header Content-Security-Policy "default-src https: data: blob: http://image.tmdb.org; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://www.gstatic.com https://www.youtube.com blob:; worker-src 'self' blob:; connect-src 'self'; object-src 'none'; frame-ancestors 'self'";

        location = / {
                return 302 http://$host/web/;
                #return 302 https://$host/web/;
        }

        location / {
                # Proxy main Emby traffic
                proxy_pass http://$emby:8096;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Protocol $scheme;
                proxy_set_header X-Forwarded-Host $http_host;

                # Disable buffering when the nginx proxy gets very resource heavy upon streaming
                proxy_buffering off;
        }

        # location block for /web - This is purely for aesthetics so /web/#!/ works instead of having to go to /web/index.html/#!/
        location = /web/ {
                # Proxy main Emby traffic
                proxy_pass http://$emby:8096/web/index.html;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Protocol $scheme;
                proxy_set_header X-Forwarded-Host $http_host;
        }

        location /socket {
                # Proxy Emby Websockets traffic
                proxy_pass http://$emby:8096;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Protocol $scheme;
                proxy_set_header X-Forwarded-Host $http_host;
        }
}

Restarting nginx

sudo service nginx restart
Installation and configuration guide

Setup guide: WHMCS setup

Emby Family module WHMCS 

 Order now | Download | FAQ
1. Download the latest version of the module.

PHP 8.1

wget http://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-Emby-Family/PUQ_WHMCS-Emby-Family-latest.zip

PHP 7.4

wget http://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-Emby-Family/php74/PUQ_WHMCS-Emby-Family-latest.zip

All versions are available via link: http://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-Emby-Family/

2. Unzip the archive with the module.
unzip PUQ_WHMCS-Emby-Family-latest.zip
3. Copy "puqEmbyFamily" to "WHMCS_WEB_DIR/modules/servers/"
4. Create new server Emby in WHMCS (System Settings->Products/Services->Servers)
System Settings->Servers->Add New Server

21.png

image-1714746182156.png

5. Create a new Products/Services
System Settings->Products/Services->Create a New Product

In the Module settings section, select the "PUQ Emby Family" module

image-1720788279378.png

Libraries:
User Configuration:
Allow playback (Restricting access to transcoding may cause playback failures in clients due to unsupported media formats)
Feature access:
Client Area
Installation and configuration guide

Add server (Emby server)

Emby Family module WHMCS 

 Order now | Download | FAQ
Add a new server to the system WHMCS.
System Settings->Servers->Add New Server

21.png

image-1714746182156.png

 
Installation and configuration guide

Product Configuration

Emby Family module WHMCS 

 Order now | Download | FAQ
Create a new Products/Services
System Settings->Products/Services->Create a New Product

In the Module settings section, select the "PUQ Emby Family" module

image-1720788297258.png

Libraries:
User Configuration:
Allow playback (Restricting access to transcoding may cause playback failures in clients due to unsupported media formats)
Feature access:
Client Area
Installation and configuration guide

Add new library/item in Emby

Emby Family module WHMCS 

 Order now | Download | FAQ

New library:

To create a new library, you should to create a folder in your Emby server.

First, navigate to the root of your project "/" and enter the following commands:

cd mnt
mkdir LIBRARY_NAME

LIBRARY_NAME - The name of the new library. 

After creating a folder, let's create a library in Emby: 

Add a new library:

9.png

Assign the appropriate folder to this library:

11.png

12.png

 

New item:

To download a new item, navigate to the root of your project "/" and enter the following commands:

cd mnt/LIBRARY_NAME
wget DOWNLOAD_ITEM_URL

LIBRARY_NAME - The name of the library. 

DOWNLOAD_ITEM_URL - The download URL of the item you want to upload to the server.

 

After all

Scan all libraries by clicking on the "Scan All Libraries" button, or scan the specific library by clicking on the three dots and selecting "Scan Library."

13.png14.png

 

Installation and configuration guide

Getting Access Hash (API key)

Emby Family module WHMCS 

 Order now | Download | FAQ
Dashboard -> API Keys
Create a new API Key

15.png

 

Whrite an App Name

16.png

 

Now you can getting an API key

17.png

Client Area

Client Area

Home screen

Emby Family module WHMCS 

 Order now | Download | FAQ

The end customer, after logging in to his own customer panel, has access to the following information and options

image-1720787856668.png

 

 

Client Area

Manage Emby Connect

Emby Family module WHMCS 

 Order now | Download | FAQ

Here you can add an Emby Connect Username for main user

If you leave the field empty, Emby Connect will be disabled.

Register the email in Emby Connect

One Emby Connect username can only be linked to one Emby account.

image-1714752305299.png

image-1714752317890.png

Client Area

Add Media Account

Emby Family module WHMCS 

 Order now | Download | FAQ

image-1714759532220.png

Username - Set a media account username. It consists of the username of the main account and a unique name for this media account.

Password - Write a password for registering the media account, or generate one by clicking Generate.

Disable libraries - Here are all the libraries available to the main account. If you want to restrict access for this media account to any of the libraries, simply select that library.

Press Ctrl to select multiple libraries.
Press Shift to select all libraries.

Client Area

Management Media account

Emby Family module WHMCS 

 Order now | Download | FAQ

image-1714759971511.png

Enabled - Update account status.

Username - Set a media account username. It consists of the username of the main account and a unique name for this media account.

Password - Write a password for registering the media account, or generate one by clicking Generate.

Disable libraries - Here are all the libraries available to the main account. If you want to restrict access for this media account to any of the libraries, simply select that library.

Press Ctrl to select multiple libraries.
Press Shift+Ctrl from top to bottom of list to select all libraries.

Emby Connect Email -  add an Emby Connect Username for media account

If you leave the field empty, Emby Connect will be disabled.

Register the email in Emby Connect.

One Emby Connect username can only be linked to one Emby account.

 

Media account active devices

Here is a list of active devices for this account.

Press "Drop Account Devices" to sign out from the devices.

image-1714762807159.png

 

Admin Area

Admin Area

Product Information

Emby Family module WHMCS 

 Order now | Download | FAQ
Here is the data presented for the service admin in WHMCS

image-1714763276353.png