Εγκατάσταση διακομιστή XMPP (Jabber) με Prosody [Ενημερώθηκε]


Πολλοί από εμάς χρησιμοποιούν Gtalk o Facebook Chat χωρίς να γνωρίζουμε ότι το πρωτόκολλο που χρησιμοποιούμε για την επικοινωνία δεν είναι άλλο από XMPP (Πρωτόκολλο επεκτάσιμων μηνυμάτων και παρουσίας) που είναι επίσης ανοιχτό.

En GNU / Linux έχουμε αρκετές εφαρμογές για να δημιουργήσουμε τον δικό μας διακομιστή XMPP o κουβεντολόι όπως είναι επίσης γνωστό, μερικά πιο περίπλοκα από άλλα κατά τη διαμόρφωση. Για παράδειγμα, έχουμε Έιμπεμπρντ, το οποίο είναι αρκετά απλό και ελαφρύ, αλλά αν θέλουμε να βελτιστοποιήσουμε πολύ περισσότερα, έχουμε Προσωδία.

Τότε σε αφήνω ένα άρθρο δημοσιευτηκε σε ΕΥΡΩ από έναν από τους χρήστες μας (Hugo) και όπου μας δείχνει πώς να διαμορφώσουμε τον δικό μας διακομιστή XMPP με Προσωδία.

Εισαγωγή

Κατά την εγκατάσταση ενός διακομιστή XMPP (Jabber) για εσωτερικά μηνύματα σε ένα τοπικό δίκτυο, πολλοί επιλέγουν jabber, ejabberd ή openfire, αλλά αν και λειτουργικές, αυτές οι εφαρμογές μπορούν να απαιτήσουν πολλούς πόρους.

Εάν έχετε ένα μικρό ή μεσαίο δίκτυο και θέλετε μόνο μια απλή υπηρεσία άμεσων μηνυμάτων, ευτυχώς υπάρχει μια ελαφριά εναλλακτική λύση διακομιστή που ονομάζεται prosody, η οποία αν και είναι προγραμματισμένη σε LUA η οποία είναι μια ερμηνευμένη γλώσσα, σύμφωνα με τους προγραμματιστές της, λειτουργεί πολύ καλά χάρη στο luajit.

Αυτό το σύντομο σεμινάριο θα εξηγήσει πώς να εγκαταστήσετε και να διαμορφώσετε το prosody στο Debian stable.

Προετοιμασίες και εγκατάσταση

Τα πακέτα Prosody βρίσκονται στο αποθετήριο του Debian, αλλά οι προγραμματιστές αυτού του λογισμικού έχουν ετοιμάσει ένα αποθετήριο για το Debian και παράγωγα που περιέχουν πρόσφατα πακέτα και πρόσθετες ενότητες, τα οποία μπορούμε να χρησιμοποιήσουμε ως εξής:

echo "deb http://packages.prosody.im/debian stable main" | sudo tee -a /etc/apt/sources.list wget http://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add - ενημέρωση επάρκειας sudo

Μόλις προστεθεί το αποθετήριο, μπορούμε να προχωρήσουμε στην εγκατάσταση του prosody (προσθέτοντας επιπλέον λειτουργικές μονάδες για χρήση sasl ως μηχανισμός ελέγχου ταυτότητας, εάν είναι απαραίτητο, που επιτρέπει την ενσωμάτωση του prosody με pam, LDAPΚ.λπ.).

sudo aptitude install sasl2-bin libsasl2-modules-ldap prosody liblua5.1- {sec0, cyrussasl0, event-prosody0}

Στη συνέχεια προχωρούμε στη δημιουργία αυτο-υπογεγραμμένων πιστοποιητικών για τον τομέα μας:

cd / etc / prosody / certs sudo openssl req -new -x509 -days 1095 -nodes -out "mydomain.cu.cert" -keyout "mydomain.cu.key"

