WeeBeeTalk
Solusi telekomunikasi hybrid yang berfokus pada privasi, dirancang untuk konferensi enterprise dengan mengintegrasikan stack teknologi open-source seperti Rocket.Chat, Jitsi, dan Asterisk.
1. Pendahuluan
WeeBeeTalk merupakan arsitektur telekomunikasi hybrid berorientasi privasi yang dirancang khusus untuk memenuhi kebutuhan konferensi enterprise melalui integrasi tumpukan teknologi sumber terbuka. Solusi ini dikembangkan oleh Risnanda Pascal & Gineng B. Pamungkas sebagai respons terhadap tantangan kontemporer dalam komunikasi bisnis modern, terutama menyangkut kerahasiaan data, interoperabilitas sistem, dan kontrol infrastruktur mandiri.
Dalam konteks lingkungan korporat yang semakin terdigitalisasi, kebutuhan akan platform konferensi yang mampu menjamin keamanan end-to-end tanpa mengorbankan fungsionalitas menjadi krusial. Arsitektur hybrid WeeBeeTalk memadukan teknologi berbasis IP (Rocket.Chat), komunikasi real-time berbasis WebRTC (Jitsi), dan teleponi tradisional (Asterisk) dalam satu ekosistem terintegrasi. Pendekatan ini memungkinkan organisasi untuk:
- Mempertahankan kedaulatan data melalui implementasi on-premise
- Mengurangi ketergantungan pada penyedia layanan cloud pihak ketiga
- Menerapkan kebijakan enkripsi dan otentikasi yang konsisten
- Menjaga interoperabilitas dengan infrastruktur telekomunikasi yang sudah ada
Inti arsitektur ini terletak pada integrasi strategis tiga komponen utama:
- Rocket.Chat sebagai platform kolaborasi berbasis pesan instan
- Jitsi Meet sebagai engine konferensi video WebRTC
- Asterisk sebagai gateway teleponi berbasis IP-PBX
Implementasi WeeBeeTalk mengadopsi paradigma “privacy by design” dengan menerapkan enkripsi end-to-end pada semua lapisan komunikasi (data-at-rest dan data-in-transit), Role-Based Access Control (RBAC), serta mekanisme autentikasi multi-faktor.
2. Lingkungan Sistem dan Prasyarat
WeeBeeTalk diimplementasikan pada lingkungan sistem operasi Debian GNU/Linux (versi stabil terkini) sebagai platform dasar, dipilih karena stabilitas jangka panjang (LTS), ekosistem paket yang komprehensif, dan kompatibilitas optimal dengan tumpukan teknologi open-source yang digunakan. Implementasi ini mengasumsikan lingkungan server Debian minimal dengan konfigurasi berikut:
2.1. Spesifikasi Sistem Minimum
- Sistem Operasi: Debian 12 (Bookworm) x86_64
- CPU: 4 core (arsitektur x64)
- RAM: 8 GB
- Storage: 50 GB (SSD direkomendasikan)
- Jaringan: Alamat IP publik statis/DNS yang terkonfigurasi
2.2. Prasyarat Khusus Debian
1
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
1
sudo apt install -y apt-transport-https ca-certificates gnupg2 curl software-properties-common
3. Konfigurasi Rocket.Chat via Docker
3.1 Mengambil Konfigurasi Docker Compose Rocket.Chat
Konfigurasi yang diperlukan untuk penerapan Rocket.Chat melalui Docker tersedia dalam repositori resmi rocketchat-compose
.
- Kloning repositori resmi
rocketchat-compose
menggunakan Git dengan perintah berikut:1
git clone --depth 1 https://github.com/RocketChat/rocketchat-compose.git
Opsi
--depth 1
digunakan untuk hanya mengunduh riwayat commit terakhir, sehingga proses lebih cepat. - Masuk ke direktori yang telah dikloning:
1
cd rocketchat-compose
Direktori ini berisi berkas
compose.yml
,.env.example
, serta berkas konfigurasi lain yang diperlukan untuk menyiapkan instansi Rocket.Chat. - Salin berkas
.env.example
untuk membuat berkas.env
:1
cp .env.example .env
Berkas
.env
ini digunakan untuk mendefinisikan konfigurasi penerapan, seperti versi Rocket.Chat, URL workspace, dan konfigurasi HTTPS opsional, tanpa perlu menyunting langsung berkascompose.yml
.
3.2 Mengonfigurasi Rocket.Chat
Sebelum meluncurkan workspace Rocket.Chat, beberapa variabel kunci harus dikonfigurasi dalam berkas .env
.
- Buka berkas
.env
dengan editor teks pilihan Anda, misalnya:1
nano .env
- Atur variabel
RELEASE
ke versi Rocket.Chat yang diinginkan. Untuk lingkungan produksi, sangat disarankan untuk tidak menggunakanlatest
dan menentukan versi tertentu (contoh:7.10.0
) untuk memastikan stabilitas.1
RELEASE=7.10.0
Versi tersedia dapat dilihat di Rilis Rocket.Chat.
3.3 Menjalankan Rocket.Chat
Setelah berkas .env
dikonfigurasi dan disimpan, siap untuk memulai workspace Rocket.Chat.
- Jalankan perintah berikut untuk mengunduh image Docker yang diperlukan dan memulai kontainer Rocket.Chat beserta layanan pendukungnya:
1
docker compose -f compose.database.yml -f compose.monitoring.yml -f compose.traefik.yml -f compose.yml up -d
- Periksa status semua kontainer yang berjalan dengan perintah:
1
docker ps
3.4 Penyesuaian Penerapan
Penerapan dapat disesuaikan dengan hanya menyertakan layanan yang diperlukan. Sebagai contoh, jika pemantauan atau reverse proxy Traefik tidak digunakan, berkas .yml
terkait dapat dihilangkan dari perintah.
Contoh perintah tanpa pemantauan dan Traefik:
1
docker compose -f compose.database.yml -f compose.yml up -d
3.4 Mengakses Workspace Rocket.Chat
Setelah instance Rocket.Chat diterapkan, dapat diakses melalui browser.
- Untuk pengujian lokal: Buka
http://localhost:3000
. - Untuk lingkungan produksi: Akses
ROOT_URL
yang telah dikonfigurasi di berkas.env
(contoh:https://nama-domain.com
).
4. Integrasi dengan WebRTC (Jitsi)
4.1 Paket yang Diperlukan dan Pembaruan Repositori
Untuk menyiapkan lingkungan yang diperlukan, paket-paket berikut harus diinstal:
Paket:
gnupg2
: Implementasi lengkap dan gratis dari standar OpenPGP.nginx-full
: Server web berkinerja tinggi dan server proxy terbalik.sudo
: Diperlukan hanya jika berniat menggunakan sudo untuk tugas administratif.curl
: Alat baris perintah untuk mentransfer data dengan URL. Sebagai alternatif, wget dapat digunakan untuk menambahkan repositori paket Jitsi.
Pastikan sistem diperbarui dan paket-paket yang diperlukan telah diinstal. Jalankan sebagai root
atau dengan sudo
:
1
sudo apt update && sudo apt install -y apt-transport-https gnupg2 nginx-full curl
Sangat penting untuk menggunakan OpenJDK 11 demi kompatibilitas dan kinerja yang optimal.
4.2 Instalasi Jitsi Meet
4.2.1 Menginstal Kunci Repositori Jitsi
Kunci repositori Jitsi dapat diinstal ke dalam sistem dengan menjalankan perintah berikut:
1
curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
4.2.2 Membuat File sources.list.d
dengan Repositori
File sources.list.d
untuk repositori Jitsi dapat dibuat menggunakan perintah berikut:
1
echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null
4.2.3 Memperbarui Daftar Paket
Daftar paket dapat diperbarui dengan menjalankan perintah berikut:
1
sudo apt update
4.2.4 Menyiapkan dan Mengonfigurasi Firewall
Port-port berikut perlu dibuka di firewall untuk memungkinkan lalu lintas ke server Jitsi Meet:
80 TCP
: Untuk verifikasi/pembaruan sertifikat SSL dengan Let’s Encrypt. Diperlukan.443 TCP
: Untuk akses umum ke Jitsi Meet. Diperlukan.10000 UDP
: Untuk pertemuan audio/video jaringan umum. Diperlukan.22 TCP
: Untuk mengakses server menggunakan SSH (port dapat diubah sesuai kebutuhan jika bukan 22). Diperlukan.3478 UDP
: Untuk menanyakan server STUN (coturn, opsional, perlu perubahan diconfig.js
untuk mengaktifkannya).5349 TCP
: Untuk komunikasi video/audio jaringan cadangan melalui TCP (misalnya, ketika UDP diblokir), dilayani oleh coturn. Diperlukan.
Jika menggunakan ufw
, buka port dengan perintah berikut:
1
2
3
4
5
6
7
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw allow 22/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw enable
Status firewall dapat diperiksa dengan menjalankan perintah berikut:
1
sudo ufw status verbose
4.2.5 Sertifikat TLS
Untuk memastikan komunikasi yang terenkripsi, diperlukan sertifikat TLS.
Selama instalasi Jitsi Meet, terdapat beberapa opsi yang dapat dipilih:
- Opsi yang direkomendasikan adalah memilih sertifikat dari Let’s Encrypt.
- Jika ingin menggunakan sertifikat yang berbeda, sertifikat tersebut harus diperoleh terlebih dahulu, kemudian Jitsi Meet dapat diinstal dengan memilih opsi “Saya ingin menggunakan sertifikat saya sendiri.”
- Penggunaan sertifikat yang ditandatangani sendiri juga dimungkinkan dengan memilih opsi “Generate a new self-signed certificate,” tetapi ini tidak disarankan karena beberapa alasan:
- Penggunaan sertifikat yang ditandatangani sendiri akan mengakibatkan peringatan di browser pengguna, karena identitas server tidak dapat diverifikasi.
- Aplikasi seluler Jitsi Meet memerlukan sertifikat yang valid dan ditandatangani oleh Certificate Authority yang tepercaya. Jika menggunakan sertifikat yang ditandatangani sendiri, aplikasi tidak akan dapat terhubung ke server.
4.2.6 Menginstal Paket Jitsi
Seluruh suite Jitsi dapat diinstal dengan menjalankan perintah berikut:
1
sudo apt install -y jitsi-meet
Generasi Sertifikat SSL/TLS: Selama instalasi, akan diminta untuk melakukan generasi sertifikat SSL/TLS. Untuk detail lebih lanjut, lihat bagian di atas.
Hostname: Selanjutnya, akan diminta untuk memasukkan nama host dari instance Jitsi Meet. Jika memiliki domain, gunakan nama domain spesifik, misalnya: meet.example.org
. Sebagai alternatif, alamat IP mesin dapat dimasukkan (jika statis atau tidak berubah).
Nama host ini akan digunakan untuk konfigurasi virtual host di dalam Jitsi Meet dan juga akan digunakan oleh pengguna untuk mengakses konferensi web.
Untuk menginstal paket tertentu dari Jitsi, gunakan perintah berikut:
1 2 3 sudo apt -y install jitsi-videobridge sudo apt -y install jicofo sudo apt -y install jigasi
4.2.7 Kontrol Akses
Server Jitsi Meet: Secara default, siapa pun yang memiliki akses ke server Jitsi Meet dapat memulai konferensi. Jika server terbuka untuk umum, siapa pun dapat melakukan obrolan dengan orang lain.
Konferensi/Ruang: Kontrol akses untuk konferensi atau ruang dikelola di dalam ruang tersebut. Kata sandi dapat diatur di halaman web ruang tertentu setelah dibuat.
Konfigurasi Lanjutan: Jika instalasi dilakukan pada mesin di belakang NAT, jitsi-videobridge seharusnya mengonfigurasi dirinya secara otomatis saat boot. Jika panggilan tiga arah tidak berfungsi, konfigurasi lebih lanjut dari jitsi-videobridge diperlukan agar dapat diakses dari luar.
Pastikan semua port yang diperlukan telah diarahkan (forwarded) ke mesin tempat jitsi-videobridge berjalan. Secara default, port yang digunakan adalah TCP/443 dan UDP/10000.
Tambahkan pemetaan statis ke bagian ice4j.harvest.mapping
di /etc/jitsi/videobridge/jvb.conf
:
1
2
3
4
5
6
7
8
9
10
11
12
ice4j {
harvest {
mapping {
static-mappings = [
{
local-address = "<Local.IP.Address>"
public-address = "<Public.IP.Address>"
}
]
}
}
}
Systemd/Limits: Penerapan default akan memiliki nilai rendah untuk maksimum proses dan file terbuka. Untuk lebih dari 100 peserta, ubah /etc/systemd/system.conf
menjadi:
1
2
3
DefaultLimitNOFILE=65000
DefaultLimitNPROC=65000
DefaultTasksMax=65000
Detail Systemd
Untuk memuat perubahan systemd pada sistem yang sedang berjalan, eksekusi perintah berikut:
1
sudo systemctl daemon-reload
1
sudo systemctl restart jitsi-videobridge2
Untuk memeriksa bagian tugas, jalankan:
1
sudo systemctl status jitsi-videobridge2
Untuk memeriksa nilai-nilai tersebut, jalankan perintah berikut:
1
systemctl show --property DefaultLimitNPROC
1
systemctl show --property DefaultLimitNOFILE
1
systemctl show --property DefaultTasksMax
Seharusnya terlihat Tasks: XX (limit: 65000)
. Untuk memeriksa bagian file dan proses, jalankan:
1
cat /proc/`cat /var/run/jitsi-videobridge/jitsi-videobridge.pid`/limits
Seharusnya terlihat:
1
2
Max processes 65000 65000 processes
Max open files 65000 65000 files
4.2.8 Konfirmasi bahwa Instalasi Berfungsi
Luncurkan peramban web (seperti Firefox, Chrome, atau Safari) dan masukkan nama host atau alamat IP dari langkah sebelumnya ke dalam bilah alamat.
Jika menggunakan sertifikat yang ditandatangani sendiri (berbeda dengan menggunakan Let’s Encrypt), peramban web akan meminta konfirmasi untuk mempercayai sertifikat tersebut. Jika menguji dari aplikasi iOS atau Android, kemungkinan besar akan gagal pada titik ini jika menggunakan sertifikat yang ditandatangani sendiri.
Setelah mengakses, seharusnya terlihat halaman web yang meminta untuk membuat pertemuan baru. Pastikan dapat berhasil membuat pertemuan dan bahwa peserta lain dapat bergabung dalam sesi tersebut.
Jika semua langkah ini berhasil, maka layanan konferensi Jitsi telah beroperasi dengan baik.
4.3 Instalasi Jitsi Meet via Docker (Rekomendasi)
4.3.1 Unduh dan Ekstrak Paket Rilis
Unduh rilis stabil terbaru dari repositori resmi menggunakan perintah berikut:
1
wget $(wget -q -O - https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest | grep zip | cut -d\" -f4)
Ekstrak berkas yang telah diunduh:
1
unzip <filename>
4.3.2 Konfigurasi Variabel Lingkungan
Salin template variabel lingkungan dan buat berkas konfigurasi:
1
cp env.example .env
Hasilkan kata sandi kuat untuk komponen layanan dengan menjalankan skrip:
1
./gen-passwords.sh
Skrip ini akan secara otomatis menghasilkan dan mengisi nilai-nilai kriptografi yang aman dalam berkas .env
.
4.3.3 Persiapan Direktori Konfigurasi
Buat struktur direktori yang diperlukan untuk penyimpanan konfigurasi dan data persisten:
1
mkdir -p ~/.jitsi-meet-cfg/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}
4.3.4 Penyesuaian Konfigurasi (Opsional)
Sesuaikan pengaturan sesuai kebutuhan dengan mengedit berkas .env
. Beberapa parameter penting yang dapat disesuaikan:
HTTP_PORT
: Port untuk akses HTTP (default: 8000)HTTPS_PORT
: Port untuk akses HTTPS (default: 8443)TZ
: Zona waktu server (default: UTC)PUBLIC_URL
: URL publik untuk akses eksternal (wajib untuk produksi)
4.3.5 Menjalankan Layanan
Jalankan seluruh stack layanan dalam mode latar belakang:
1
docker compose up -d
Proses ini akan mengunduh image Docker yang diperlukan dan menginisiasi kontainer untuk semua komponen Jitsi Meet.
4.3.6 Verifikasi Instalasi
Akses antarmuka web melalui:
- HTTPS:
https://localhost:8443
(atau port yang dikonfigurasi) - HTTP:
http://localhost:8000
(untuk keperluan reverse proxy)
4.3.7 Konfigurasi Produksi
Untuk penggunaan dalam lingkungan produksi, beberapa penyesuaian kritikal diperlukan:
1. Mengatur URL Publik
Edit berkas .env
dan tentukan variabel PUBLIC_URL
dengan domain publik yang valid:
1
PUBLIC_URL=https://meet.domain-anda.example
2. Konfigurasi Sertifikat SSL
Gunakan sertifikat SSL yang valid dari otoritas sertifikat terpercaya. Sertifikat dapat dikonfigurasi melalui:
- Reverse proxy (Nginx/Apache)
- Integrasi dengan Let’s Encrypt menggunakan komponen
web
3. Pengaturan Keamanan
Implementasikan praktik keamanan tambahan:
- Aktifkan autentikasi pengguna
- Konfigurasi firewall dan aturan akses jaringan
- Lakukan hardening pada konfigurasi servis
4.3.8 Pemecahan Masalah
Masalah Umum dan Solusi
- Kesalahan Akses Media:
- Pastikan mengakses melalui HTTPS bukan HTTP
- Verifikasi izin perangkat di browser
- Konflik Port:
- Periksa port yang sudah digunakan dengan
netstat -tulpn
- Sesuaikan pengaturan port dalam berkas
.env
- Periksa port yang sudah digunakan dengan
- Masalah Penyimpanan:
- Verifikasi hak akses pada direktori
~/.jitsi-meet-cfg/
- Pastikan ruang disk mencukupi
- Verifikasi hak akses pada direktori
4.3.9 Penghentian dan Penghapusan
Untuk menghentikan dan menghapus instansasi:
1
docker compose down
Data konfigurasi akan tetap tersimpan dalam direktori ~/.jitsi-meet-cfg/
untuk penggunaan kembali.
5. Integrasi dengan Asterisk
Lihat dokumentasi tentang Membangun VoIP Server menggunakan Asterisk.