GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit Prosody XMPP Server na Ubuntu 20.04

Prosody je bezplatný open-source XMPP server napsaný v Lua. Je rychlý a lehký. XMPP je skvělý protokol pro rychlé zasílání zpráv. Tento tutoriál vám ukáže, jak nainstalovat a nakonfigurovat server Prosody XMPP na Ubuntu 20.04. Jakmile dokončíte tento tutoriál, budete mít svůj vlastní chatovací server.

Krok 1:Instalace Prosody na Ubuntu 20.04

Prosody je součástí výchozího úložiště Ubuntu. Tým Prosody také spravuje úložiště balíčků. Pokud chcete získat nejnovější verzi, musíte přidat úložiště Prosody pomocí následujícího příkazu.

echo 'deb https://packages.prosody.im/debian focal main' | sudo tee /etc/apt/sources.list.d/prosody.list

Poté spusťte následující příkaz pro stažení a import veřejného klíče Prosody, který umožňuje správci balíčků APT ověřit integritu balíčků stažených z tohoto úložiště.

wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -

Dále aktualizujte místní index balíčků a nainstalujte nejnovější verzi Prosody.

sudo apt update

sudo apt install prosody

Po instalaci se Prosody automaticky spustí. Jeho stav můžete zkontrolovat pomocí:

systemctl status prosody

Výstup:

