NodeTube is a free software video hosting package written for Node.js. It uses MongoDB for storage, redis modules and ffmpeg for video conversion. It does not use WebTorrent or any similar technology for bandwidth reduction which means that hosting using NodeTube is quite bandwidth-expensive. NodeTube is easy to install for those who are familiar with hosting applications on Linux servers and it is mature enough to be used as a smaller personal video hosting platform. Scaling it to serve a really huge number of users may be somewhat problematic.
NodeTube is free software under the MIT license.
The NodeTube developers have a live instance using the NodeTube software running at newtube.app.
There are no releases available at NodeTubes GitHub page at github.com/mayeaux/nodetube. The instructions advice that one should use git to install it. Installation is fairly strait forward if you are familiar with git and node.js.
Make sure you have the redis, MongoDB and ffpmeg installed before you install NodeTube. Packages for MongoDB are not available in the repositories of Debian, Fedora, CentOS or RHEL due to the restrictive nature of the Server Side Public License (SSPL) MongoDB uses. It will therefore have to be installed using the source which is available at the MongoDB GitHub releases page.
Installation of NodeTube is fairly easy once you have gotten past the hurdle of installing MongoDB. First, clone the source:
git clone https://github.com/mayeaux/nodetube
then enter the directory it makes with
cd nodetube and run
npm install will download and install a lot of modules. This step will take quite some time.
That's all it takes to get NodeTube up and running locally. Make sure you have MangoDB with a database and redis running and start it with
npm run dev if you want to run it with nodemon.
That will, hopefully, bring up a working NodeTube instance on
http://127.0.0.1:3000/ as well as your computers local IP (on port
NodeTube includes a proxy called
ngrok which can be used to provide a publicly-facing service on another port.
ngrok can serve content using https.
Features And Usability
The NodeTube software provides an alright video hosting website which can be used to upload videos, images and audio clips. You, as well as users who register to a site running NodeTube, can immediately start uploading files and share videos.
NodeTube works, and it is overall a decent piece of server software. However, there are some design decisions with it which may prove to be a problem. The NodeTube software serves all visitors browsing videos on sites running it directly from the server NodeTube is running on. The very similar PeerTube video sharing software package uses the WebTorrent protocol to off-load some of the bandwidth when many users are viewing a single video. WebTorrent is also useful if you want to quickly setup servers who push suddenly popular video content. NodeTube has no such built-in functionality. Further, there doesn't seem to be A site running NodeTube which suddenly gets a large influx of users could easily be brought to a grinding halt due to excessive bandwidth use.
NodeTube does have some specific code for offloading videos to blackblaze. There is also support for using Discord to get moderation notifications.
NodeTube supports video transcoding. It uses ffmpeg for transcoding purposes. This functionality works just fine.
NodeTube has built-in support for different user tiers. Site administrators can configure a free tiers and a paid tier place different limits on free and paid users. There is built-in support for using the Stripe payment processor (only Stripe, no alternatives are supported) to manage user payments. There is also built-in support for using Google AdSense to serve advertisements.
The public-facing website NodeTube provides is fine. It is easy to use and strait forward. Users will have no problem registering and uploading videos.
Potential Licensing Issues
NodeTube uses MongoDB as a database back-end and that could be a huge problem and potentially a deal-breaker.
NodeTube itself is licensed under the very liberal MIT Software License. That license is fine but it may not apply to your personal NodeTube installation. MongoDB comes in two editions: A community edition and a commercial edition. The community edition is licensed under a rather special MongoDB-specific "Server Side Public License (SSPL)". This license requires that all software which is part of a service using software under the SSPL is also made available under the SSPL. Put simply: A NodeTube installation which is using the "community" version of MangoDB, as well as all the customization and changes made to a NodeTube-installation, will be subject to the SSPL. This does not apply if you run NodeTube with a database provided by a commercial MongoDB subscription with a commercial license.
The SSPL license is an issue even if you are fine with sharing all changes you make to NodeTube and other custom server software you write under the SSPL. ffmpeg, which NodeTube relies on, is licensed under a dual LGPL 2.1+/GPL 2+ license. You can't legally use that with software using the MongoDB "community" edition.
Verdict And Conclusion
NodeTube is, apart from the licensing issues due to its reliance on MongoDB, an alright video hosting platform which can be used to setup a simple video sharing site. The lack of support for WebTorrent and easy off-loading of popular video files means that you will run into problems if you setup a site which becomes wildly popular over night.
NodeTube is fine if you just want something you can use to share some videos and podcasts using your own server (or cloud instance).
Do note that we have not done any real-world testing with NodeTube what so ever. None. We installed it, got a local NodeTube server up and running, tested uploading some videos to it and looked at the source code. That does not say much about its performance in a real-world scenario with hundreds of users streaming videos, uploading videos, commenting on videos and so on. It does seem like a fine piece of video hosting software but it does seem somewhat limited when it comes to large deployment scaling.