- Conduit เป็นเซิร์ฟเวอร์โอเพนซอร์สน้ำหนักเบาที่อิมพลีเมนต์ข้อกำหนดของ Matrix โดยมุ่งเน้นให้สามารถตั้งค่า homeserver ของตนเองได้ภายในไม่กี่นาที
- โครงการนี้ยังอยู่ในสถานะ เบตา จึงเริ่มใช้งานได้แล้ว แต่ยังขาดฟีเจอร์ย่อยบางส่วน
- Matrix เป็นเครือข่ายแบบเปิดสำหรับการสื่อสารที่ปลอดภัยและกระจายศูนย์ และผู้ใช้จาก homeserver คนละแห่งก็สามารถแชตกันได้
- ในด้านการดูแลระบบ ใช้โครงสร้างแบบ ไบนารีเดียว และฐานข้อมูลแบบฝังในตัว โดยใช้ RocksDB เป็นฐานข้อมูลเริ่มต้น
- เน้นเป็นทางเลือกที่เบากว่าและติดตั้งง่ายกว่า Synapse จึงน่าพิจารณาหากต้องการเซิร์ฟเวอร์แชตแบบโฮสต์เองที่มีความต้องการระบบต่ำ
บทบาทของ Conduit และ Matrix
- Conduit เป็นเซิร์ฟเวอร์โอเพนซอร์สน้ำหนักเบาที่อิมพลีเมนต์ Matrix Specification
- สถานะปัจจุบันคือ เบตา
- เริ่มใช้งานได้แล้ว
- แต่ยังไม่มีฟีเจอร์ย่อยบางอย่าง
- Matrix เป็นเครือข่ายแบบเปิดสำหรับการสื่อสารที่ปลอดภัยและกระจายศูนย์
- ผู้ใช้ Matrix homeserver ทุกคนสามารถแชตกับผู้ใช้ของเซิร์ฟเวอร์ Matrix อื่นได้
- หากใช้ bridge ก็สามารถสื่อสารกับผู้ใช้นอก Matrix เช่นคอมมูนิตี้บน Discord ได้ด้วย
คุณสมบัติด้านการติดตั้งและการดูแลระบบ
- ตั้งเป้าให้ติดตั้งง่ายและใช้ทรัพยากรระบบต่ำ โดยสามารถสร้างระบบ Conduit ของตนเองได้ภายในไม่กี่นาที
- เซิร์ฟเวอร์ใช้โครงสร้างแบบ ไบนารีเดียว และฐานข้อมูลแบบฝังในตัว
- ฐานข้อมูลเริ่มต้นคือ RocksDB
- ในบางกรณีอาจทำงานได้เร็วกว่าการอิมพลีเมนต์เซิร์ฟเวอร์อื่น
ลิงก์ที่เกี่ยวข้องและการสนับสนุน
-
ลิงก์โครงการ
- Website: https://conduit.rs
- Git and Documentation: https://gitlab.com/famedly/conduit
- Chat: #conduit:ahimsa.chat
-
การสนับสนุนและข้อมูลการดำเนินงาน
- Liberapay: https://liberapay.com/timokoesters/
- Bitcoin:
bc1qnnykf986tw49ur7wx9rpw2tevpsztvar5x8w4n - การโฮสต์เซิร์ฟเวอร์
conduit.rsได้รับการสนับสนุนจาก Matrix.org Foundation - Conduit ได้รับการสนับสนุนจาก https://manualsbrain.com/ ในปี 2023
- ในปี 2021 ได้รับการสนับสนุนเป็นเวลา 6 เดือนจาก German BMBF โดยมี FKZ คือ
01lS21S11
1 ความคิดเห็น
ความเห็นจาก Hacker News
ผมรันอินสแตนซ์ Conduit แบบ self-hosting มาหลายปีแล้ว ข้อดีคือติดตั้งและใช้งานง่าย ส่วนข้อเสียคือยังเป็นซอฟต์แวร์เบต้าอยู่
ถึงอย่างนั้นสำหรับผมก็ค่อนข้างดี ใช้แชตกับเพื่อนสองสามคนได้เสถียร และใช้ในห้องที่ใหญ่ขึ้นมาหน่อยที่ผมเข้าร่วมอยู่ได้ดีด้วย
ผู้เขียนยังทำโปรเจกต์ Rust ที่น่าสนุกอีกตัวคือ Veloren ด้วย: https://veloren.net
พอเข้าไปในล็อบบี้และเล่นราว 30 นาที ผมก็พบว่าสามารถซูมออกจากตัวละครด้วยสกรอลล์ได้เรื่อย ๆ ไม่ใช่แค่ระดับเกมแอ็กชัน RPG ทั่วไป แต่เหมือนซูมไปถึงสเกลมินิแมป ขึ้นไปเหนือเมฆได้โดยเฟรมไม่ตกเลย ให้ความรู้สึกหลอน ๆ มาก
ไม่รู้ว่าตอนนี้โปรเจกต์ได้รับการดูแลดีแค่ไหน แต่ดูเหมือนมีโครงสร้างพื้นฐานพอที่จะกลายเป็น RPG ที่แข็งแรงได้
ก่อนหน้านี้ขาด การรองรับ Spaces ไปนาน แต่เพิ่งเข้ามาใน build สำหรับพัฒนาแล้ว และยอดเยี่ยมมาก ผมอัปเดตบริการของตัวเองแล้วด้วย และทำงานได้ดีตามคาด
อยากให้มีโปรโตคอลย่อยที่ทำแค่แชตปลอดภัยก็พอ
ผู้ใช้บนเซิร์ฟเวอร์ของผมมีแค่ผมคนเดียว และไม่ได้เข้าห้องที่คึกคักมาก ๆ แต่จนถึงตอนนี้ผลกระทบต่อประสิทธิภาพของ VPS ขนาดเล็กแทบมองข้ามได้
สวัสดีครับ ผม Timo ผู้เริ่ม โปรเจกต์ Conduit เมื่อหลายปีก่อน ถ้ามีคำถามก็ถามได้เลย
อยากรู้ว่าหลังจากเรียนจบมหาวิทยาลัยแล้ว มีความกังวลเรื่องอนาคตของโปรเจกต์ไหม จนถึงตอนนี้ดูเหมือน Timo เป็นผู้มีส่วนร่วมที่แอ็กทีฟอย่างท่วมท้น เลยกังวลว่าโปรเจกต์ยังพึ่งพาเวลาที่คุณจัดสรรให้ได้อย่างมากอยู่หรือเปล่า
อีกอย่าง อยากรู้ว่านักพัฒนา Rust/Linux ควรเริ่มจากอะไรถ้าจะมีส่วนร่วมกับ Conduit อย่างมีนัยสำคัญเป็นครั้งแรก ใน GitLab มี issue เปิดอยู่ 155 รายการ และจากมุมผู้ใช้ก็ไม่มีปัญหาอะไรที่สะดุดชัด ๆ เลยไม่รู้จะเริ่มตรงไหน
ถ้า Dortmund หรือการทำงานรีโมตไม่ใช่ข้อบังคับ ก็ติดต่อมาได้ และขอให้ได้งานดี ๆ นะครับ
และอยากรู้ว่า Conduit มีแผนจะทำให้เป็น P2P ในอนาคตอันใกล้หรือไม่
https://github.com/matrix-org/pinecone
https://archive.fosdem.org/2022/schedule/event/matrix_p2p_pi...
ผมมีความเห็นจากประสบการณ์เขียนบอตเหมือนกัน แต่สนใจมุมมองของ ผู้ดูแล implementation ของ homeserver เป็นพิเศษ
ยังไม่ชัดเจนว่าเป้าหมายคือเซิร์ฟเวอร์ Matrix ที่มีฟีเจอร์ครบถ้วน หรือมุ่งไปที่ subset บางส่วนในด้านขนาดหรือฟีเจอร์
สิ่งที่ผมไม่ชอบใน Matrix คือผมเคยรันเซิร์ฟเวอร์หนึ่งที่มีผู้ใช้ 3–4 คน แต่ภายในไม่กี่เดือน ฐานข้อมูลโตไปถึงราว 80GB
คอนเทนต์และข้อความที่ผู้ใช้อัปโหลดรวมกันมีแค่ประมาณ 2–3GB อยากรู้ว่ามีวิธีลบแคชข้อมูลที่ได้รับจากเซิร์ฟเวอร์เก่า ๆ เช่น ตั้งแต่เกิน 2 สัปดาห์ขึ้นไป แล้วถ้าจำเป็นก็ค่อยดึงมาใหม่หรือไม่
https://matrix-org.github.io/synapse/v1.85/admin_api/media_a...
เซิร์ฟเวอร์ของผมไม่ได้ federate แต่ค่อนข้างคึกคัก และปฏิบัติเหมือนเป็นพื้นที่ชั่วคราว ผมตั้งให้ทั้งข้อความและมีเดียที่เก่ากว่า 1–2 สัปดาห์ถูกเก็บคืนโดยอัตโนมัติ
https://levans.fr/shrink-synapse-database.html
https://github.com/matrix-org/rust-synapse-compress-state
MUC จำนวนมากมีค่าเริ่มต้นเป็นข้อความล่าสุด 20 ข้อความ ซึ่งปกติก็พอให้เข้าใจบริบทการสนทนาและเข้าร่วมได้แล้ว ค่าใช้จ่ายในการรันเซิร์ฟเวอร์ของผมก็ค่อนข้างถูกด้วย
อยากรู้ว่ามีวิธี ไมเกรต จาก Synapse ไป Conduit หรือไม่ การทิ้งประวัติสนทนา 6 ปีเป็นเรื่องยากจะให้เหตุผลได้
ไม่ว่าจะทางไหนก็ไม่รู้ว่าจะใช้เวลานานแค่ไหน
ที่หาเจอมีแค่ issue สำหรับติดตามการไมเกรต Synapse -> Dendrite เท่านั้น
https://github.com/matrix-org/dendrite/issues/1705
บทความที่เกี่ยวข้อง: Conduit Beta – Matrix chat server - https://news.ycombinator.com/item?id=28385840 - กันยายน 2021, 69 ความคิดเห็น
มี XMPP อยู่แล้ว ทำไมถึงใช้ Matrix อธิบายให้หน่อยได้ไหม?
เป็นโซลูชันแชตสมัยใหม่ที่มีฟีเจอร์ตามที่ผู้คนคาดหวังจาก Slack และ Discord และมีบริดจ์จำนวนมากที่ช่วยให้ไม่ต้องใช้ไคลเอนต์แชตหลายตัวสำหรับหลายโปรโตคอล
มีคอมมูนิตี้ดี ๆ มากมาย แชตเสียงก็ค่อนข้างดี เป็นโอเพนซอร์ส และทำ self-host ได้ อยากรู้เหมือนกันว่า XMPP ดีตรงไหน
XMPP ในเชิงโครงสร้างใกล้เคียงกับอีเมล มีตัวเลือกอย่างสถานะออนไลน์·กำลังพิมพ์·เข้าใช้งานครั้งล่าสุด และบริการเมสเซนเจอร์รายใหญ่อย่าง WhatsApp ก็มักใช้เวอร์ชันดัดแปลงของตัวเอง
XMPP เป็นระบบเดียวที่ใช้ได้และควรใช้ได้ทุกที่ที่ใช้อีเมล มันทันสมัยพอ ๆ กับ Matrix เพียงแต่มีแนวคิดเรื่องการจัดเก็บและการกระจายข้อมูลต่างกันเท่านั้น
เปรียบเทียบ: https://www.freie-messenger.de/en/systemvergleich/xmpp-matri...
XMPP ยอดเยี่ยมสำหรับวัตถุประสงค์ที่มันถูกออกแบบมา แต่ไม่ค่อยเหมาะกับมือถือ การเชื่อมต่อที่มี packet loss สูง และ latency สูง มันพูดเยอะและใช้แบนด์วิดท์มาก จึงไม่ดีในสภาพแวดล้อมที่ข้อมูลและแบตเตอรี่จำกัด และเดิมก็ไม่ได้คำนึงถึงความเป็นจริงที่คนคนหนึ่งใช้หลายอุปกรณ์
การส่งไฟล์ก็ไม่ดีอยู่นาน และมีวิธีการที่เข้ากันไม่ได้ปะปนกันไปตามไคลเอนต์และรูปแบบเครือข่าย
การมี XEP มากเกินไปก็ไม่ช่วยระบบนิเวศเช่นกัน ถ้ามีส่วนขยายแบบเลือกใช้ได้มากเกินไป interoperability ก็ลดลง ฟีเจอร์ที่คาดหวังในแชตสมัยใหม่เกินขอบเขตที่ XMPP ถูกออกแบบไว้ และ XEP พยายามจะอุดช่องว่างเหล่านี้ แต่ผลลัพธ์ก็ปะปนกัน
ตอนออกแบบ มันเป็นการเลือกเทคโนโลยีที่สมเหตุสมผล แต่ตอนนี้มีตัวเลือกที่ดีกว่าอีกมาก นักพัฒนามักเลือกเทคโนโลยีที่ทำให้งานสนุกขึ้น จึงมีงานจำนวนมากเกิดขึ้นบนแพลตฟอร์มใหม่ ๆ ตัวอย่างเช่น ในโพสต์ HN อีกโพสต์วันนี้ก็พูดถึงว่า parser XML ทั่วไปอาจไม่พอ และอาจต้องใช้ parser XML ขั้นสูงมาก: https://news.ycombinator.com/item?id=36930196
Matrix มีชุดฟีเจอร์สำคัญที่ชัดเจนกว่า จึงคาดหวังได้ว่าไคลเอนต์ที่รองรับจะใช้งานได้สม่ำเสมอโดยไม่มีเรื่องให้ประหลาดใจ
เมื่อเข้าไปในห้องบนเซิร์ฟเวอร์ Matrix อื่น เซิร์ฟเวอร์ของฉันจะเริ่มเก็บสำเนาของเซิร์ฟเวอร์นั้นไว้ และฉันก็ใช้มันได้ในแบบที่ต้องการ ต่อให้ปิดเซิร์ฟเวอร์ตัวเองไว้หนึ่งวันแล้วเปิดใหม่ มันก็จะซิงก์กลับมา
ไม่รู้ว่า XMPP ทำงานแบบนั้นหรือเปล่า แต่เคยคิดเสมอว่ามันเหมือนอีเมล คือส่งข้อความแล้วลองส่งซ้ำเล็กน้อย ส่วนข้อมูลชั่วคราวอย่างสถานะปัจจุบันระหว่างเซิร์ฟเวอร์ การยืนยันว่าอ่านแล้ว และการแจ้งว่ากำลังพิมพ์ ทำงานอย่างไรก็ยังไม่ค่อยรู้
Conduit เป็นโปรเจกต์ที่เจ๋งมาก แต่ดูเหมือนจะติดตาม สถานะและความคืบหน้า ได้ยากถ้าไม่ได้อ่านทุก commit และทุก issue
ความคืบหน้าล่าสุดของฟีเจอร์ Sliding Sync ในตัวน่าคาดหวัง เพราะจะทำให้การ deploy ง่ายขึ้นมาก
มีใครรู้ไหมว่าอะไรเป็นสาเหตุที่บางครั้งใน Matrix ข้อความล่าสุดไม่ถูกถอดรหัสจนกว่าจะมีข้อความล่าสุดใหม่ถูกส่งมา หรือข้อความรอบ ๆ ถอดรหัสได้ แต่มีข้อความเดี่ยว ๆ ข้อความหนึ่ง ถอดรหัสล้มเหลว?
ถ้าไคลเอนต์ทั้งหมดของฉันไม่ได้เชื่อมต่อพร้อมกัน และฝั่งผู้ส่งก็เช่นกัน ก็จะแลกเปลี่ยนคีย์กันไม่ได้ ดังนั้นแต่ละไคลเอนต์จะถอดรหัสได้เฉพาะบางส่วนของข้อความที่ตัวเองมีคีย์อยู่ นอกจากนี้ไคลเอนต์จะแลกเปลี่ยนคีย์กับไคลเอนต์อื่นที่ผ่านการยืนยันแล้วเท่านั้น
ถ้าดูพร็อพเพอร์ตี้
session_idใน JSON ต้นฉบับของข้อความ จะเห็นว่าข้อความทั้งหมดในเซสชันหนึ่ง ๆ คือช่วงที่ผู้ส่งล็อกอินอยู่ในไคลเอนต์หนึ่งตัว จะถอดรหัสได้ทั้งหมดหรือไม่ก็ถอดรหัสไม่ได้เลย กรณีแรกหมายความว่ามีคีย์ของเซสชันนั้น ส่วนกรณีหลังหมายความว่ายังไม่ได้รับคีย์นั้นผมอาจพลาดอะไรไปก็ได้ แต่หน้าดูเรียบง่ายเกินไป และเหมือนตั้งสมมติฐานว่าผู้อ่านรู้อยู่แล้วว่า Matrix คืออะไร และจะใช้งานสิ่งนี้อย่างไร
ใช้เวลามากกับวิธีติดตั้งหลายแบบ แต่ไม่เห็นวิธีใช้งานตัวเซิร์ฟเวอร์เอง เช่น การใช้ไคลเอนต์
น่าจะใช้ Element ก็ได้
ผมว่าเพจของ Conduit ทำถูกแล้ว ไม่ได้ถึงกับสมมติว่ารู้ว่า Matrix คืออะไร แต่ใกล้เคียงกับการสมมติว่าถ้าไม่รู้ก็มีความเข้าใจพอจะกดลิงก์ได้
โดยส่วนตัวชอบที่มันสั้น แสดงปัญหาที่ต้องการแก้ได้อย่างกระชับ และมีลิงก์ไปยัง Git repository ซึ่งเป็น call to action จริง ๆ โผล่มาเร็ว
ก็เป็นไปได้ว่าหลังจากโพสต์ต้นฉบับ หน้า landing page เองอาจถูกอัปเดตด้วยเนื้อหาใหม่แล้ว
Matrix คือเครือข่ายเปิดสำหรับการสื่อสารที่ปลอดภัยและกระจายศูนย์ ผู้ใช้ของ homeserver Matrix ใด ๆ สามารถแชตกับผู้ใช้บนเซิร์ฟเวอร์ Matrix อื่น ๆ ได้ทั้งหมด และยังสื่อสารกับผู้ใช้นอก Matrix เช่น คอมมูนิตี้ Discord ผ่าน bridge ได้ด้วย
แล้วก็ไม่เห็นข้อมูลการติดตั้ง
Conduit เป็นซอฟต์แวร์เซิร์ฟเวอร์ ไม่ใช่แอปสำหรับผู้ใช้ปลายทาง
ข้อมูลเพิ่มเติมเกี่ยวกับ Matrix: https://www.freie-messenger.de/en/matrix
อยากรู้ว่า Conduit เกี่ยวข้องกับ Synapse อย่างไร
Dendrite ถูกทดสอบด้วย https://github.com/matrix-org/sytest และยังมี issue ประมาณว่า “นี่ยังเป็น Synapse อยู่หรือ?” แต่ใน Conduit หาไม่เจอว่ามีการพูดคุยที่เกี่ยวข้อง แม้แต่การถกกันว่าทำไมถึงไม่อยากเป็นเหมือน Synapse ก็ยังไม่เห็น
จุดเด่นที่ยกมาคือเบาและติดตั้งง่าย ซึ่งก็สื่อเป็นนัยว่า Synapse ไม่เป็นแบบนั้น ที่สำคัญกว่านั้น มันได้กลายเป็นกรณีทดสอบความถูกต้องของสเปกเซิร์ฟเวอร์ Matrix และมีส่วนช่วยพอสมควรตลอดหลายปีในการทำให้ส่วนที่คลุมเครือชัดเจนขึ้น
Conduit ก็น่าจะ reuse งานบางส่วนตรงนั้นได้ แต่เท่าที่จำได้ Conduit ใช้ GitLab ส่วน Dendrite ใช้ GitHub Actions
แยกจากนั้น ตอนนี้ Conduit ดูเหมือนจะไม่ได้มุ่งเป็นตัวแทนแบบ drop-in ของ Synapse เท่าที่เห็นล่าสุดในห้อง Matrix ก็ยังมีช่องว่างด้านฟีเจอร์ที่เห็นได้ชัดอยู่หลายอย่าง