Element (sebelumnya dikenal sebagai Vector dan Riot) adalah klien web Matrix yang dibuat menggunakan Matrix JS SDK.
Elemen memiliki beberapa tingkatan dukungan untuk lingkungan yang berbeda:
Didukung
Masalah diprioritaskan secara aktif , regresi memblokir rilis
Definisi:
2 versi utama terakhir Chrome, Firefox, dan Edge di OS desktop
2 versi terakhir Safari
Rilis terbaru aplikasi Element Desktop resmi di OS desktop
OS Desktop berarti versi macOS, Windows, dan Linux untuk perangkat desktop yang didukung secara aktif oleh vendor OS dan menerima pembaruan keamanan
Upaya terbaik
Masalah diterima , regresi tidak memblokir rilis
Produk Elemen yang lebih luas (termasuk Element Call dan Enterprise Server Suite) masih belum mendukung browser ini secara resmi.
Proyek web elemen dan kontributornya harus menjaga klien tetap berfungsi dan menurunkan dengan baik jika fitur saudara lainnya (Misalnya Panggilan Elemen) mungkin tidak berfungsi.
Definisi:
Rilis besar terakhir dari Firefox ESR dan Chrome/Edge Extended Stable
Didukung Komunitas
Masalah diterima , regresi tidak memblokir rilis
Kontribusi masyarakat dipersilakan untuk mendukung masalah ini
Definisi:
Web seluler untuk Chrome, Firefox, dan Safari versi stabil saat ini di Android, iOS, dan iPadOS
Tidak didukung
Definisi: Masalah yang hanya memengaruhi lingkungan yang tidak didukung telah ditutup
Segala sesuatu yang lain
Periode dukungan untuk tingkatan ini akan berlangsung hingga rilis yang ditentukan di atas, ditambah 1 siklus rilis aplikasi (2 minggu). Dalam kasus Firefox ESR, ini diperluas lebih lanjut untuk memungkinkannya mendarat di Debian Stable.
Untuk mengakses Elemen di perangkat Android atau iOS, saat ini kami merekomendasikan aplikasi asli elemen-android dan elemen-ios.
Cara termudah untuk menguji Elemen adalah dengan menggunakan salinan yang dihosting di https://app.element.io. Cabang develop
terus dikerahkan ke https://develop.element.io bagi mereka yang suka hidup dalam bahaya.
Untuk menghosting instance Elemen Anda sendiri, lihat Menginstal Web Elemen.
Untuk menginstal Element sebagai aplikasi desktop, lihat Menjalankan sebagai aplikasi desktop di bawah.
Kami tidak menyarankan menjalankan Elemen dari nama domain yang sama dengan server rumah Matrix Anda. Alasannya adalah risiko kerentanan XSS (cross-site-scripting) yang dapat terjadi jika seseorang menyebabkan Elemen memuat dan merender konten berbahaya yang dibuat pengguna dari API Matrix yang kemudian memiliki akses tepercaya ke Elemen (atau aplikasi lain) karena berbagi domain yang sama.
Kami telah menerapkan beberapa mitigasi kasar untuk mencoba melindungi diri dari situasi ini, namun tetap saja bukan praktik yang baik untuk melakukan hal tersebut. Lihat #1977 untuk lebih jelasnya.
Kecuali Anda memiliki persyaratan khusus, Anda dapat menambahkan yang berikut ini ke konfigurasi server web Anda saat menghosting Element Web:
X-Frame-Options: SAMEORIGIN
, untuk mencegah Element Web dibingkai dan melindungi dari clickjacking.
Arahan frame-ancestors 'self'
ke header Content-Security-Policy
Anda, sebagai pengganti modern untuk X-Frame-Options
(meskipun keduanya harus disertakan karena belum semua browser mendukungnya, lihat ini).
X-Content-Type-Options: nosniff
, untuk menonaktifkan sniffing MIME.
X-XSS-Protection: 1; mode=block;
header, untuk perlindungan XSS dasar di browser lama.
Jika Anda menggunakan nginx, tampilannya akan seperti berikut:
add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "frame-ancestors 'self'";
Untuk Apache, konfigurasinya seperti ini:
Header set X-Frame-Options SAMEORIGIN Header set X-Content-Type-Options nosniff Header set X-XSS-Protection "1; mode=block" Header set Content-Security-Policy "frame-ancestors 'self'"
Catatan: Jika Anda sudah menyetel header Content-Security-Policy
di tempat lain, Anda harus memodifikasinya untuk menyertakan direktif frame-ancestors
alih-alih menambahkan baris terakhir.
Element adalah aplikasi web modular yang dibuat dengan ES6 modern dan menggunakan sistem build Node.js. Pastikan Anda menginstal Node.js versi LTS terbaru.
Disarankan menggunakan yarn
alih-alih npm
. Silakan lihat panduan pemasangan Benang jika Anda belum memilikinya.
Instal atau perbarui node.js
sehingga node
Anda setidaknya merupakan LTS yang direkomendasikan saat ini.
Pasang yarn
jika belum ada.
Kloning repo: git clone https://github.com/element-hq/element-web.git
.
Beralih ke direktori elemen-web: cd element-web
.
Instal prasyaratnya: yarn install
.
Jika Anda menggunakan cabang develop
, disarankan untuk menyiapkan lingkungan pengembangan yang tepat (lihat Menyiapkan lingkungan pengembang di bawah). Alternatifnya, Anda dapat menggunakan https://develop.element.io - rilis integrasi berkelanjutan dari cabang pengembangan.
Konfigurasikan aplikasi dengan menyalin config.sample.json
ke config.json
dan memodifikasinya. Lihat dokumen konfigurasi untuk detailnya.
yarn dist
untuk membuat tarball untuk digunakan. Menghapus file ini akan memberikan direktori khusus versi yang berisi semua file yang perlu masuk ke server web Anda.
Perhatikan bahwa yarn dist
tidak didukung pada Windows, sehingga pengguna Windows dapat menjalankan yarn build
, yang akan membangun semua file yang diperlukan ke dalam direktori webapp
. Versi Elemen tidak akan muncul di Pengaturan tanpa menggunakan skrip dist. Anda kemudian dapat memasang direktori webapp
di server web Anda untuk benar-benar menyajikan aplikasi, yang seluruhnya merupakan konten statis.
Elemen juga dapat dijalankan sebagai aplikasi desktop, dibungkus dengan Electron. Anda dapat mengunduh versi siap pakai dari https://element.io/get-started atau, jika Anda mau, buat sendiri.
Untuk membuatnya sendiri, ikuti petunjuk di https://github.com/element-hq/element-desktop.
Terima kasih banyak kepada @aviraldg atas pekerjaan awal pada integrasi Electron.
Dokumen konfigurasi menunjukkan cara mengganti pengaturan default aplikasi desktop jika diinginkan.
Elemen mendukung berbagai pengaturan untuk mengonfigurasi server default, perilaku, tema, dll. Lihat dokumen konfigurasi untuk lebih jelasnya.
Beberapa fitur Elemen mungkin diaktifkan oleh tanda di bagian pengaturan Labs
. Beberapa fitur ini dijelaskan di labs.md.
Elemen memerlukan URL berikut untuk tidak di-cache, ketika/jika Anda menyajikan Elemen dari server web Anda sendiri:
/config.*.json /i18n /home /sites /index.html
Kami juga menyarankan Anda memaksa browser untuk memvalidasi ulang setiap salinan Elemen yang di-cache saat memuat halaman dengan mengonfigurasi server web Anda untuk mengembalikan Cache-Control: no-cache
untuk /
. Hal ini memastikan browser akan mengambil versi baru Elemen pada pemuatan halaman berikutnya setelah diterapkan. Perhatikan bahwa ini sudah dikonfigurasi untuk Anda di konfigurasi nginx Dockerfile kami.
Sebelum mencoba mengembangkan Element, Anda harus membaca panduan pengembang untuk matrix-react-sdk
, yang juga mendefinisikan desain, arsitektur, dan gaya untuk Element.
Baca halaman Memilih masalah untuk mendapatkan panduan tentang cara memulai. Sebelum mulai mengerjakan suatu fitur, sebaiknya pastikan rencana Anda selaras dengan visi kami untuk Elemen. Silakan mengobrol dengan tim di #element-dev:matrix.org sebelum Anda memulai sehingga kami dapat memastikan bahwa kami bersedia menggabungkannya.
Anda juga harus membiasakan diri dengan panduan "Inilah Naga" tentang naga jinak & tidak terlalu jinak (gotcha) yang ada di basis kode.
Ide Element adalah menjadi "kulit" penyesuaian yang relatif ringan di atas matrix-react-sdk
yang mendasarinya. matrix-react-sdk
menyediakan komponen React tingkat tinggi dan rendah yang berguna untuk membangun aplikasi komunikasi Matrix menggunakan React.
Harap dicatat bahwa Elemen dimaksudkan untuk berjalan dengan benar tanpa akses ke internet publik. Jadi tolong jangan bergantung pada sumber daya (lib JS, CSS, gambar, font) yang dihosting oleh CDN atau server eksternal, tetapi harap kemas semua dependensi ke dalam Elemen itu sendiri.
Sebagian besar fungsi di Elemen sebenarnya ada di modul matrix-js-sdk
. Dimungkinkan untuk mengaturnya sedemikian rupa sehingga memudahkan pelacakan cabang develop
di git dan membuat perubahan lokal tanpa harus membangun kembali secara manual setiap saat.
Kloning pertama dan buat matrix-js-sdk
:
git clone https://github.com/matrix-org/matrix-js-sdk.gitpushd matriks-js-sdk tautan benang pemasangan benangpopd
Kloning repo dan alihkan ke direktori element-web
:
git clone https://github.com/element-hq/element-web.gitcd elemen-web
Konfigurasikan aplikasi dengan menyalin config.sample.json
ke config.json
dan memodifikasinya. Lihat dokumen konfigurasi untuk detailnya.
Terakhir, bangun dan mulai Elemen itu sendiri:
tautan benang matriks-js-sdk pemasangan benang benang mulai
Tunggu beberapa detik hingga pembuatan awal selesai; Anda akan melihat sesuatu seperti:
[element-js] <s> [webpack.Progress] 100% [element-js] [element-js] ℹ 「wdm」: 1840 modules [element-js] ℹ 「wdm」: Compiled successfully.
Ingat, perintah ini tidak akan berhenti karena menjalankan server web dan membangun kembali file sumber ketika berubah. Server pengembangan ini juga menonaktifkan caching, jadi JANGAN gunakan dalam produksi.
Buka http://127.0.0.1:8080/ di browser Anda untuk melihat Elemen yang baru Anda buat.
Catatan : Skrip build menggunakan inotify secara default di Linux untuk memantau perubahan pada direktori. Jika batas inotify terlalu rendah, build Anda akan gagal secara diam-diam atau dengan Error: EMFILE: too many open files
. Untuk menghindari masalah ini, kami merekomendasikan batas pengawasan minimal 128M
dan batas instans sekitar 512
.
Anda mungkin tertarik pada edisi #15750 dan #15774 untuk rincian lebih lanjut.
Untuk menetapkan batas pengawasan dan instans inotify yang baru, jalankan:
sudo sysctl fs.inotify.max_user_watches=131072 sudo sysctl fs.inotify.max_user_instances=512 sudo sysctl -p
Jika mau, Anda dapat menjadikan batasan baru ini permanen, dengan menjalankan:
echo fs.inotify.max_user_watches=131072 | sudo tee -a /etc/sysctl.conf echo fs.inotify.max_user_instances=512 | sudo tee -a /etc/sysctl.conf sudo sysctl -p
Saat Anda membuat perubahan pada matrix-js-sdk
perubahan tersebut akan diambil secara otomatis oleh webpack dan dibuat.
Jika salah satu langkah ini mengalami kesalahan, file table overflow
, Anda mungkin menggunakan Mac yang memiliki batas maksimal file terbuka yang sangat rendah. Jalankan ulimit -Sn 1024
dan coba lagi. Anda harus melakukan ini di setiap terminal baru yang Anda buka sebelum membangun Elemen.
Ada sejumlah pengujian tingkat aplikasi di direktori tests
; ini dirancang untuk dijalankan dengan Jest dan JSDOM. Untuk menjalankannya
yarn test
Lihat matriks-react-sdk untuk mengetahui cara menjalankan pengujian end-to-end.
Untuk menambahkan terjemahan baru, buka dokumen terjemahan.
Untuk panduan pengembang, lihat dokumen pengembang terjemahan.
Masalah diprioritaskan oleh anggota komunitas dan Tim Aplikasi Web, dengan mengikuti proses triase.
Kami menggunakan label masalah untuk mengurutkan semua masalah yang masuk.