Σήμερα θα σας δείξω πώς να ρυθμίσετε τον δικό σας προσαρμοσμένο διακομιστή ροής RTMP χρησιμοποιώντας NGINX, Docker σε Linux mint.

Λοιπόν, τι είναι το Docker; Το Docker είναι ένα ειδικό εργαλείο που έχει σχεδιαστεί ειδικά για ευκολότερη δημιουργία, ανάπτυξη και εκτέλεση εφαρμογών Linux με χρήση container. Σύμφωνα με τους όρους του Docker, τα container είναι ένα προ-ομαδοποιημένο περιβάλλον όπου οι εφαρμογές Linux μπορούν να εκτελούνται με αναμενόμενο και επαναλαμβανόμενο τρόπο. Τα container έχουν όλους τους βασικούς πόρους (βιβλιοθήκες και άλλες εξαρτήσεις). Αυτό επιτρέπει στο ίδιο container να τρέχει σε κάθε υποστηριζόμενη πλατφόρμα Linux.

Αρχικά, συνιστάται ανεπιφύλακτα να βεβαιωθείτε ότι δεν υπάρχει προηγούμενη εγκατεστημένη έκδοση του Docker!!!
Ανοίγουμε το terminal και γράφουμε:
• sudo apt remove docker docker-engine docker.io containerd runc

Βεβαιωθείτε ότι η προσωρινή μνήμη APT είναι ενημερωμένη:
• sudo apt update

Από προεπιλογή, το APT δεν χρησιμοποιεί HTTPS. Εγκαταστήστε τα ακόλουθα πακέτα που θα επιτρέψουν στην APT να χρησιμοποιήσει ένα χώρο αποθήκευσης μέσω HTTPS.
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

Για την ενεργοποίηση του αποθετηρίου Docker, είναι σημαντικό το επίσημο κλειδί Docker. Ώρα να προσθέσετε το επίσημο κλειδί GPG του Docker στο μπρελόκ APT.
• curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

Ακόμη και μετά την επιτυχή προσθήκη του κλειδιού, είναι ασφαλές να επαληθεύσετε το κλειδί. Εκτελέστε την ακόλουθη εντολή –
• sudo apt-key fingerprint 0EBFCD88

Στην περίπτωση του Docker, υπάρχουν 3 διαφορετικά αποθετήρια – “stable” (συνιστάται για όλους!), “nightly” ή “test“.
Ας διαμορφώσουμε το “σταθερόαποθετήριο:
sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable”

Μόλις προστεθούν τα αποθετήρια, είναι απαραίτητο να ανανεώσετε ξανά την προσωρινή μνήμη APT:
• sudo apt update

Τέλος, εγκαταστήστε την πιο πρόσφατη έκδοση του Docker CE και του κοντέινερ:
• sudo apt install docker-ce docker-ce-cli containerd.io

Η σελίδα του container που χρειαζόμαστε εδώ είναι:
• https://hub.docker.com/r/tiangolo/nginx-rtmp

Εγκαθιστούμε το έτοιμο container με το nginx-rtmp όπως μας δείχνει στην σελίδα με την εντολή:
• docker run -d -p 1935:1935 –name nginx-rtmp tiangolo/nginx-rtmp

Για να δούμε ότι container έχουμε εγκαταστήσει δίνουμε την εντολή:
•sudo docker container ls

Για να μπούμε στο container:
sudo docker exec -it container-id bash

– ‘Οπου στο container-id βάζουμε και το αντίστοιχο id που μας δείχνει για το container που θέλουμε να μπούμε.

Τώρα θα κάνουμε ένα update την APT:
• apt update

Θα εγκαταστήσουμε τον editor nano:
• apt install nano

Για το facebook που εδώ και 2 χρόνια έχει αλλάξει από rtmp σε rtmps θα πρέπει να εγκαταστήσουμε το stunnel4 με την εντολή:
apt install stunnel4

και μετά να δημιουργήσουμε το αρχείο stunnel.conf
• nano /etc/stunnel/stunnel.conf

και βάζουμε αυτές εδώ τις γραμμές:

setuid = stunnel4
setgid = stunnel4
pid = /tmp/stunnel.pid
output = /var/log/stunnel4/dtunnel.log
include = /etc/stunnel/conf.d

και πατάμε το Ctrl+X μετά πατάμε y και μετά το enter για να το αποθηκέψει

μετά μπαίνουμε στο αρχείο stunnel4
• nano /etc/default/stunnel4

και αλλάζουμε στο ENABLED=0 σε ►► ENABLED=1

και πατάμε το Ctrl+X μετά πατάμε Y και μετά το Enter για να το αποθηκέψει

Μετά δημιουργούμε τον φάκελο conf.d με την εντολή:
• mkdir /etc/stunnel/conf.d

και δημιουργούμε μέσα το αρχείο fb.conf με την εντολή:
• nano /etc/stunnel/conf.d/fb.conf

Όπου θα βάλετε αυτές τις γραμμές:

[fb-live]
client = yes
accept = 127.0.0.1:19350
connect = live-api-s.facebook.com:443
verifyChain = no

και πατάμε το Ctrl+X μετά πατάμε Y και μετά το Enter για να το αποθηκέψει.

