How to install PeerTube on Nethserver


(Markus Neuberger) #1

Peertube is a decentralized youtube replacement, see Feature request: PeerTube on NethServer:

Unfortunately peertube needs nodejs8 and I needed to replace the centos nodejs stack because rh-nodejs8 is not working, see Nethserver-collabora CODE testing and discussion so please don’t run in production.
You need a virtualhost domain like virtualhostdomain.tld.

Get repos - peertube, epel multimedia and nodejs:

wget -P /etc/yum.repos.d/
wget -P /etc/yum.repos.d/
curl -sL | bash -
yum -y install nethserver-postgresql postgresql-contrib nethserver-redis

Create database, db user and needed postgresql extensions (change secret to something more secure):

su - postgres -c psql
create database peertube_prod;
create user peertube with encrypted password 'secret';
grant all privileges on database peertube_prod to peertube;
\c peertube_prod

Install peertube:

yum -y install peertube

Edit /etc/peertube/production.yaml and set the DB password (that is secret if you didn’t change it in previous step) and your virtual host:

  hostname: 'virtualhostdomain.tld'
  password: 'secret'

Get /etc/httpd/conf.d/peertube.conf and edit the 2 servername directives to match your virtualhost:

wget -P /etc/httpd/conf.d/

ServerName virtualhostdomain.tld

Restart httpd and start/enable peertube and view peertube log:

systemctl restart httpd
systemctl enable peertube --now && journalctl -f -u peertube

Note the user password and exit journalctl with CTRL-C.

info: Username: root
info: User password: sdalfkdasfkasddfk

Browse to https://virtualhostdomain.tld and login with the given credentials.



Really great…
Thank you very much, for this how to.
And thank you, to show how this community is great and have loving memebrs.

(Rob Bosch) #3

Thanks a lot @mrmarkuz! Great work.
I will check with the peertube community if there are any options to get peertube integrated with CentOS7/NethServer in a somewhat more elegant way (nodejs issue)


And for polishing ( the path for excelence :innocent:)…
To have a Nethserver package with the « application menu » integration :kissing_heart:

(Rob Bosch) #5

I posted on peertube forums with some questions and remarks:

(Markus Neuberger) #6
Create /usr/share/nethesis/NethServer/Module/Dashboard/Applications/Peertube.php with following content (edit the URL to match your virtualhost):
namespace NethServer\Module\Dashboard\Applications;

class Peertube extends \Nethgui\Module\AbstractModule implements \NethServer\Module\Dashboard\Interfaces\ApplicationInterface
  public function getName()
    return "Peertube";
  public function getInfo()
    return array(
      'url' => "https://vhostdomain.tld",


Simply brilliant,
Thank you again.

(Rob Bosch) #8

I received a response on my question about NodeJS.
They suggest to use NVM (Nodejs Version Manager):
Would that be an option?

(Markus Neuberger) #9

Yes, as it does not touch the systems nodejs, I just have to find the best way that the peertube service uses the nvm version.
I am going to test it ASAP…

(HF) #10

Would this effect Onlyoffice using Nodejsv8?

(Markus Neuberger) #11

I think nvm could be used for onlyoffice too.
But the best way still would be rh-nodejs8 as it’s provided by system package manager and updated.

(Laurent) #12

Many thanks @mrmarkuz!
I’ve test this install, everything works expect to save a new configuration in the web admin interface.
The result is an error : “Server error. Please retry later.”

In /var/log/messages, I can see:
Mar 18 18:34:11 ns peertube: [] 2019-03-18 18:34:11.498 #033[31merror#033[39m: Error in controller. {
Mar 18 18:34:11 ns peertube: “meta”: {
Mar 18 18:34:11 ns peertube: “err”: “Error: EROFS: read-only file system, open ‘/etc/peertube/local-production.json’”
Mar 18 18:34:11 ns peertube: },
Mar 18 18:34:11 ns peertube: “err”: “Error: EROFS: read-only file system, open ‘/etc/peertube/local-production.json’”
Mar 18 18:34:11 ns peertube: }

I found this issues on the Peertube github: workaround to fix permission denied to local-production.json

So I did:
touch /etc/peertube/local-production.json
chown peertube:peertube /etc/peertube/local-production.json

But it doesn’t make the job. The result is the same: this file can’t be written.

An idea?

(Markus Neuberger) #13

Confirmed, I get the same error.

As a workaround you may edit /etc/peertube/production.json to fit your needs as recommended in the peertube install docs for centos instead of using the web UI. Don’t forget to remove /etc/peertube/local_production.json and restart the service with systemctl restart peertube.

(Laurent) #14

Thank you, it’s what I already done.

But do you think there is a ‘clean’ solution ?

(Markus Neuberger) #15

Maybe it works with the production version, this howto uses the community packages. I never tested on another distro than NS7.