● prosody.service - Prosody XMPP Server
   Loaded: loaded (/lib/systemd/system/prosody.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-19 13:58:40 UTC; 16s ago
     Docs: https://prosody.im/doc
 Main PID: 1894 (lua5.2)
    Tasks: 1 (limit: 1108)
   CGroup: /system.slice/prosody.service
           └─1894 lua5.2 /usr/bin/prosody -F

Apr 19 13:58:40 localhost systemd[1]: Started Prosody XMPP Server.

Pokud neběží, můžete jej spustit pomocí

sudo systemctl start prosody

Chcete-li povolit automatické spouštění při spouštění systému, spusťte

sudo systemctl enable prosody

Krok 2:Otevření portů v bráně firewall

Ve výchozím nastavení naslouchá na portu TCP 5269 a 5222 veřejné IP adresy, jak je vidět na následujícím příkazu. (Pokud vaše Ubuntu nemá příkaz netstat, můžete jej nainstalovat pomocí sudo apt install net-tools .)

sudo netstat -lnptu | grep lua

  • Port 5222 se používá pro připojení klienta k serveru.
  • Port 5269 se používá pro připojení server-server.

Pokud jste na Ubuntu povolili bránu firewall UFW, musíte otevřít výše uvedené porty pomocí následujícího příkazu.

sudo ufw allow 5222,5269/tcp

Krok 3:Konfigurace serveru Prosody XMPP

Upravte hlavní konfigurační soubor pomocí textového editoru příkazového řádku, jako je Nano.

sudo nano /etc/prosody/prosody.cfg.lua

V module_enabled {...} sekce, můžete odkomentovat řádek, abyste povolili konkrétní modul, nebo zakomentovat řádek, abyste zakázali konkrétní modul. Každý modul má popis, který říká, co dělá. Pravděpodobně budete chtít aktivovat modul BOSH, což znamená B idirectional-streams O ver S synchronní H TTP. Umožňuje komunikaci XMPP přes HTTP.

Dále přejděte dolů v konfiguračním souboru. Pokud chcete povolit registraci účtu z klienta XMPP, nastavte allow_registration na pravdu. Než to uděláte, musíte vědět, jak zabránit zneužití. Pokud jste v XMPP noví, pravděpodobně nechcete klientům XMPP umožnit, aby si sami registrovali účty.

allow_registration = true;

Prosody umožňuje pouze šifrovanou komunikaci, což je označeno následujícími dvěma řádky.

c2s_require_encryption = true

s2s_require_encryption = true

Musíme však vytvořit virtuálního hostitele a nainstalovat certifikát TLS, aby bylo možné připojení šifrovat. Ve výchozím nastavení je v Prosody pouze jeden virtuální hostitel:localhost, jak ukazuje následující řádek.

VirtualHost "localhost"

Nyní vytvoříme dalšího virtuálního hostitele jako chat.example.com . Přidejte do tohoto souboru následující řádek.

VirtualHost "chat.example.com"

Uložte a zavřete soubor. Poté musíme získat a nainstalovat důvěryhodný certifikát TLS z Let’s Encrypt.

Krok 4:Získejte důvěryhodný certifikát TLS od společnosti Let’s Encrypt

Chcete-li nainstalovat klienta Let’s Encrypt (certbot) na server Ubuntu, zadejte následující příkaz.

sudo apt install certbot

Pokud ještě nemáte spuštěný webový server, doporučuji si jej nainstalovat (Apache nebo Nginx), protože je snazší získat a nainstalovat certifikát TLS pomocí webového serveru než pomocí jiných metod.

Pokud používáte webový server Apache, musíte nainstalovat plugin Apache. (Následující příkaz nainstaluje webový server Apache, pokud ještě není nainstalován ve vašem systému.)

sudo apt install python3-certbot-apache

Pokud používáte webový server Nginx, nainstalujte si plugin Nginx. (Následující příkaz nainstaluje webový server Nginx, pokud ještě není nainstalován ve vašem systému.)

sudo apt install python3-certbot-nginx

Získání certifikátu TLS pomocí webového serveru Apache

Musíte mít virtuálního hostitele Apache pro chat.example.com před získáním certifikátu Let’s Encrypt TLS. Vytvořte soubor virtuálního hostitele:

sudo nano /etc/apache2/sites-available/prosody.conf

Poté do souboru vložte následující text. Nahraďte chat.example.com s vaším skutečným názvem domény. Nezapomeňte pro něj nastavit záznam DNS A.

<VirtualHost *:80>        
        ServerName chat.example.com

        DocumentRoot /var/www/prosody
</VirtualHost>

Uložte a zavřete soubor. Poté vytvořte adresář webroot.

sudo mkdir /var/www/prosody

Nastavte www-data (uživatel Apache) jako vlastník webrootu.

sudo chown www-data:www-data /var/www/prosody -R

Povolit tohoto virtuálního hostitele.

sudo a2ensite prosody.conf

Znovu načtěte Apache, aby se změny projevily.

sudo systemctl reload apache2

Jakmile je virtuální hostitel vytvořen a povolen, spusťte následující příkaz pro získání a instalaci certifikátu Let’s Encrypt TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d chat.example.com

Nahraďte červený text svými skutečnými údaji. Měli byste vidět následující, což znamená, že certifikát byl úspěšně získán. Můžete také vidět adresář, ve kterém je uložen váš certifikát.

Získání certifikátu TLS pomocí webového serveru Nginx

Musíte mít virtuálního hostitele Nginx pro chat.example.com před získáním certifikátu Let’s Encrypt TLS. Vytvořte soubor virtuálního hostitele:

sudo nano /etc/nginx/conf.d/prosody.conf

Dále do souboru vložte následující text. Nahraďte chat.example.com s vaším skutečným názvem domény. Nezapomeňte pro něj nastavit záznam DNS A.

server {
      listen 80;
      listen [::]:80;
      server_name chat.example.com;

      root /var/www/prosody/;

      location ~ /.well-known/acme-challenge {
         allow all;
      }
}

Uložte a zavřete soubor. Poté vytvořte kořenový webový adresář.

sudo mkdir /var/www/prosody/

Nastavte www-data (uživatel Nginx) jako vlastník webového kořenového adresáře.

sudo chown www-data:www-data /var/www/prosody -R

Znovu načtěte Nginx, aby se změny projevily.

sudo systemctl reload nginx

Jakmile je virtuální hostitel vytvořen a povolen, spusťte následující příkaz pro získání a instalaci certifikátu Let’s Encrypt s pluginem Nginx.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d chat.example.com

Měli byste vidět následující, což znamená, že certifikát byl úspěšně získán. Můžete také vidět adresář, ve kterém je uložen váš certifikát.

Krok 5:Instalace certifikátu TLS do Prosody

Upravte hlavní konfigurační soubor.

sudo nano /etc/prosody/prosody.cfg.lua

Přejděte na svého virtuálního hostitele Prosody a přidejte certifikát TLS a soubor klíče.

ssl = {
      key = "/etc/letsencrypt/live/chat.example.com/privkey.pem";
     certificate = "/etc/letsencrypt/live/chat.example.com/fullchain.pem";
}

Takhle:

Uložte a zavřete soubor. Protože server Prosody XMPP běží jako prosody musíme uživateli prozódie umožnit číst certifikát TLS a soubor klíče pomocí následujících příkazů.

sudo apt install acl
sudo setfacl -R -m u:prosody:rx /etc/letsencrypt/

Krok 6:Vytvoření uživatelských účtů

Uživatelský účet pro server Prosody XMPP lze vytvořit pomocí následujícího příkazu. Budete vyzváni k zadání hesla.

sudo prosodyctl adduser [email protected]

Chcete-li změnit heslo, spusťte

sudo prosodyctl passwd [email protected]

Krok 7:Restartujte Prosody

Zkontrolujte syntaxi konfiguračního souboru spuštěním:

sudo prosodyctl check config

Pokud je syntaxe správná, restartujte Prosody, aby se změny projevily.

sudo systemctl restart prosody

Krok 8:Konfigurace klienta XMPP

Tento kurz používá Pidgin instant messenger jako XMPP klienta. Empatie je další klient, kterého můžete použít. Lze je nainstalovat na plochu Ubuntu spuštěním:

sudo apt install pidgin

sudo apt install empathy

Při prvním spuštění budete muset přidat účet v Pidginu. Klikněte na Přidat tlačítko.

Poté vyberte XMPP ze seznamu protokolů a zadejte své uživatelské jméno, doménu a heslo.

Klikněte na Přidat a budete přihlášeni.

Nastavit BOSH

Jak jsme již dříve vysvětlili, BOSH vám umožňuje používat XMPP přes HTTP, tedy ve webovém prohlížeči. Například software pro videokonference Jitsi Meet využívá BOSH k integraci Prosody do webových stránek, takže účastníci mohou textový chat během připojení k online videokonferenci.

Pokud jste povolili modul BOSH, upravte konfigurační soubor Prosody (/etc/prosody/prosody.cfg.lua ) a přidejte následující dva řádky na konec konfiguračního souboru.

consider_bosh_secure = true;
cross_domain_bosh = true;
https_ssl = {
        certificate = "/etc/letsencrypt/live/chat.example.com/fullchain.pem";
        key = "/etc/letsencrypt/live/chat.example.com/privkey.pem";
    }

Kde:

  • První řádek vynucuje zabezpečené připojení HTTPS.
  • Druhý řádek přidává do odpovědí BOSH hlavičky COR, aby mohly požadavky přicházet z libovolné domény.
  • Parmater https_ssl určuje certifikát TLS a soubor klíčů pro službu BOSH.

Uložte a zavřete soubor. Poté restartujte Prosody.

sudo systemctl restart prosody

Pokud jste povolili bránu firewall UFW na serveru Ubuntu, musíte otevřít port 5280 a 5281 pomocí následujícího příkazu.

sudo ufw allow 5280,5281/tcp

Po dokončení tohoto kurzu bude koncový bod BOSH dostupný na následující adrese. port 5280 je pro prostý text HTTP, port 5281 pro HTTPS.

http://chat.example.com:5280/http-bind

nebo

https://chat.example.com:5281/http-bind.

Koncový bod BOSH je adresa URL, kterou klient používá k připojení k serveru XMPP přes HTTP.

Místnost chatu pro více uživatelů

Chcete-li povolit MUC (Multi-User Chat), přidejte následující řádek do konfiguračního souboru Prosody. Nahraďte conference.example.com s preferovanou subdoménou.

Component "conference.example.com" "muc"
     restrict_room_creation = "admin"

Druhý řádek umožní vytvářet místnosti pouze správci. Chcete-li definovat správce pro server XMPP, musíte nejprve vytvořit účet pomocí sudo prosodyctl adduser příkaz, jak je uvedeno výše. Poté v konfiguračním souboru přidejte účet do admin {...} sekce jako níže.

admins = { "[email protected]", "[email protected]" }

Zkontrolujte syntaxi konfiguračního souboru spuštěním:

sudo prosodyctl check config

Pokud je syntaxe správná, restartujte Prosody, aby se změny projevily.

sudo systemctl restart prosody

Odstraňování problémů

Hlavní soubor protokolu pro Prosody je /var/log/prosody/prosody.log . Je zde také protokol chyb /var/log/prosody/prosody.err . Pokud Prosody nefunguje tak, jak jste očekávali, je dobrým místem ke kontrole protokol chyb.

Automaticky obnovit certifikát TLS

Chcete-li automaticky obnovit certifikát TLS, můžete vytvořit úlohu Cron. Otevřete soubor crontab uživatele root.

sudo crontab -e

Pokud používáte webový server Apache, přidejte na konec souboru následující řádek.

@daily certbot renew --quiet && systemctl reload postfix dovecot apache2

Pokud používáte webový server Nginx, přidejte následující řádek.

@daily certbot renew --quiet && systemctl reload postfix dovecot nginx

Opětovné načtení Postfixu, Dovecotu a webového serveru je nezbytné, aby tyto programy vyzvedly nový certifikát a soukromý klíč.


Ubuntu
  1. Jak nastavit a nainstalovat Squid Proxy Server na Ubuntu 18.04

  2. Jak nainstalovat Redis na Ubuntu 20.04 / 18.04

  3. Jak nainstalovat Zimbru 8.6 na server Ubuntu 14.04

  1. Jak nainstalovat MySQL na Ubuntu 18.04

  2. Jak nastavit server OpenVPN na Ubuntu 18.04

  3. Jak nainstalovat Minecraft Server na Ubuntu 18.04

  1. Jak nainstalovat Nginx na Ubuntu 20.04

  2. Jak nainstalovat MariaDB na Ubuntu 20.04

  3. Jak nainstalovat VNC Server na Ubuntu 14.04