How to Install PeerTube on Ubuntu Server

PeerTube is a free, decentralized, and open-source video hosting platform that allows you to share videos without any restrictions on hosting capacity, bandwidth, or storage. In this tutorial, you'll learn how to install PeerTube on an Ubuntu Server.

Prerequisites

Before we jump into the installation process, make sure that you have the following prerequisites:

Step 1- Install NodeJS

Firstly, update your system package list by running the following command:

$ sudo apt update

Then install Node.js using the following command:

$ sudo apt install nodejs npm

Once the installation is completed, verify the installed version of Node.js using the following command:

$ node -v

It should output something like this:

v12.6.0

Step 2 - Install PostgreSQL

PeerTube uses PostgreSQL as its database backend. To install PostgreSQL, run the following command:

$ sudo apt install postgresql

After completing the installation process, you need to create a new PostgreSQL user and database for PeerTube. To do this, follow these steps:

  1. Open the PostgreSQL console using the following command:
$ sudo su postgres
$ psql
  1. Create a new PostgreSQL user and database by running the following commands:
CREATE USER peertube WITH PASSWORD 'yourpassword';

CREATE DATABASE peertube OWNER peertube;
  1. Exit the PostgreSQL console using the following command:
\q

Step 3 - Install PeerTube

Download the latest version of PeerTube using the following command:

$ sudo git clone https://github.com/chocobozzz/PeerTube.git /var/www/peertube

Navigate to the downloaded directory:

$ cd /var/www/peertube

Then install PeerTube dependencies by running the following command:

$ sudo npm install

After installation, create a new configuration file with the following command:

$ sudo cp ./config/production.yaml.example ./config/production.yaml

Edit the configuration file with the following command:

$ sudo nano ./config/production.yaml

Change the values according to your server configuration:

production:
  url: "http://yourdomain.com"
  port: 9000
  webtorrent:
    announce: http://yourdomain.com:8000/announce
  services:
    postgresql:
      user: peertube
      database: peertube
      password: yourpassword

Save and exit the configuration file.

Step 4 - Configure Nginx

Create a new virtual host configuration file for PeerTube:

$ sudo nano /etc/nginx/sites-available/peertube.yourdomain.com.conf

Add the following content to the file:

server {
    listen 80;
    server_name peertube.yourdomain.com;

    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /static {
        alias /var/www/peertube/client/dist/static;
        expires 1d;
    }

    location /client {
        alias /var/www/peertube/client/dist/;
        try_files $uri $uri/ /index.html;
    }
}

Save and close the file.

Enable the virtual host by running the following command:

$ sudo ln -s /etc/nginx/sites-available/peertube.yourdomain.com.conf /etc/nginx/sites-enabled/

Test the Nginx configuration with the following command:

$ sudo nginx -t

If there are no errors, reload Nginx:

$ sudo systemctl reload nginx

Step 5 - Start PeerTube

Finally, start the PeerTube service by running the following command:

$ cd /var/www/peertube
$ sudo NODE_ENV=production npm start

You can now access your PeerTube instance by visiting http://peertube.yourdomain.com in your web browser.

Conclusion

Congratulations! You have successfully installed PeerTube on your Ubuntu Server. Now you have a decentralized video hosting platform to share your videos without any restrictions.

If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!

Alternatively, for the best virtual desktop, try Shells!