PUQ Mautic

Jellyfin WISECP module

This module enables your company to offer public media services to customers through Jellyfin accounts. It facilitates the creation of customer accounts on a pre-configured Jellyfin server, allowing for the sale of various media packages at different prices. The module requires a pre-installed Jellyfin server and uses the Jellyfin API for client account management. It also supports multiple languages. Administrators can suspend, terminate, or unsuspend users, change user passwords, and more, while clients can manage their devices and libraries.

Description

Jellyfin module WISECP 

Order now | Download | FAQ

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

The module is used to create customer accounts on the previously prepared Jellyfin 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 Jellyfin installation is required (the module does not assist in the installation of the Jellyfin server and assumes that such installation is ready for operation through API.) Module use Jellyfin 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 Jellyfin server, including all installation steps such as PHP, Jellyfin, SSL certificates etc.

Requirements:
WISECP: v3.1.5+, php: v8.x, Ioncube: V12+
Jellyfin: v10+

Functions:

Available options in the admin panel:

Available options in the client panel:

Screenshot of the Client area

image-1707989946253.png

Screenshot of the Admin area

9.png

 

Changelog

Jellyfin 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
- Fixed a bug with the test connection to the server.
- Improved security


v1.0 Released 07-12-2023

First version

Installation and configuration guide

Installation and configuration guide

Setup (install/update)

Jellyfin 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-Jellyfin/PUQ_WISECP-Jellyfin-latest.zip

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

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

License Activation

Jellyfin 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 Jellyfin

image-1700485721333.png

image-1700485726951.png

image-1700485737918.png

1.png

2.png

Installation and configuration guide

Setup guide: Jellyfin setup

Jellyfin module WISECP 

Order now | Download | FAQ

1. Install Jellyfin 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 Jellyfin. All you need to do is run this command on your system

 wget -O- https://repo.jellyfin.org/install-debuntu.sh | sudo bash

 

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 jellyfin.conf.

cd /etc/nginx/conf.d/
nano jellyfin.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 301 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 $jellyfin 127.0.0.1`)
	set $jellyfin 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 Jellyfin traffic
		proxy_pass http://$jellyfin: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 Jellyfin traffic
		proxy_pass http://$jellyfin: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 Jellyfin Websockets traffic
		proxy_pass http://$jellyfin: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 (Jellyfin server)

Jellyfin 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 Jellyfin

image-1700485721333.png