Ο οδηγός θα μας ρωτήσει μια σειρά δεδομένων, από τα οποία το ουσιαστικό είναι το "Common Name (π.χ. διακομιστής FQDN ή το όνομα ΣΑΣ) "όπου πρέπει να τοποθετήσουμε τον τομέα μας, καθώς θα τον χρησιμοποιήσουμε στην ενότητα VirtualHost αρχείο διαμόρφωσης.

Επιπλέον, εάν στον διακομιστή όπου εγκαθιστούμε το prosody έχουμε διαμορφώσει iptables με προεπιλεγμένες πολιτικές άρνησης, πρέπει να ανοίξουμε τις απαιτούμενες θύρες για το δίκτυό μας, για παράδειγμα:

sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -i eth1 -s 192.168.0.0/24 -p tcp -m tcp -m state --state ESTABLISHED, RELATED -j ACCEPT sudo iptables -A INPUT - i eth1 -s 192.168.0.0/24 -p tcp -m tcp -m multiport --dports 5222,5223,5269 -m state - κατάσταση ΝΕΟ -j ΑΠΟΔΟΧΗ

διαμόρφωση

Στη συνέχεια, προχωρούμε στην τροποποίηση ορισμένων γραμμών του αρχείου διαμόρφωσης, για τις οποίες πρέπει να επεξεργαστούμε /etc/prosody/prosody.cfg.lua έτσι μοιάζει με αυτό:

ports = {5222, 5269} ssl_ports = {5223} διαχειριστές = {"juan@mydomain.cu", "pedro@mydomain.cu"} use_libevent = true; - η προεπιλεγμένη επιλογή βασίζεται στη λειτουργία select (), αντίθετα το libevent χρησιμοποιεί epoll (), το οποίο είναι πιο αποτελεσματικό και επεκτάσιμο. modules_enabled = {"ρόστερ"; "saslauth"; "tls"; "κλήση κλήσης"; "δίσκος"; "ιδιωτικός"; "vcard"; "μυστικότητα"; "συμπίεση"; "legacyauth"; "εκδοχή"; "χρόνος λειτουργίας"; "χρόνος"; "ping"; "ζωντάνια"; "κανω ΕΓΓΡΑΦΗ"; - μην απενεργοποιήσετε αυτήν την ενότητα, επιτρέπει όχι μόνο την εγγραφή αλλά και την αλλαγή κωδικών πρόσβασης "adhoc". "admin_adhoc"; "posix"; "σαχλαμάρα"; - προσθέστε αυτήν τη γραμμή εάν θέλετε να ενεργοποιήσετε το jabber μέσω http}. allow_registration = false; - απενεργοποιήθηκε για ασφάλεια - αλλάξτε σε true εάν θέλετε να ενεργοποιήσετε τη δημιουργία λογαριασμών από τον ίδιο τον πελάτη ssl = {key = "/etc/prosody/certs/localhost.key"; πιστοποιητικό = "/etc/prosody/certs/localhost.cert"; } αποθήκευση = "εσωτερικό"; - ο προεπιλεγμένος χώρος αποθήκευσης είναι ένα αρχείο xml - προαιρετικά μπορούμε να χρησιμοποιήσουμε τη μέθοδο αποθήκευσης "sql" - αυτό επιτρέπει τη χρήση SQLite, MySQL ή PostgreSQL ως backend (αν και ορισμένες παράμετροι πρέπει να προστεθούν) autentication = "internal_hashed"; - μπορούμε να χρησιμοποιήσουμε το "internal_plain" εάν ο πελάτης δεν υποστηρίζει SCRAM-SHA-1 - εάν θέλουμε να χρησιμοποιήσουμε τη μέθοδο sasl για να χρησιμοποιήσουμε αργότερα το LDAP, πρέπει να χρησιμοποιήσουμε το "cyrus" log = {error = "/ var / log / prosody / prosody. err "; info = "/var/log/prosody/prosody.log"; } pidfile = "/var/run/prosody/prosody.pid"; VirtualHost "localhost" VirtualHost "mydomain.cu" ssl = {key = "/etc/prosody/certs/mydomain.cu.key"; πιστοποιητικό = "/etc/prosody/certs/mydomain.cu.crt"; }

