ติดตั้งเซิร์ฟเวอร์ XMPP (Jabber) ด้วย Prosody [อัปเดต]


พวกเราหลายคนใช้ Gtalk o Facebook Chat โดยไม่รู้ว่าโปรโตคอลที่เราใช้สื่อสารนั้นไม่มีใครอื่นนอกจาก XMPP (โปรโตคอลการส่งข้อความและการแสดงตนที่ขยายได้) ซึ่งเปิดให้บริการเช่นกัน

En GNU / Linux เรามีแอพพลิเคชั่นมากมายสำหรับตั้งค่าเซิร์ฟเวอร์ของเราเอง XMPP o ส่งเสียงเจี๊ยวจ๊าว ตามที่ทราบกันดีว่าบางอย่างซับซ้อนกว่าที่อื่นเมื่อกำหนดค่า ตัวอย่างเช่นเรามี กระหึ่มซึ่งค่อนข้างง่ายและเบา แต่ถ้าเราต้องการเพิ่มประสิทธิภาพให้มากขึ้นเรามี ฉันทลักษณ์.

แล้วฉันจะปล่อยให้คุณ บทความ ตีพิมพ์ใน ลำไส้ โดยผู้ใช้คนหนึ่งของเรา (Hugo) และเขาแสดงให้เราเห็นถึงวิธีกำหนดค่าเซิร์ฟเวอร์ของเราเอง XMPP กับ ฉันทลักษณ์.

การแนะนำ

เมื่อติดตั้งเซิร์ฟเวอร์ XMPP (Jabber) สำหรับการส่งข้อความภายในบนเครือข่ายท้องถิ่นหลายคนเลือก jabber, ejabberd หรือ openfire แต่ถึงแม้ว่าจะใช้งานได้ แต่แอปพลิเคชันเหล่านี้ก็สามารถต้องการทรัพยากรจำนวนมากได้

หากคุณมีเครือข่ายขนาดเล็กหรือขนาดกลางและต้องการเพียงบริการส่งข้อความโต้ตอบแบบทันทีโชคดีที่มีทางเลือกเซิร์ฟเวอร์ที่มีน้ำหนักเบาเรียกว่าฉันทลักษณ์ซึ่งแม้ว่าจะมีการตั้งโปรแกรมใน LUA ซึ่งเป็นภาษาที่ตีความได้ แต่ผู้พัฒนาก็ใช้งานได้ดีมาก ถึง luajit

บทช่วยสอนสั้น ๆ นี้จะอธิบายวิธีการติดตั้งและกำหนดค่าฉันทลักษณ์บน Debian เสถียร

การเตรียมการและการติดตั้ง

แพ็คเกจ Prosody อยู่ในที่เก็บ Debian แต่ผู้พัฒนาซอฟต์แวร์นี้ได้เตรียมที่เก็บสำหรับ Debian และอนุพันธ์ที่มีแพ็คเกจล่าสุดและโมดูลเพิ่มเติมซึ่งเราสามารถใช้ได้ดังนี้:

echo "deb http://packages.prosody.im/debian เสถียร main" | sudo tee -a /etc/apt/sources.list wget http://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add - อัปเดตความถนัด sudo

เมื่อเพิ่มที่เก็บแล้วเราสามารถดำเนินการติดตั้งฉันทลักษณ์ได้ (เพิ่มโมดูลที่จะใช้เพิ่มเติม sasl เป็นกลไกการพิสูจน์ตัวตนหากจำเป็นซึ่งช่วยให้สามารถรวมฉันทลักษณ์เข้ากับ pam, LDAPฯลฯ )

sudo aptitude ติดตั้ง 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"

วิซาร์ดจะถามเราชุดข้อมูลซึ่งข้อมูลที่จำเป็นจริงๆคือ“ ชื่อสามัญ (เช่นเซิร์ฟเวอร์ เอฟคิวดีเอ็น หรือชื่อของคุณ)” ที่เราต้องใส่โดเมนของเราตามที่เราจะใช้ในส่วนนี้ VirtualHost ไฟล์กำหนดค่า

นอกจากนี้หากบนเซิร์ฟเวอร์ที่เราติดตั้งฉันทลักษณ์ที่เราได้กำหนดค่าไว้ 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 - ฉัน eth1 -s 192.168.0.0/24 -p tcp -m tcp -m multiport --dports 5222,5223,5269 -m รัฐ - รัฐใหม่ -j ยอมรับ

องค์ประกอบ

ต่อไปเราจะดำเนินการแก้ไขบางบรรทัดของไฟล์การกำหนดค่าซึ่งเราต้องแก้ไข /etc/prosody/prosody.cfg.lua จึงมีลักษณะดังนี้:

