Lightweight node app to use in place of plex to self host your video and movie collections. Running on just under 50MB of ram this is ideal for people looking to host videos on minimal hardware.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
jrtechs 2ef2a876de Updated the dependencies section to reflect the new icon generation package that I am using. 5 years ago
html Updated the header and footer of the website along with added informational content to the home page of the website. 5 years ago
img Updated site so non-admin users can edit their own profiles. 5 years ago
routes Fixed bug with finding out if a video is public or private and changed the way which icons are generated to be a more supported plugin which outputs GIFs. 5 years ago
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 5 years ago
LICENSE Create LICENSE 5 years ago
README.MD Updated the dependencies section to reflect the new icon generation package that I am using. 5 years ago
conf.json Added a run script, updated the config for generic parameters updated the readme and configured the package.json file. 5 years ago
configManager.js Updated system page to display basic information on how many videos and users are in the system. 5 years ago
fileIO.js Got a basic web page working with a login screen. 5 years ago
package.json Fixed bug with finding out if a video is public or private and changed the way which icons are generated to be a more supported plugin which outputs GIFs. 5 years ago
recursiveTraversal.js Updated system to recursively read subdirectories to find files. 5 years ago
run.sh Added a run script, updated the config for generic parameters updated the readme and configured the package.json file. 5 years ago
server.js Updated file preview to take the video preview 5 minutes into to movie to prevent blank icons. Minor bug fixes. 5 years ago
user.js Fixed videos, watch and icons to work with express routes. 5 years ago
utils.js Updated file preview to take the video preview 5 minutes into to movie to prevent blank icons. Minor bug fixes. 5 years ago
videoManager.js Fixed bug with empty folders. 5 years ago

README.MD

What Is This?

This is a custom media server written in node JS to stream videos from a remote server. This web system enables users to log into the system and view videos using the basic HTML 5 video player.

Why?

  • Universal and will run on any device with a web browser
  • Supports buffering which is useful when connecting to a remote server
  • Gained security because you don't need to grant everyone user accounts to view content from media server

Why just not use Plex?

  • Light weight
  • Easy to install
  • Easily expandable and hackable to fit your needs

Installation

NPM Dependencies

npm install

System Dependencies

$apt-get install ffmpeg

This also relies on gifski which can be installed following the links on their website. Both ffmpeg and gifski are used for generating the video preview gifs.

Running

To deploy this you will want to run this behind a reverse NGINX proxy to allow you to encrypt all of the network traffic. There are plenty of tutorials on how to do this online with let's encrypt.

To run this program either run run.sh or execute node server.js. This by default will run on port 5000 -- you are able to change this in conf.json. To make this easier for you in the long run, I usually run my node applications as systemd services.

The default config provided in this project has the default username of admin and password of admin. You will want create a new admin user and remove the default one once you get this running.

Contributing

This was largely just a weekend hack for me. This currently fits most of my needs and is functional. If you find any bugs, feel free to open a issue and I will get around to looking at it. I am always looking for people to contribute to my projects. If you have an idea for an enhancement for this project feel free to hack away and issue a PR. Contact me using the form on my blog or by opening a github issue if you have any questions regarding the code or how to use this project.