Μόλις τροποποιηθεί το αρχείο διαμόρφωσης, θα επανεκκινήσουμε την υπηρεσία:

αφαιρέστε το proso service prosody

Τώρα θα προχωρήσουμε στη δημιουργία των λογαριασμών. Σε αυτήν την περίπτωση, όπως στο αρχείο διαμόρφωσης απενεργοποιούμε το μητρώο από τους πελάτες, οι λογαριασμοί θα πρέπει να δημιουργηθούν χειροκίνητα στο διακομιστή. Η μέθοδος ελέγχου ταυτότητας που επιλέγουμε στη διαμόρφωση (internal_hashed) καθιστά ότι οι κωδικοί πρόσβασης δεν αποθηκεύονται καθαρά αλλά με τον μηχανισμό SCRAM-SHA-1. Εάν ο πελάτης ανταλλαγής μηνυμάτων που σκοπεύουμε να χρησιμοποιήσουμε δεν υποστηρίζει αυτόν τον μηχανισμό, η μέθοδος "internal_plain" θα μπορούσε να χρησιμοποιηθεί στη διαμόρφωση.

Πρώτα θα δημιουργήσουμε τους λογαριασμούς των διαχειριστών της υπηρεσίας που δηλώνουμε στη διαμόρφωση (δηλώνοντας ότι δεν σημαίνει ότι δημιουργούνται αυτόματα):

sudo prosodyctl adduser juan@mydomain.cu sudo prosodyctl adduser pedro@mydomain.cu

Μπορούμε να χρησιμοποιήσουμε την ίδια εντολή για οποιονδήποτε άλλο λογαριασμό που θέλουμε να δημιουργήσουμε.

Τέλος, ελέγχουμε ότι η υπηρεσία εκτελείται:

κατάσταση sudo prosodyctl

Πρέπει να λάβουμε ένα μήνυμα όπως το εξής:

Το Prosody εκτελείται με το PID 1310

Διαμόρφωση πελατείας

Η διαμόρφωση εξαρτάται από τον πελάτη, αλλά γενικά οι λεπτομέρειες είναι απλές. Για παράδειγμα, για Γλωσσικό κατασκεύασμα:

"Βασική" καρτέλα

Όνομα Χρήστη: Γιάννης
Τομέας: mydomain.cu
Πόρος: pc-john

Καρτέλα "Για προχωρημένους"

Ασφάλεια σύνδεσης: Χρησιμοποιήστε κρυπτογράφηση εάν είναι δυνατόν
Θύρα σύνδεσης: 5222
Σύνδεση με διακομιστή: myserver.mydomain.cu

σημειώσεις

Μπορείτε να βρείτε περισσότερες πληροφορίες (συμπεριλαμβανομένης της χρήσης του Cyrus SASL με LDAP και πώς να δημιουργήσετε καταχωρήσεις από DNS) Σε αυτό το άρθρο από το Debian Wiki.