พอร์ต = {5222, 5269} ssl_ports = {5223} admins = {"juan@mydomain.cu", "pedro@mydomain.cu"} use_libevent = true; - ตัวเลือกเริ่มต้นจะขึ้นอยู่กับฟังก์ชั่น select () แทนที่จะใช้ตัวเลือก epoll () ซึ่งมีประสิทธิภาพและปรับขนาดได้มากกว่า module_enabled = {"บัญชีรายชื่อ"; "saslauth"; "tls"; "dialback"; "ดิสก์"; "เอกชน"; "vcard"; "ความเป็นส่วนตัว"; "การบีบอัด"; "legacyauth"; "รุ่น"; "เวลาทำงาน"; "เวลา"; "ปิง"; "ห้าวหาญ"; "ลงทะเบียน"; - อย่าปิดใช้งานโมดูลนี้ไม่เพียง แต่อนุญาตให้ลงทะเบียน แต่ยังเปลี่ยนรหัสผ่าน "adhoc" ด้วย "admin_adhoc"; "posix"; "bosh"; - เพิ่มบรรทัดนี้หากคุณต้องการเปิดใช้งาน jabber ผ่าน http}; allow_registration = เท็จ; - ปิดใช้งานเพื่อความปลอดภัย - เปลี่ยนเป็น true หากคุณต้องการเปิดใช้งานการสร้างบัญชีจากไคลเอนต์เอง ssl = {key = "/etc/prosody/certs/localhost.key"; ใบรับรอง = "/etc/prosody/certs/localhost.cert"; } ที่เก็บข้อมูล = "ภายใน"; - ที่เก็บข้อมูลเริ่มต้นคือไฟล์ xml - ทางเลือกที่เราสามารถใช้วิธีการจัดเก็บ "sql" - ซึ่งอนุญาตให้ใช้ SQLite, MySQL หรือ PostgreSQL เป็นแบ็กเอนด์ (แม้ว่าจะต้องเพิ่มพารามิเตอร์บางอย่างก็ตาม) การพิสูจน์ตัวตน = "internal_hashed"; - เราสามารถใช้ "internal_plain" ได้หากไคลเอนต์ไม่รองรับ SCRAM-SHA-1 - ถ้าเราต้องการใช้วิธี sasl เพื่อใช้ LDAP ในภายหลังเราต้องใช้ "cyrus" log = {error = "/ var / log / prosody / ฉันทลักษณ์. err "; ข้อมูล = "/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"; }

เมื่อแก้ไขไฟล์การกำหนดค่าแล้วเราจะเริ่มบริการใหม่:

sudo บริการฉันทลักษณ์ลบ

ตอนนี้เราจะดำเนินการสร้างบัญชี ในกรณีนี้เนื่องจากในไฟล์คอนฟิกูเรชันเราปิดการใช้งานรีจิสทรีจากไคลเอนต์บัญชีจะต้องถูกสร้างขึ้นด้วยตนเองบนเซิร์ฟเวอร์ วิธีการพิสูจน์ตัวตนที่เราเลือกในการกำหนดค่า (internal_hashed) ทำให้รหัสผ่านไม่ได้รับการบันทึกอย่างชัดเจน แต่ด้วยกลไก SCRAM-SHA-1. หากไคลเอ็นต์การส่งข้อความที่เราตั้งใจจะใช้ไม่รองรับกลไกนี้สามารถใช้เมธอด "internal_plain" ในการกำหนดค่า

ขั้นแรกเราจะสร้างบัญชีของผู้ดูแลระบบของบริการที่เราประกาศในการกำหนดค่า (การประกาศไม่ได้หมายความว่าบัญชีเหล่านี้ถูกสร้างขึ้นโดยอัตโนมัติ):

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

เราสามารถใช้คำสั่งเดียวกันสำหรับบัญชีอื่น ๆ ที่เราต้องการสร้าง

สุดท้ายเราตรวจสอบว่าบริการกำลังทำงานอยู่:

สถานะ sudo prosodyctl

เราควรได้รับข้อความดังต่อไปนี้:

Prosody ทำงานด้วย PID 1310

การกำหนดค่าไคลเอนต์

การกำหนดค่าขึ้นอยู่กับไคลเอนต์ แต่โดยทั่วไปแล้วรายละเอียดจะง่าย ตัวอย่างเช่นสำหรับ ภาษาอังกฤษของจีนบ๋อยฝรั่ง:

แท็บ "พื้นฐาน"

Nombre de usuario: จอห์น
โดเมน: mydomain.cu
ทรัพยากร: PC-juan

แท็บ "ขั้นสูง"

ความปลอดภัยในการเชื่อมต่อ: ใช้การเข้ารหัสถ้าเป็นไปได้
พอร์ตเชื่อมต่อ: 5222
เชื่อมต่อกับเซิร์ฟเวอร์: myserver.mydomain.cu

บันทึก

สามารถดูข้อมูลเพิ่มเติมได้ (รวมถึงการใช้ Cyrus SASL ด้วย LDAP และวิธีสร้างรายการจาก DNS) ใน บทความนี้ จาก Debian Wiki

