Repositori ini berisi homeserver Matrix yang dihentikan yang ditulis dalam Rust, Ruma.
Untuk detail tentang penghentian proyek, lihat postingan blog ini.
Di bawah, Anda dapat menemukan konten readme ini sebelumnya. Untuk file lainnya, buka cabang master.
Ruma adalah homeserver Matrix yang ditulis dalam Rust.
Jika Anda tertarik dengan proyek ini, silakan lihat situs web Ruma, ikuti ruma_io di Twitter dan ngobrol dengan kami di #ruma:matrix.org di Matrix (juga dapat diakses melalui #ruma di jaringan IRC freenode.)
Tujuan Ruma sebagai sebuah proyek adalah untuk menyediakan implementasi lengkap dari homeserver Matrix, server identitas Matrix, perpustakaan klien Matrix, dan layanan aplikasi Matrix. Repositori ini secara khusus bertujuan untuk mengimplementasikan homeserver Matrix. homeserver Ruma akan dikemas sebagai satu executable untuk penerapan skala kecil, dan sebagai beberapa executable untuk penerapan besar yang perlu menskalakan berbagai bagian homeserver secara independen. Pustaka Matriks tambahan yang digunakan oleh Ruma dapat ditemukan di organisasi Ruma di GitHub.
Untuk gambaran mendetail tentang Matrix API mana yang didukung oleh Ruma sejauh ini, lihat dokumen STATUS.
Ruma menyertakan pengaturan pengembangan menggunakan Docker. Untuk menginstal Docker, lihat petunjuk instalasi untuk OS X, Linux, atau Windows. (Perhatikan bahwa Docker dan Docker Compose diperlukan, tetapi cara instalasi standar mencakup keduanya.)
Catatan : diperlukan docker-compose
versi 1.6 atau lebih tinggi dan docker-engine
versi 1.10.0 atau lebih tinggi.
Kargo merupakan pintu masuk utama pembangunan. Gunakan script/cargo
seperti yang biasa Anda gunakan cargo
biasa. Ini akan menjalankan perintah Cargo di dalam container Docker yang sudah menginstal Rust dan dependensi lainnya. Ini secara otomatis akan memulai database PostgreSQL di dalam sebuah wadah juga. Pertama kali Anda menjalankan perintah dengan script/cargo
, perlu beberapa saat untuk mengunduh image Docker.
Untuk membangun Ruma, jalankan script/cargo build --bin ruma
. Aplikasi akan ditulis ke target/debug/ruma
. Anda juga dapat membangun dan menjalankan Ruma dalam satu langkah dengan script/cargo run --bin ruma
. (Ketika dijalankan melalui Cargo, argumen terhadap ruma
itu sendiri harus muncul setelah dua tanda hubung, misalnya script/cargo run --bin ruma -- run
.)
Ruma membutuhkan Rust 1.34 atau lebih baru.
Docker digunakan untuk membuat hidup semua orang lebih mudah termasuk mengemas Rust bersama dengan dependensi Ruma lainnya, dan mengelola database pengujian PostgreSQL, semuanya tanpa mengasumsikan apa pun tentang sistem host. Jika Anda benar-benar ingin menghindari Docker, Anda bebas mengonfigurasi lingkungan pengembangan agar sesuai dengan asumsi yang dibuat oleh kode di Ruma. Secara khusus, ini berarti setidaknya versi minimum Rust, semua dependensi tingkat sistem seperti libsodium, dan instalasi PostgreSQL dengan izin yang sesuai tersedia di alamat dan port yang digunakan di src/test.rs
.
Untuk menghasilkan dokumentasi API untuk Ruma, jalankan script/cargo doc
. Kemudian buka target/doc/ruma/index.html
di browser Anda. Perhatikan bahwa dokumentasi ini ditujukan untuk kode Rust internal Ruma, bukan Matrix API yang dapat dilihat publik. Dokumentasi yang dapat dilihat pengguna akan tersedia di situs web Ruma.
Ruma menyertakan rangkaian pengujian integrasi. Setelah Docker diinstal, jalankan script/cargo test
untuk menjalankan rangkaian pengujian.
Ruma memerlukan file konfigurasi bernama ruma.json
, ruma.toml
, atau ruma.yaml
/ ruma.yml
yang masing-masing ditulis dalam JSON, TOML, atau YAML. File ini harus berada di direktori kerja tempat ruma
dijalankan. Ruma akan mencoba memuat file konfigurasi dalam urutan yang sama, berhenti pada file pertama yang ditemukan. File konfigurasi akan terlihat seperti ini, dalam format JSON:
{
"version" : " 1 " ,
"domain" : " example.com " ,
"macaroon_secret_key" : " qbnabRiFu5fWzoijGmc6Kk2tRox3qJSWvL3VRl4Vhl8= " ,
"postgres_url" : " postgres://username:[email protected]:5432/ruma "
}
Daftar lengkap atribut pada konfigurasinya adalah sebagai berikut:
ruma 0.1.0
A Matrix homeserver .
USAGE:
ruma [FLAGS] [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
help Prints this message or the help message of the given subcommand(s)
run Runs the Ruma server
secret Generates a random value to be used as a macaroon secret key
Sebelum Anda menjalankan ruma run
, pastikan Anda memiliki file konfigurasi di direktori kerja bernama ruma.json
dan server PostgreSQL sedang berjalan dan tersedia di lokasi yang ditentukan dalam file konfigurasi. Ruma akan secara otomatis membuat database (jika belum ada) dan mengelola skema database. Anda bertanggung jawab untuk memberi Ruma URL server PostgreSQL yang valid dan peran yang dapat melakukan operasi ini.
Ruma menyertakan titik akhir HTTP untuk menyajikan data Swagger di http://example.com/ruma/swagger.json (tentu saja, ganti host dan port server Ruma Anda misalnya example.com.) Arahkan salinan UI Swagger ke sini URL untuk melihat dokumentasi lengkap untuk API klien Matrix. Perhatikan bahwa Ruma belum benar-benar mengimplementasikan semua titik akhir API ini.
Lihat dokumen KONTRIBUSI.
Ruma didedikasikan untuk sahabat saya, Tamara Boyens, yang meninggal dunia pada Januari 2017. Dia dan saya berbicara online berjam-jam setiap hari. Dia adalah bagian besar dari motivasi saya dalam memulai Ruma, karena komunikasi online kami adalah tempat kami menghabiskan sebagian besar waktu bersama setelah kami berdua pindah dari kota tempat kami bertemu, dan kami selalu mencari sistem yang dapat menyelesaikan keluhan kami dengan semua pilihan di bawah standar yang kami punya untuk mengobrol.
– Jimmy Cuadra
MIT