พื้นที่เก็บข้อมูลนี้มีเมทริกซ์ homeserver ที่เลิกผลิตแล้วซึ่งเขียนด้วยภาษา Rust, Ruma
สำหรับรายละเอียดเกี่ยวกับการเสียชีวิตของโครงการ โปรดดูโพสต์ในบล็อกนี้
ด้านล่างนี้ คุณจะพบเนื้อหาก่อนหน้าของ Readme นี้ สำหรับไฟล์ที่เหลือ ให้ไปที่สาขาหลัก
Ruma เป็นเมทริกซ์ homeserver ที่เขียนด้วยภาษา Rust
หากคุณสนใจโปรเจ็กต์นี้ โปรดดูที่เว็บไซต์ Ruma ติดตาม ruma_io บน Twitter และแชทกับเราใน #ruma:matrix.org บน Matrix (หรือสามารถเข้าถึงได้ผ่าน #ruma บนเครือข่าย IRC แบบ freenode)
เป้าหมายของ Ruma ในฐานะโปรเจ็กต์คือการจัดเตรียมการใช้งาน Matrix homeserver , เซิร์ฟเวอร์ข้อมูลประจำตัว Matrix, ไลบรารีไคลเอ็นต์ Matrix และบริการแอปพลิเคชัน Matrix อย่างสมบูรณ์ พื้นที่เก็บข้อมูลนี้มีจุดมุ่งหมายเป็นพิเศษเพื่อใช้เมทริกซ์ homeserver homeserver ของ Ruma จะถูกรวมเป็นแพ็คเกจเป็นไฟล์ปฏิบัติการเดี่ยวสำหรับการปรับใช้ขนาดเล็ก และเป็นไฟล์ปฏิบัติการหลายรายการสำหรับการปรับใช้ขนาดใหญ่ ซึ่งจำเป็นต้องปรับขนาดส่วนต่างๆ ของ homeserver อย่างอิสระ ไลบรารี Matrix เพิ่มเติมที่ใช้โดย Ruma สามารถพบได้ในองค์กร Ruma บน GitHub
หากต้องการดูรายละเอียดว่า Ruma รองรับ Matrix API ใดบ้าง โปรดดูเอกสารสถานะ
Ruma มีการตั้งค่าการพัฒนาโดยใช้ Docker หากต้องการติดตั้ง Docker โปรดดูคำแนะนำในการติดตั้งสำหรับ OS X, Linux หรือ Windows (โปรดทราบว่าจำเป็นต้องใช้ทั้ง Docker และ Docker Compos แต่วิธีการติดตั้งมาตรฐานนั้นมีทั้งสองอย่าง)
หมายเหตุ : ต้องใช้ docker-compose
เวอร์ชัน 1.6 หรือสูงกว่า และ docker-engine
เวอร์ชัน 1.10.0 หรือสูงกว่า
สินค้าเป็นจุดเริ่มต้นหลักในการพัฒนา ใช้ script/cargo
ตามปกติคุณจะใช้ cargo
ธรรมดา สิ่งนี้จะรันคำสั่ง Cargo ภายในคอนเทนเนอร์ Docker ที่ติดตั้ง Rust และการอ้างอิงอื่น ๆ ไว้แล้ว มันจะเริ่มต้นฐานข้อมูล PostgreSQL ภายในคอนเทนเนอร์โดยอัตโนมัติเช่นกัน ครั้งแรกที่คุณรันคำสั่งด้วย script/cargo
การดาวน์โหลดอิมเมจ Docker จะใช้เวลาสักระยะหนึ่ง
หากต้องการสร้าง Ruma ให้รัน script/cargo build --bin ruma
แอปพลิเคชันจะถูกเขียนไปที่ target/debug/ruma
คุณยังสามารถสร้างและรัน Ruma ได้ในขั้นตอนเดียวด้วย script/cargo run --bin ruma
(เมื่อเรียกใช้ผ่าน Cargo อาร์กิวเมนต์ของ ruma
จะต้องมาหลังขีดกลางสองขีด เช่น script/cargo run --bin ruma -- run
)
Ruma ต้องใช้ Rust 1.34 หรือใหม่กว่า
Docker ใช้เพื่อทำให้ชีวิตของทุกคนง่ายขึ้น รวมถึงการทำแพ็กเกจ Rust พร้อมกับการพึ่งพาอื่นๆ ของ Ruma และการจัดการฐานข้อมูลทดสอบ PostgreSQL ทั้งหมดนี้โดยไม่ต้องคาดเดาอะไรเกี่ยวกับระบบโฮสต์ หากคุณต้องการหลีกเลี่ยง Docker จริงๆ ก็ขึ้นอยู่กับคุณแล้วที่จะกำหนดค่าสภาพแวดล้อมการพัฒนาของคุณให้ตรงกับสมมติฐานที่ทำโดยโค้ดใน Ruma โดยเฉพาะอย่างยิ่ง นี่หมายถึงเวอร์ชันขั้นต่ำของ Rust การพึ่งพาระดับระบบทั้งหมด เช่น libsodium และการติดตั้ง PostgreSQL พร้อมสิทธิ์ที่เหมาะสมตามที่อยู่และพอร์ตที่ใช้ใน src/test.rs
หากต้องการสร้างเอกสาร API สำหรับ Ruma ให้เรียกใช้ script/cargo doc
จากนั้นเปิด target/doc/ruma/index.html
ในเบราว์เซอร์ของคุณ โปรดทราบว่าเอกสารนี้มีไว้สำหรับโค้ด Rust ภายในของ Ruma ไม่ใช่ Matrix API ที่เปิดเผยต่อสาธารณะ เอกสารสำหรับผู้ใช้จะปรากฏบนเว็บไซต์ Ruma
Ruma มีชุดทดสอบการรวมระบบ เมื่อติดตั้ง Docker แล้ว ให้รัน script/cargo test
เพื่อรันชุดทดสอบ
Ruma ต้องใช้ไฟล์การกำหนดค่าชื่อ ruma.json
, ruma.toml
หรือ ruma.yaml
/ ruma.yml
ที่เขียนด้วย JSON, TOML หรือ YAML ตามลำดับ ไฟล์นี้ควรอยู่ในไดเร็กทอรีการทำงาน ruma
ที่ถูกเรียกใช้งาน Ruma จะพยายามโหลดไฟล์การกำหนดค่าตามลำดับเดียวกัน โดยหยุดที่ไฟล์แรกที่พบ ไฟล์การกำหนดค่าจะมีลักษณะดังนี้ ในรูปแบบ JSON:
{
"version" : " 1 " ,
"domain" : " example.com " ,
"macaroon_secret_key" : " qbnabRiFu5fWzoijGmc6Kk2tRox3qJSWvL3VRl4Vhl8= " ,
"postgres_url" : " postgres://username:[email protected]:5432/ruma "
}
รายการแอตทริบิวต์ทั้งหมดในการกำหนดค่ามีดังนี้:
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
ก่อนที่คุณจะรัน ruma run
ตรวจสอบให้แน่ใจว่าคุณมีไฟล์การกำหนดค่าในไดเร็กทอรีการทำงานชื่อ ruma.json
และเซิร์ฟเวอร์ PostgreSQL กำลังทำงานและพร้อมใช้งานในตำแหน่งที่ระบุในไฟล์การกำหนดค่า Ruma จะสร้างฐานข้อมูลโดยอัตโนมัติ (หากยังไม่มี) และจัดการสคีมาฐานข้อมูล คุณมีหน้าที่รับผิดชอบในการจัดเตรียม URL เซิร์ฟเวอร์ PostgreSQL ที่ถูกต้องและบทบาทที่สามารถดำเนินการเหล่านี้ให้กับ Ruma
Ruma มีจุดสิ้นสุด HTTP เพื่อให้บริการข้อมูล Swagger ที่ http://example.com/ruma/swagger.json (แทนที่โฮสต์และพอร์ตของเซิร์ฟเวอร์ Ruma ของคุณสำหรับ example.com แน่นอน) ชี้สำเนาของ Swagger UI ที่นี่ URL เพื่อดูเอกสารประกอบที่สมบูรณ์สำหรับ Matrix ไคลเอ็นต์ API โปรดทราบว่า Ruma ยังไม่ได้ใช้จุดสิ้นสุด API เหล่านี้ทั้งหมดจริงๆ
ดูเอกสารการมีส่วนร่วม
Ruma อุทิศตนให้กับ Tamara Boyens เพื่อนสนิทของฉัน ซึ่งเสียชีวิตในเดือนมกราคม 2017 เธอกับฉันคุยกันทางออนไลน์เป็นเวลาหลายชั่วโมงทุกวัน เธอเป็นแรงบันดาลใจสำคัญของฉันในการเริ่มต้น Ruma เพราะการสื่อสารออนไลน์ของเราเป็นที่ที่เราใช้เวลาร่วมกันมากที่สุดหลังจากที่เราทั้งคู่ย้ายออกจากเมืองที่เราพบกัน และเรามักจะมองหาระบบที่จะแก้ไขข้อข้องใจของเราด้วย ตัวเลือกย่อยทั้งหมดที่เรามีสำหรับการสนทนา
— จิมมี่ กัวดรา
เอ็มไอที