ผู้ใช้แสดงความคิดเห็นผ่านทาง DesdeLinux เพื่อหยุดบริการที่คุณต้องดำเนินการจริงๆ pkill lua5.1


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   KZKG ^ กาอาระ dijo

    ฉันชอบมัน ... มาดูกันว่าฉันเปลี่ยน OpenFire เป็น ejabberd หรือ Prosody นี้สักครั้งหรือไม่🙂

    1.    Elav dijo

      ฉันกำลังทำการทดสอบใน VirtualBox อย่างแม่นยำอยู่แล้ว .. เพราะถ้าเรารอคุณลูกชายของฉัน .. ¬¬

      1.    KZKG ^ กาอาระ dijo

        ^ - ^ อุ ... ฮิฮิ ...
        ตอนนี้ฉันส่งตั๋วไปยังผู้ให้บริการโฮสติ้งเพื่อถามเกี่ยวกับระเบียน DNS เราจำเป็นต้องลบ 'jabber'

        1.    Elav dijo

          ตกลง. Jabber, IRC, Facebook, Gtalk ไม่รู้วิธีหรือที่ไหน แต่เชื่อมต่อ ..

  2.   เออร์เนสโต อินฟานเต dijo

    การรวมกับ LDAP ของฉันทลักษณ์เป็นอย่างไร? และ BD?

    1.    Elav dijo
  3.   โรตส์ 87 dijo

    สักภาพสำหรับผู้มีความรู้น้อยก็ไม่เลวนะครับ ^. ^

  4.   นักล่า dijo

    ที่บ้านฉันมีฉันทลักษณ์ฉันติดตั้งเพื่อทดสอบและฉันชอบมันเพราะมันเรียบง่าย รายละเอียดเมื่อหยุดเซิร์ฟเวอร์ฉันต้องทำ pkill lua5.1 เพื่อหยุดมันจริงๆ

  5.   auroszx dijo

    ว้าวนี้น่าสนใจ มีวิธีที่คนอื่นสามารถสร้างผู้ใช้ผ่าน GUI (อาจเป็นเว็บ) ได้หรือไม่? คุณจะไปรับโดเมนเพื่อใช้งานได้อย่างไร? 😛

    1.    นักล่า dijo

      คุณเปิดใช้งานการลงทะเบียนใน config และจาก jabber ไคลเอนต์เดียวกันที่ลงทะเบียนโดยตรวจสอบตัวเลือกเพื่อสร้างบัญชีบนเซิร์ฟเวอร์

      allow_registration = จริง;

  6.   Ferran dijo

    ฉันกำลังมองหาแพ็คเกจฉันทลักษณ์ใน slackware บทช่วยสอนที่ยอดเยี่ยม ไชโย

  7.   อาร์ตูโรโมลินา dijo

    ฉันจะตรวจสอบได้อย่างไรว่าผู้ใช้สามารถตรวจสอบสิทธิ์ได้หรือไม่? หรือฉันจะรู้ได้อย่างไรว่าผู้ใช้เชื่อมต่อกับเซิร์ฟเวอร์?

  8.   @Jlcmux dijo

    ฉันทำสำเร็จ😀ฉันสามารถติดตั้งและกำหนดค่าได้อย่างถูกต้อง ติดตั้งเซิร์ฟเวอร์บนพีซีเครื่องหนึ่งและไคลเอนต์เป็นพีซีเครื่องอื่น แต่ฉันมีปัญหา เพื่อให้ไคลเอ็นต์ทราบว่าเซิร์ฟเวอร์ของฉันที่มีโดเมน (medellinlibre.org) เป็น LOCAL ฉันต้องเพิ่มลงในไฟล์โฮสต์ IPDELSERVIDOR medellinlibre.org ถ้าไม่เช่นนั้นจะไม่เชื่อมต่อด้วยเหตุผลที่ชัดเจน คำถามของฉันคือถ้าไม่มีวิธีใดที่พีซีทั้งหมดในเครือข่ายจะรู้โดยค่าเริ่มต้นว่าโดเมนนี้อยู่บน LAN ที่ IP ที่กำหนด?

    1.    จำกัด dijo

      สงสัยเหมือนกัน! ตอนท้ายรู้ไหม ?? ฉันเริ่มต้นด้วยฉันทลักษณ์ ...

    2.    นักล่า dijo

      ง่ายมากใน pidgin ระบุ ip ของเซิร์ฟเวอร์ในตัวเลือกขั้นสูงตัวเลือกอื่นคือการเมานต์ DNS บน LAN ของคุณ

  9.   ฟรานซิส dijo

    หัวข้อนี้น่าสนใจมากและฉันอยากรู้ว่า Prosody รองรับ websockets หรือไม่ฉันสนใจที่จะสร้างเว็บไคลเอนต์ xmpp

    1.    @Jlcmux dijo

      คุณสามารถเห็นสิ่งนี้ http://code.google.com/p/xmppwebchat/

  10.   อินุคาเสะ dijo

    สวัสดีคุณไม่มีเวอร์ชันของบทช่วยสอนที่มีการกำหนดค่าสำหรับอินทราเน็ตในประเทศเท่านั้นไม่มีโดเมนหรืออะไรทำนองนั้น แทบจะไม่ถึงขนาดมีคอมพิวเตอร์ 1 เครื่องที่มีLiñuxเป็นเซิร์ฟเวอร์และคอมพิวเตอร์เครื่องอื่น ๆ ที่เชื่อมต่อ

    เป็นเพียงการสนทนาระหว่างคอมพิวเตอร์บนอินทราเน็ตผ่านพิดจินเท่านั้น