Skip to content

SGeri/homemedia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


HomeMedia

A complete solution for your home media needs.

stars Bundle Size Downloads ISC

Overview

This project utilizes a few packages and services in order to create the best home media experience. Even for everyday users it allows to use a very simple slash command based system on Discord to download movies and shows, categorized them using a special media management system called Jellyfin.

Used technologies

The Media Server is made using Jellyfin with Docker and for easy container management Portainer. There is also a Discord client for easy communcation with the torrent provider.

Installation

0. Prerequisites

  • Server machine for deploying Jellyfin and hosting the Discord application (Linux is advised)

1. Installation of Portainer

Portainer is a great service for running multiple docker containers and organizing them into stacks. A short guide of installation can be found here.

2. Installation of Jellyfin using docker-compose.yml

Jellyfin is the core of this project and it serves as a Media Management System for the users. The docker-compose.yml file for my Jellyfin setup is located in the docs/docker-compose.yml.

3. Setup the Discord application

Create a Discord Application on the Discord Developer Portal then add Bot features and copy the authentication token. It will be needed later so save it! Also don't forget to store the application's app id! ;)

4. Create local Discord application

git clone https://github.com/SGeri/homemedia.git
cd homemedia
npm install

5. Configure environment variables

In the root directory copy the .env.example file:

cp .env.example .env

Fill out the new newly created environmental file with your nCore credentials (here is a guide for generating nCore "unsafe mode" password, just scroll down to the "Get hashed nCore password" section), Discord application token, ID and a channel ID which is used for displaying global errors. Also you can specify the path of the downloaded media using the MEDIA_LOCATION variable. There is an opitonal variable SCRAPER_DEBUG if you want to enable advanced logging for scraping nCore torrents.

6. Deploying the application

I advise you to use PM2 for deploying NodeJS applications because of how reliable and easy-to-use it is. Here is a short guide for installing it, and a StackOverFlow answer for quickly setting up a the project.

7. Have fun!

Final words

If you have any questions or ideas let me know! You can reach me out on Discord (SGeri#0731) or by creating an issue here on Github. I'm not planning on actively continuing any of my side projects but I'll answer as soon as I can!