Εδώ τώρα χρειάζεται ένα restart το docker μας για να φορτώσουν στο σύστημα ότι εργασία έχουμε κάνει.
Άρα ανοίγουμε άλλο ένα terminal και βρίσκουμε το id του docker μας με την εντολή:
• sudo docker container ls

& κάνουμε Restart το docker μας με την εντολή:
• sudo docker restart 15a1e12c19b3

Όπου το: 15a1e12c19b3 είναι το id του δικού μου docker εσείς θα βάλετε του δικού σας!!!

Εφόσον έχει γίνει το restart ξανά μπαίνουμε στο docker με την εντολή
sudo docker exec -it container-id bash

Μπαίνουμε τώρα να ρυθμίσουμε το nginx με την εντολή:
• nano /etc/nginx/nginx.conf

Σβήνουμε ότι έχει μέσα και βάζουμε αυτό:

worker_processes auto;
rtmp_auto_push on;
events {}
rtmp {
    server {
        listen 1935;
        listen [::]:1935 ipv6only=on;

        application live {
            live on;
            record off;
            push rtmp://127.0.0.1/streamonlive;
        }

        application streamonlive {
            live on;
            record off;
            # you delete the # in front of push to make it active
           # push rtmp://live-iad.twitch.tv/app/YOURSTREAMKEY;   #for twitch
           # push rtmp://a.rtmp.youtube.com/live2/YOURSTREAMKEY; #for youtube
           # push rtmp://127.0.0.1:19350/rtmp/YOURSTREAMKEY;     #for facebook through stunnel4
        }

    }
}

Εδώ τώρα έχω βάλει μέσα για το twitch, YouTube, Facebook αλλά αν μπορεί η γραμμή που έχετε να τραβήξει κι άλλα ταυτόχρονα τα προσθέτετε το ένα κάτω από το άλλο.
Όποιο δεν θέλετε το απενεργοποιείτε βάζοντας τη δίεση # μπροστά.


Εγώ τα έχω όλα απενεργοποιημένα εδώ, άρα όποιο θέλουμε να χρησιμοποιήσουμε, του βγάζουμε από μπροστά τη δίεση # και βάζουμε στη θέση του:

YOUR STREAM KEY το πραγματικό IDKEY που έχουμε από τον provinder (πάροχο του δικτύου) μας.

Το επόμενο βήμα είναι να ελέγξουμε αν τρέχει το Docker μας πάντα όποτε ανοίγουμε τον υπολογιστή.

Κάνουμε ένα Restart τον υπολογιστή μας

Μόλις ανοίξει ο υπολογιστής μας ανοίγουμε το Terminal και γράφουμε:
sudo docker container ls

Θα δούμε ότι το Docker είναι κλειστό

Για να δούμε αν έχουμε containers στον υπολογιστή μας γράφουμε την εντολή:
• sudo docker ps -a

και μας βγάζει μία λίστα με όλα τα containers που έχουμε, στην προκειμένη περίπτωση έχουμε μόνο ένα.

Για να το κάνουμε να αρχίζει μαζί με τον υπολογιστή μας του δίνουμε την εντολή:
sudo docker update –restart=always ► ► ΕΔΩ ΒΑΖΟΥΜΕ ΤΟ ID ΤΟΥ CONTAINER

Για παράδειγμα… σε εμένα με την εντολή:

• sudo docker ps -a …μου βγάζει την λίστα:


CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15a1e12c19b3 tiangolo/nginx-rtmp “nginx -g ‘daemon of…” 19 hours ago Exited (0) 2 minutes ago nginx-rtmp

άρα αντιγράφω το CONTAINER ID που είναι το 15a1e12c19b3 και με την επόμενη εντολή για να ξεκινά μαζί με τον υπολογιστή μου του γράφω:

• sudo docker update –restart=always 15a1e12c19b3

και πατάω το Enter

Τώρα όποτε ανοίγω τον υπολογιστή μου θα τρέχει και το container από πίσω αυτόματα.

Και τώρα ξεκινάω το container με την εντολή:

• sudo docker start 15a1e12c19b3

και ξανά βλέπω αν το container τρέχει με την εντολή για άλλη μία φορά sudo docker container ls όπου σε εμένα βγάζει:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15a1e12c19b3 tiangolo/nginx-rtmp "nginx -g 'daemon of…" 19 hours ago Up About a minute 0.0.0.0:1935->1935/tcp, :::1935->1935/tcp nginx-rtmp

Σε εσάς πιθανότατα θα βγάζει άλλο Container ID άλλο CREATED και άλλο STATUS

Τώρα το μόνο που έχουμε να κάνουμε είναι να ανοίξουμε το OBS Sudio, Χsplit, Vmix ή όποιο άλλο χρησιμοποιεί ο καθένας και του δηλώνουμε να streamάρει στην ip του υπολογιστή μας.


Δηλαδή αν για παράδειγμα το linuxmint που ετοιμάσαμε έχει local ip 192.168.1.10 τότε βάζουμε:

rtmp://192.168.1.10/live

όπου το live είναι το πρώτο application που έχουμε στο αρχείο μας και παίρνει τα push από το streamonlive που έχουμε δηλώσει.

O video οδηγός:

ΔΥΝΑΜΗ ΦΩΣ ΕΛΕΦΘΕΡΙΑ ΣΕ ΟΛΟΥΣ