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.