How to Install Streama on CentOS 7

Streama is a free and open source media streaming application. It's a self-hosted alternative to Netflix. It has numerous features such as easy drag and drop media management, beautiful media player, live sync watching, multi-user, subtitles and resume capability etc.

In this tutorial, we will install Streama on CentOS 7 server.

Prerequisite

  • Minimal CentOS 7 server
  • Root privileges

Step 1 - Installing Streama

It is recommended to update the server before installing any package so that the existing packages and repositories are updated.

yum -y update

You can install Streama on both OpenJDK or Oracle JAVA. In this tutorial, we will install the latest version of Oracle Java into the server. Run the following command for same.

wget --no-cookies --no-check-certificate --header "Cookie:oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"

If you do not have wget installed, you can run the yum -y install wget to install wget. Now install the downloaded RPM using the following command.

yum -y localinstall jdk-8u131-linux-x64.rpm

You can run the following command to verify that Java is installed or not.

java -version

The above command will print the version of JAVA you have installed. You should get similar output as shown below.

[root@liptan-pc ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

Now that we have successfully installed Java, we can download the Streama War package using the following link.

wget https://github.com/dularion/streama/releases/download/v1.1/streama-1.1.war

A War package or web archive contains all the files of a web project. You can always check for the link to the latest version of Streama using Streama download page.

Rename the war file and move it to a secure location using the following commands.

mkdir /opt/streama
mv streama-1.1.war /opt/streama/streama.war

Now you can start the application immediately, run the following command.

java -jar /opt/streama/streama.war

Press ctrl + C to stop the execution. Create a new directory to store the media files uploaded to Streama by typing:

mkdir /opt/streama/media

Provide appropriate permissions to the directory using the following command.

chmod 664 /opt/streama/media

Now that we have our environment ready, we can create a systemd service to run Streama server. Running Streama as a service will ensure that the server is running on background. It will be automatically started on system reboot and process failures. To create a new systemd service file, type:

nano /etc/systemd/system/streama.service

Now add the following lines into the text file.

[Unit]
Description=Streama Server
After=syslog.target
After=network.target

[Service]
User=root
Type=simple
ExecStart=/bin/java -jar /opt/streama/streama.war
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=Streama

[Install]
WantedBy=multi-user.target

Save the file and exit from editor. You can now run the Streama server directly using the following command.

systemctl start streama

To enable the application to start automatically at boot time, run the following command.

systemctl enable streama

To check the status of the service, run the following command.

systemctl status streama

You will likely see the following output.

[root@liptan-pc ~]# systemctl status streama
? streama.service - Streama Server
Loaded: loaded (/etc/systemd/system/streama.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2017-06-22 19:02:32 UTC; 19s ago
Main PID: 20053 (java)
CGroup: /system.slice/streama.service
??20053 /bin/java -jar /opt/streama/streama.war

Jun 22 19:02:32 ip-172-31-0-204 systemd[1]: Started Streama Server.
Jun 22 19:02:32 ip-172-31-0-204 systemd[1]: Starting Streama Server...
Jun 22 19:02:37 ip-172-31-0-204 Streama[20053]: INFO streama.Application - Starting Application on ip-172-31-0-204...in /)
Jun 22 19:02:37 ip-172-31-0-204 Streama[20053]: DEBUG streama.Application - Running with Spring Boot v1.3.8.RELEAS...LEASE
Jun 22 19:02:37 ip-172-31-0-204 Streama[20053]: INFO streama.Application - The following profiles are active: production
Jun 22 19:02:47 ip-172-31-0-204 Streama[20053]: Configuring Spring Security Core ...
Jun 22 19:02:48 ip-172-31-0-204 Streama[20053]: ... finished configuring Spring Security Core
Hint: Some lines were ellipsized, use -l to show in full.

By default the Streama will run on port 8080. We can create a reverse proxy with Apache so that the Streama application will run on port 8080, but Apache will listen to port 80 and 443, which the default HTTP and HTTPS port. We will also secure the connection to the server using Let’s Encrypt free SSL. Install Apache web server and mod_ssl using the following command.

yum -y install httpd mod_ssl

Now start Apache web server and enable it to automatically start at boot time using the following commands.

systemctl start httpd
systemctl enable httpd

Now we will need to generate SSL certificates from Let’s Encrypt client. Certbot, which is the Let’s Encrypt certificate client is not available in default YUM repository. You will need to install EPEL repository for this. To install EPEL, type:

yum -y install epel-release
yum -y update

Now install Certbot using the following command.

yum -y install python-certbot-apache

After finishing, the installation, run the command below to obtains the certificates only. Let’s Encrypt client checks the domain authority before providing the certificates. Hence, make sure that your domain is pointed to the IP address of the server.

certbot certonly --apache -d streama.yourdomain.com

The above command will run Certbot utility to obtain the certificates only. Certificates will not be installed by Certbot, nor it will change any configuration on the server. It may ask you which SSL configuration to use during authentication, choose ssl.conf. Finally, provide your email address and accept the terms and condition. Once the certificates are generated, they are likely to be stored in the following directory.

/etc/letsencrypt/live/streama.yourdomain.com

Where streama.yourdomain.com is your actual domain. In the directory, you will find cert.pem which is your domain’s SSL certificate and privkey.pem which is your SSL certificate’s private key.

Let’s Encrypt SSL expires in 90 days, so it is recommended to set an automatic renewal for your certificates. Run the following command to open your crontab file.

crontab -e
Enter the following line into the crontab file.
30 1 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

The above cron job will automatically run every Monday at 1:30 AM and if your certificates are due for expiry, it will automatically renew them.

Now that our SSL certificates are generated, proceed to create a new virtual host for your application. Type the following command to create a new virtual host.

nano /etc/httpd/conf.d/streama.yourdomain.com.conf

Replace streama.yourdomain.com with your actual domain. Add the following lines into the file.

<VirtualHost *:80>
    ServerName streama.yourdomain.com
    Redirect permanent / https://streama.yourdomain.com/
    TransferLog /var/log/httpd/streama.yourdomain.com_access.log
    ErrorLog /var/log/httpd/streama.yourdomain.com_error.log
</VirtualHost>

<VirtualHost *:443>
    ServerName streama.yourdomain.com
    ServerAdmin [email protected]
    SSLEngine On
    SSLCertificateFile /etc/letsencrypt/live/streama.yourdomain.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/streama.yourdomain.com/privkey.pem
    ProxyPreserveHost On
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    TransferLog /var/log/httpd/streama.yourdomain.com_ssl_access.log
    ErrorLog /var/log/httpd/streama.yourdomain.com_ssl_error.log
</VirtualHost>

In the above configuration change streama.yourdomain.com to your actual domain. You will also need to make sure that the path to the SSL certificates are correct. If there is any error into the configuration, Apache web server will not start.

Once done, restart your Apache web server so that the changes made in configuration can take effect.

systemctl restart httpd

Further, you will also need to disable the SELinux. To temporary disable SELinux without restarting the server, run the following command.

setenforce 0

To completely disable the SELinux you will need to edit /etc/selinux/config file.

nano /etc/selinux/config

Find the following line:

SELINUX=enforcing

Change it to:

SELINUX=disabled

New configuration take effect once you restart your server. Now you can start the Streama service if not running, using the following command.

systemctl start streama

Configure firewall to allow port 80 and 443 using following commands.

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

You can now browse the following URL in your favorite browser.

https://streama.yourdomain.com

You will see following login interface. Login using username admin and password admin.

Login to Streama

On first successful login, you will need to configure few settings for Streama Server. You will be automatically redirected to the Settings page.

Streama settings

Provide the path to upload directory which we have created to store the media. Provide the base URL of your application. You can also configure the application name and Logos of the application. Once done click Save Settings to save the settings. You can now access the dashboard.

Set upload directory

To add a new TV show or Movie, click on Manage Content tab.

Add TV show

You can click on File Manager tab on Manage Content page to manage the files.

Streama file manager

You can now use Streama to stream your favorite TV shows and movies.

Share this page:

2 Comment(s)