PUQ Mautic

Emby WISECP module

This module allows your company to provide public media services to customers through Emby accounts. It enables the creation of customer accounts on a pre-configured Emby server, allowing for the sale of media packages at different prices. It also integrates with the WISECP billing system for client data exchange, service activation, and blocking. The module relies on the Emby API for client account management, supports multiple languages, and offers administrators the ability to suspend, terminate, or unsuspend users, change passwords, and more. Clients can also manage their devices.

Description

Emby module WISECP 

Order now | Download | FAQ

Thanks to the module, the company is able to offer public media services to its customers based on Emby accounts.

The module is used to create customer accounts on the previously prepared Emby server. The module enables You to define multiple public media packages and sell them at different prices. The module creates a customer account according to the selected package. The client can have many independent accounts in the media.

For the correct operation of the module, a pre-prepared Emby installation is required (the module does not assist in the installation of the Emby server and assumes that such installation is ready for operation through API.) Module use Emby API to manage clients account.

We have prepared a detailed installation manual for the module, including all the steps needed to implement the module, including the preparation of the Emby server, including all installation steps such as PHP, Emby , SSL certificates etc.

Requirements:
WISECP: v3.1.5+, php: v8.x, Ioncube: V12+
Emby:  v4.7+

Functions:

Available options in the admin panel:

Available options in the client panel:

Screenshot of the client area

image-1707989985596.png

Screenshot of the Admin area

12.png

 

Changelog

Emby module WISECP 

Order now | Download | FAQ
v1.1 Released 15-02-2024

- Introduced a "Show" button for displaying service passwords in the Client Area.
- Fixed a bug with some cases where it was not possible to delete the server
- Improved security


v1.0 Released 27-12-2023

First version

 

Installation and configuration guide

Installation and configuration guide

Setup (install/update)

Emby module WISECP 

Order now | Download | FAQ

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

 
1. Download the latest version of the module.
wget http://download.puqcloud.com/WISECP/Product/PUQ_WISECP-Emby/PUQ_WISECP-Emby-latest.zip

All versions are available: https://download.puqcloud.com/WISECP/Product/PUQ_WISECP-Emby/

 
2. Unzip the archive with the module.
unzip PUQ_WISECP-Emby-latest.zip
 
3. Copy and Replace "puqEmby" from "PUQ_WISECP-Emby" to "WISECP_WEB_DIR/coremio/modules/Product/"
Installation and configuration guide

License Activation

Emby module WISECP 

Order now | Download | FAQ
1. Log in to the administrative area of your WISECP.
2. Go to module configuration.
Services -> Service Management -> Module Settings -> Other -> All Modules -> PUQ Emby

image-1700485721333.png

image-1700485726951.png

image-1700485737918.png

1.png

2.png

Installation and configuration guide

Setup guide: Emby setup

Emby module WISECP 

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

Add server (Emby server)

Emby module WISECP 

Order now | Download | FAQ
1. Log in to the administrative area of your WISECP.

2. Go to module configuration.
Services -> Service Management -> Module Settings -> Other -> All Modules -> PUQ Emby

image-1700485721333.png

image-1700485726951.png

image-1700485737918.png

1.png

 

3. In the opened page, click the 'Add Server' button.

3.png

 
4. On the opened page, enter all the necessary information:
Installation and configuration guide

Service configuration

Emby module WISECP 

Order now | Download | FAQ

If you do not have a Service Group where you want to place the new service, you need to create a new Service Group

1. Log in to the administrative area of your WISECP.
2. Create New Service Group


Go to

Services -> Service Management -> Add Group

5.png

Enter all the necessary data and click the 'Create Group' button.
6.png

3. Adding a New Service

Go to

Services -> our service group where you need to add the new service.

7.png

In the opened window, click the 'Create New Service' button.

8.png

On the opened page, enter all the necessary details for your new service and navigate to the 'Core' tab.

Select the 'PUQ Emby' module from the drop-down list of modules.

9.png

4. Fill in the configuration options according to your preferences.
Libraries:
  • Use All Libraries: Choosing all of libraries from your Jellyfin server
  • Libraries: The libraries you want to make available to customers of this product.
     (IMPORTANT! Start a new line for each new library)
    Example:
    "Movies
    Beginner`s Programming Course
    Comedy"
      IMPORTANT!
    If you have a folder named "-", please enter it not as the first one or rename it.
    If you don't want any folder to be accessible, type "-".
User Configuration:
  • Streaming bitrate limit: An optional per-stream bitrate limit for all out of network devices. This is useful to prevent devices from requesting a higher bitrate than your internet connection can handle. This may result in increased CPU load on your server in order to transcode videos on the fly to a lower bitrate.
  • Remote control: Remote control of shared devices (DLNA devices are considered shared until a user begins controlling them)
  • Media downloads: Users can download media and store it on their devices. This is not the same as a sync feature. Book libraries require this enabled to function properly.
  • Username prefix/Username suffix: Necessary in order to generate a username for the service, in the format: prefix<client_id>-<service_id>suffix
Allow playback (Restricting access to transcoding may cause playback failures in clients due to unsupported media formats)
  • media
  • audio that requires transcoding
  • video that requires transcoding
  • video that requires conversion without re-encoding
Feature access:
  • Allow Live TV access
  • Allow Live TV recording management
  • Force transcoding of remote media sources such as Live TV
Installation and configuration guide

Add new library/item in Emby

Emby module WISECP 

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 module WISECP 

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

10.png

Client Area

Client Area

Product Home Screen

Emby module WISECP 

Order now | Download | FAQ

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

Screenshot of the client area

image-1707989276545.png

Admin Area

Admin Area

Order Detail

Emby module WISECP 

Order now | Download | FAQ
Navigate to the service you want to manage, then go to the 'Core' tab.

12.png

In the opened tab, you have a view of the online status of the service. The available online information includes:

Also, below are fields with the client's personal data.

You can also individually override package options for the client by checking the 'Overwrite package settings' box.

After modifying the configuration options, check the 'Send changes to server' box to save the data to the Emby server.

13.png