GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengatur Server XMPP Prosody di Ubuntu 18.04

Prosody adalah server XMPP open-source gratis yang ditulis dalam Lua. Ini cepat dan ringan. XMPP adalah protokol yang bagus untuk pesan instan. Tutorial ini akan menunjukkan cara menginstal dan mengkonfigurasi server Prosody XMPP di Ubuntu 18.04. Setelah Anda menyelesaikan tutorial ini, Anda akan memiliki server obrolan Anda sendiri.

Langkah 1:Instal Prosody di Ubuntu 18.04

Prosody disertakan dalam repositori default Ubuntu, tetapi sudah sangat ketinggalan zaman. Tim Prosody mengelola repositori paket. Jika Anda ingin mendapatkan versi terbaru, maka Anda perlu menambahkan repositori Prosody dengan perintah berikut.

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

Kemudian jalankan perintah berikut untuk mengunduh dan mengimpor kunci publik Prosody, yang memungkinkan manajer paket APT memverifikasi integritas paket yang diunduh dari repositori ini.

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

Selanjutnya, perbarui indeks paket lokal dan instal Prosody versi terbaru.

sudo apt update

sudo apt install prosody

Setelah diinstal, Prosody akan secara otomatis mulai. Anda dapat memeriksa statusnya dengan:

systemctl status prosody

Keluaran:

● 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.

Jika tidak berjalan, Anda dapat memulainya dengan

sudo systemctl start prosody

Untuk mengaktifkan mulai otomatis pada waktu boot sistem, jalankan

sudo systemctl enable prosody

Langkah 2:Membuka Port di Firewall

Secara default, ia mendengarkan pada port TCP 5269 dan 5222 dari alamat IP publik, seperti yang dapat dilihat dengan perintah berikut. (Jika Ubuntu Anda tidak memiliki perintah netstat, Anda dapat menginstalnya dengan sudo apt install net-tools .)

sudo netstat -lnptu | grep lua

  • Port 5222 digunakan untuk koneksi klien ke server.
  • Port 5269 digunakan untuk koneksi server ke server.

Jika Anda telah mengaktifkan firewall UFW di Ubuntu, maka Anda perlu membuka port di atas dengan perintah berikut.

sudo ufw allow 5222,5269/tcp

Langkah 3:Konfigurasi Prosody XMPP Server

Edit file konfigurasi utama dengan editor teks baris perintah seperti Nano.

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

Di module_enabled {...} bagian, Anda dapat menghapus komentar pada baris untuk mengaktifkan modul tertentu, atau mengomentari baris untuk menonaktifkan modul tertentu. Setiap modul memiliki deskripsi yang memberi tahu Anda fungsinya. Anda mungkin ingin mengaktifkan modul BOSH, yang merupakan singkatan dari B arus searah O di atas S sinkron H TTP. Ini memungkinkan komunikasi XMPP melalui HTTP.

Selanjutnya, gulir ke bawah di file konfigurasi. Jika Anda ingin mengizinkan pendaftaran akun dari klien XMPP, setel allow_registration untuk benar. Perhatikan bahwa Anda harus tahu bagaimana mencegah penyalahgunaan sebelum melakukan ini. Jika Anda baru mengenal XMPP, Anda mungkin tidak ingin klien XMPP mendaftarkan akun sendiri.

allow_registration = true;

Prosody hanya mengizinkan komunikasi terenkripsi, yang ditunjukkan oleh dua baris berikut.

c2s_require_encryption = true

s2s_require_encryption = true

Namun, kita perlu membuat virtual host dan menginstal sertifikat TLS, sehingga koneksi dapat dienkripsi. Secara default, hanya ada satu virtual host di Prosody:localhost, seperti yang ditunjukkan oleh baris berikut.

VirtualHost "localhost"

Sekarang kita membuat virtual host lain seperti chat.example.com . Tambahkan baris berikut dalam file ini.

VirtualHost "chat.example.com"

Simpan dan tutup file. Maka kita perlu mendapatkan dan menginstal sertifikat TLS tepercaya dari Let's Encrypt.

Langkah 4:Dapatkan sertifikat TLS Tepercaya dari Let's Encrypt

Keluarkan perintah berikut untuk menginstal klien Let's Encrypt (certbot) di server Ubuntu dari PPA resmi.

sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt install certbot