Un usuario comenta via DesdeLinux que para detener realmente el servicio ha necesitado ejecutar pkill lua5.1


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   KZKG ^ Γκάρα dijo

    Μου αρέσει ... ας δούμε αν για πάντα αλλάζω το OpenFire για το ejabberd ή αυτό το Prosody 🙂

    1.    Έλαβ dijo

      Κάνω ήδη τις δοκιμές στο VirtualBox ακριβώς για αυτό .. γιατί αν σας περιμένουμε ο γιος μου .. ¬

      1.    KZKG ^ Γκάρα dijo

        ^ - ^ U ... hehe ...
        Τώρα στέλνω ένα εισιτήριο στον πάροχο φιλοξενίας ρωτώντας για την εγγραφή DNS που πρέπει να αφαιρέσουμε το "jabber."

        1.    Έλαβ dijo

          Εντάξει. Jabber, IRC, Facebook, Gtalk, δεν ξέρω πώς ή πού, αλλά να συνδεθώ ..

  2.   Ερνέστο Infante dijo

    Πώς είναι η ενσωμάτωση με το LDAP του Prosody; και το BD;

  3.   σαπίζει87 dijo

    μερικές εικόνες για τους λιγότερο γνώστες δεν θα ήταν κακές ^. ^

  4.   κυνηγός dijo

    Στο σπίτι έχω prosody, το εγκατέστησα για να δοκιμάσω και μου άρεσε για την απλότητά του. Μια λεπτομέρεια κατά τη διακοπή του διακομιστή πρέπει να κάνω ένα pkill lua5.1 για να τον σταματήσω πραγματικά.

  5.   auroszx dijo

    Ουάου, αυτό είναι ενδιαφέρον. Υπάρχει τρόπος με τον οποίο άλλα άτομα μπορούν να δημιουργήσουν χρήστες μέσω GUI (θα μπορούσε να είναι διαδικτυακός); Πώς θα πήγατε να αποκτήσετε έναν τομέα για να τον χρησιμοποιήσετε; 😛

    1.    κυνηγός dijo

      Ενεργοποιείτε την εγγραφή στο config και από τον ίδιο jabber πελάτη που έχουν εγγραφεί, επιλέγοντας την επιλογή δημιουργίας λογαριασμού στο διακομιστή.

      allow_registration = true;

  6.   Ferran dijo

    Ψάχνω πακέτα prosody σε slackware, εξαιρετικό σεμινάριο. Στην υγειά σας

  7.   Άρτουρο Μολίνα dijo

    Πώς μπορώ να επαληθεύσω εάν ένας χρήστης μπορεί να πραγματοποιήσει έλεγχο ταυτότητας; ή πώς μπορώ να ξέρω εάν ένας χρήστης είναι συνδεδεμένος στον διακομιστή;

  8.   @Jlcmux dijo

    Το κατάφερα 😀 μπόρεσα να το εγκαταστήσω και να το διαμορφώσω σωστά. Εγκαταστήστε το διακομιστή σε έναν υπολογιστή και ο πελάτης είναι άλλος υπολογιστής. αλλά έχω πρόβλημα. Για να γνωρίζει ο πελάτης ότι ο διακομιστής μου με τον τομέα (medellinlibre.org) είναι ΤΟΠΙΚΟΣ. Πρέπει να προσθέσω στο αρχείο host IPDELSERVIDOR medellinlibre.org. Εάν όχι, δεν συνδέεται, για προφανείς λόγους. Η ερώτησή μου είναι εάν δεν υπάρχει τρόπος για όλους τους υπολογιστές στο δίκτυο να γνωρίζουν από προεπιλογή ότι αυτός ο τομέας βρίσκεται στο LAN σε μια δεδομένη IP;

    1.    Ltd dijo

      ίδια αμφιβολία! το ήξερες στο τέλος; Ξεκινάω με την prosody ...

    2.    κυνηγός dijo

      Πολύ απλό, στο pidgin καθορίστε το ip του διακομιστή σε προχωρημένες επιλογές, η άλλη επιλογή είναι να προσαρτήσετε ένα dns στο LAN σας.

  9.   Φρανσίσκο dijo

    Αυτό το θέμα είναι πολύ ενδιαφέρον και θα ήθελα να μάθω αν το Prosody υποστηρίζει websockets. Ενδιαφέρομαι να δημιουργήσω έναν πελάτη web xmpp

    1.    @Jlcmux dijo

      Θα μπορούσατε να το δείτε. http://code.google.com/p/xmppwebchat/

  10.   Ινουκάζ dijo

    Γεια σας, δεν έχετε μια έκδοση του σεμιναρίου με διαμόρφωση που προορίζεται μόνο για εγχώριο intranet; Δεν υπάρχει τομέας ή κάτι τέτοιο. μόλις ένας υπολογιστής με Liñux είναι διακομιστής και οι άλλοι υπολογιστές που συνδέονται σε αυτόν

    Είναι αποκλειστικά το να μπορείτε να συνομιλείτε μεταξύ των υπολογιστών intranet μέσω του pidgin.