Jika Anda belum menjalankan server web, saya sarankan Anda menginstalnya (Apache atau Nginx), karena lebih mudah untuk mendapatkan dan menginstal sertifikat TLS dengan server web daripada menggunakan metode lain.

Jika Anda menggunakan server web Apache, Anda perlu menginstal plugin Apache. (Perintah berikut akan menginstal server web Apache jika belum diinstal pada sistem Anda.)

sudo apt install python3-certbot-apache

Jika Anda menggunakan server web Nginx, maka instal plugin Nginx. (Perintah berikut akan menginstal server web Nginx jika belum diinstal di sistem Anda.)

sudo apt install python3-certbot-nginx

Mendapatkan Sertifikat TLS dengan Apache Web Server

Anda harus memiliki host virtual Apache untuk chat.example.com sebelum mendapatkan sertifikat Let's Encrypt TLS. Buat file host virtual:

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

Kemudian rekatkan teks berikut ke dalam file. Ganti chat.example.com dengan nama domain asli Anda. Jangan lupa untuk mengatur catatan DNS A untuk itu.

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

        DocumentRoot /var/www/prosody
</VirtualHost>

Simpan dan tutup file. Kemudian buat direktori webroot.

sudo mkdir /var/www/prosody

Setel www-data (Pengguna Apache) sebagai pemilik webroot.

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

Aktifkan host virtual ini.

sudo a2ensite prosody.conf

Muat ulang Apache agar perubahan diterapkan.

sudo systemctl reload apache2

Setelah virtual host dibuat dan diaktifkan, jalankan perintah berikut untuk mendapatkan dan menginstal sertifikat Let's Encrypt TLS.

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

Ganti teks merah dengan data Anda yang sebenarnya. Anda akan melihat berikut ini yang berarti sertifikat berhasil diperoleh. Anda juga dapat melihat direktori tempat sertifikat Anda disimpan.

Mendapatkan Sertifikat TLS dengan Server Web Nginx

Anda harus memiliki virtual host Nginx untuk chat.example.com sebelum mendapatkan sertifikat Let's Encrypt TLS. Buat file host virtual:

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

Selanjutnya, rekatkan teks berikut ke dalam file. Ganti chat.example.com dengan nama domain asli Anda. Jangan lupa untuk mengatur catatan DNS A untuk itu.

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

      root /var/www/prosody/;

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

Simpan dan tutup file. Kemudian buat direktori root web.

sudo mkdir /var/www/prosody/

Setel www-data (Pengguna Nginx) sebagai pemilik root web.

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

Muat ulang Nginx agar perubahan diterapkan.

sudo systemctl reload nginx

Setelah virtual host dibuat dan diaktifkan, jalankan perintah berikut untuk mendapatkan dan menginstal sertifikat Let's Encrypt dengan plugin Nginx.

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

Anda akan melihat berikut ini yang berarti sertifikat berhasil diperoleh. Anda juga dapat melihat direktori tempat sertifikat Anda disimpan.

Langkah 5:Instal Sertifikat TLS di Prosody

Edit file konfigurasi utama.

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

Buka host virtual Prosody Anda dan tambahkan sertifikat TLS dan file kunci.

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

Seperti ini:

Simpan dan tutup file. Karena server Prosody XMPP berjalan sebagai prosody pengguna, kita perlu mengizinkan pengguna prosodi untuk membaca sertifikat TLS dan file kunci dengan perintah berikut.

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

Langkah 6:Buat Akun Pengguna

Akun pengguna untuk server Prosody XMPP dapat dibuat menggunakan perintah berikut. Anda akan diminta untuk memasukkan kata sandi.

sudo prosodyctl adduser [email protected]

Untuk mengubah sandi, jalankan

sudo prosodyctl passwd [email protected]

Langkah 7:Mulai Ulang Prosodi

Periksa sintaks file konfigurasi dengan menjalankan:

sudo prosodyctl check config

Jika sintaks sudah benar, mulai ulang Prosody agar perubahan diterapkan.

sudo systemctl restart prosody

Langkah 8:Konfigurasikan Klien XMPP

Tutorial ini menggunakan instant messenger Pidgin sebagai klien XMPP. Empati adalah klien lain yang dapat Anda gunakan. Mereka dapat diinstal pada desktop Ubuntu dengan menjalankan:

sudo apt install pidgin

sudo apt install empathy

Saat peluncuran pertama, Anda perlu menambahkan akun di Pidgin. Klik Tambah tombol.

Kemudian pilih XMPP dari daftar protokol dan masukkan nama pengguna, domain, dan kata sandi Anda.

Tekan tombol Tambah dan Anda akan masuk.

Siapkan BOSH

Seperti yang kami jelaskan sebelumnya, BOSH memungkinkan Anda untuk menggunakan XMPP melalui HTTP, yaitu di browser web. Misalnya, perangkat lunak konferensi video Jitsi Meet menggunakan BOSH untuk mengintegrasikan Prosody di halaman web, sehingga peserta dapat mengirim pesan teks saat bergabung ke rapat video online.

Jika Anda mengaktifkan modul BOSH, maka edit file konfigurasi Prosody (/etc/prosody/prosody.cfg.lua ) dan tambahkan dua baris berikut di akhir file konfigurasi.

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";
    }

Dimana:

  • Baris pertama memberlakukan koneksi HTTPS yang aman.
  • Baris kedua menambahkan header COR ke respons BOSH untuk mengizinkan permintaan datang dari domain mana pun.
  • Paramater https_ssl menentukan sertifikat TLS dan file kunci untuk layanan BOSH.

Simpan dan tutup file. Kemudian restart Prosody.

sudo systemctl restart prosody

Jika Anda telah mengaktifkan firewall UFW di server Ubuntu, maka Anda perlu membuka port 5280 dan 5281 dengan perintah berikut.

sudo ufw allow 5280,5281/tcp

Titik akhir BOSH akan tersedia di alamat berikut setelah Anda menyelesaikan tutorial ini. port 5280 adalah untuk HTTP teks biasa, port 5281 untuk HTTPS.

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

atau

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

Titik akhir BOSH adalah URL yang digunakan oleh klien untuk terhubung ke server XMPP melalui HTTP.

Ruang Obrolan Multi-Pengguna

Untuk mengaktifkan MUC (Multi-User Chat), tambahkan baris berikut di file konfigurasi Prosody. Ganti conference.example.com dengan subdomain pilihan Anda.

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

Baris kedua hanya mengizinkan admin untuk membuat ruangan. Untuk menentukan admin untuk server XMPP, pertama-tama Anda harus membuat akun menggunakan sudo prosodyctl adduser perintah seperti gambar di atas. Kemudian di file konfigurasi, tambahkan akun di admin {...} bagian seperti di bawah ini.

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

Periksa sintaks file konfigurasi dengan menjalankan:

sudo prosodyctl check config

Jika sintaks sudah benar, mulai ulang Prosody agar perubahan diterapkan.

sudo systemctl restart prosody

Pemecahan Masalah

File log utama untuk Prosody adalah /var/log/prosody/prosody.log . Ada juga log kesalahan /var/log/prosody/prosody.err . Jika Prosody tidak berfungsi seperti yang Anda harapkan, log kesalahan adalah tempat yang tepat untuk memeriksanya.

Perpanjang Otomatis Sertifikat TLS

Anda dapat membuat pekerjaan Cron untuk memperbarui sertifikat TLS secara otomatis. Buka file crontab pengguna root.

sudo crontab -e

Jika Anda menggunakan server web Apache, tambahkan baris berikut di bagian bawah file.

@daily certbot renew --quiet && systemctl reload prosody apache2

Jika Anda menggunakan server web Nginx, tambahkan baris berikut.

@daily certbot renew --quiet && systemctl reload prosody nginx

Memuat ulang Prosody dan server web diperlukan untuk membuat program ini mengambil sertifikat dan kunci pribadi baru.


Ubuntu
  1. Cara Mengatur &Menginstal Server Proxy Squid di Ubuntu 18.04

  2. Cara Menginstal Redis di Ubuntu 20.04 / 18.04

  3. Cara Instal Zimbra 8.6 di Server Ubuntu 14.04

  1. Cara Menginstal MySQL di Ubuntu 18.04

  2. Cara Mengatur Server OpenVPN di Ubuntu 18.04

  3. Cara Memasang Server Minecraft di Ubuntu 18.04

  1. Cara Menginstal Nginx di Ubuntu 20.04

  2. Cara Menginstal MariaDB di Ubuntu 20.04

  3. Cara Menginstal Server VNC Di Ubuntu 14.04