3 điểm bởi GN⁺ 2023-08-01 | 1 bình luận | Chia sẻ qua WhatsApp
  • Conduit là một máy chủ mã nguồn mở nhẹ triển khai đặc tả Matrix, tập trung vào việc thiết lập homeserver tự host chỉ trong vài phút
  • Dự án hiện vẫn ở giai đoạn beta, nên đã có thể sử dụng nhưng vẫn còn thiếu một số tính năng nhỏ
  • Matrix là một mạng mở dành cho giao tiếp bảo mật và phân tán, cho phép người dùng trên các homeserver khác nhau trò chuyện với nhau
  • Về vận hành, nó sử dụng cấu trúc một tệp nhị phân duy nhất và cơ sở dữ liệu tích hợp, với cơ sở dữ liệu mặc định là RocksDB
  • Vì hướng tới việc nhẹ hơn và dễ cài đặt hơn Synapse, đây là lựa chọn đáng cân nhắc nếu bạn cần một máy chủ chat tự host với yêu cầu hệ thống thấp

Vai trò của Conduit và Matrix

  • Conduit là một máy chủ mã nguồn mở nhẹ triển khai Matrix Specification
  • Trạng thái hiện tại là beta
    • Đã có thể sử dụng
    • Một số tính năng nhỏ hiện vẫn chưa có
  • Matrix là một mạng mở cho giao tiếp an toàn và phân tán
    • Mọi người dùng trên homeserver Matrix đều có thể trò chuyện với người dùng của các máy chủ Matrix khác
    • Nếu dùng bridge, cũng có thể giao tiếp với người dùng bên ngoài Matrix như các cộng đồng Discord

Đặc điểm cài đặt và vận hành

  • Mục tiêu là cấu hình dễ dàng và yêu cầu hệ thống thấp, cho phép tạo cấu hình Conduit riêng chỉ trong vài phút
  • Máy chủ sử dụng cấu trúc một tệp nhị phân duy nhất và cơ sở dữ liệu tích hợp
  • Cơ sở dữ liệu mặc định là RocksDB
  • Trong một số trường hợp, nó có thể nhanh hơn các cách triển khai máy chủ khác

Liên kết liên quan và tài trợ

1 bình luận

 
GN⁺ 2023-08-01
Ý kiến trên Hacker News
  • Tôi đã vận hành một instance Conduit tự host trong vài năm nay; ưu điểm là dễ cài đặt và sử dụng, còn nhược điểm là nó vẫn là phần mềm beta
    Dù vậy với tôi thì khá tốt, tôi đã dùng ổn định để chat với vài người bạn và trong một số phòng hơi lớn mà tôi tham gia
    Tác giả cũng làm Veloren, một dự án Rust thú vị khác: https://veloren.net

    • Veloren là một game thật sự tuyệt vời. Vài năm trước tôi đã compile thử cho vui cùng bạn bè, và nó chạy mượt đáng ngạc nhiên ngay cả trên GTX 1050 Ti của tôi
      Tôi vào lobby chơi khoảng 30 phút thì phát hiện ra có thể tiếp tục zoom out khỏi nhân vật bằng con lăn. Nó vượt xa mức của một game action RPG thông thường, kiểu như lên đến tỷ lệ minimap rồi bay lên trên cả mây mà không tụt frame, cảm giác khá ảo giác
      Không biết hiện dự án được duy trì tốt đến đâu, nhưng có vẻ đã có đủ bộ khung để trở thành một RPG mạnh
    • Tôi đã dùng Conduit khá lâu và đánh giá rất cao
      Trong thời gian dài nó thiếu hỗ trợ Spaces, nhưng vừa được đưa vào bản development build và rất tuyệt. Tôi cũng đã cập nhật dịch vụ của mình và nó hoạt động đúng như mong đợi
    • Có vẻ là một lựa chọn thay thế tốt cho việc chạy Dendrite, server viết bằng Go. Dendrite có cảm giác như sẽ mãi ở trạng thái đang phát triển, còn server Python giờ ngốn quá nhiều tài nguyên, nên thật vui khi thấy có lựa chọn khác ngoài server Go
    • Ước gì có một client tương tự hỗ trợ đầy đủ tính năng. Vấn đề của Matrix là có quá nhiều tính năng, như thể Signal, Discord, Slack, Zoom, Teams bị trộn chung vào một chỗ
      Giá mà có một sub-protocol chỉ dành cho chat bảo mật thì tốt
    • Tôi vận hành được 10 tháng rồi, cả cài đặt lẫn sử dụng đều rất trơn tru
      Người dùng trên server của tôi chỉ có mình tôi và tôi không tham gia phòng nào quá sôi động, nhưng đến nay tác động lên hiệu năng của VPS nhỏ là không đáng kể
  • Xin chào, tôi là Timo, người đã bắt đầu dự án Conduit vài năm trước. Nếu có câu hỏi gì thì cứ thoải mái hỏi

    • Tôi đã dùng Conduit được 10 tháng và thật sự rất thích. Tôi có hai câu hỏi
      Tôi thắc mắc liệu sau khi bạn học xong đại học thì có lo ngại gì về tương lai của dự án không. Cho đến nay Timo có vẻ là contributor hoạt động áp đảo, nên tôi lo rằng dự án vẫn phụ thuộc rất nhiều vào lượng thời gian bạn có thể dành cho nó
      Tôi cũng muốn biết một lập trình viên Rust/Linux nên bắt đầu từ đâu để có đóng góp đầu tiên có ý nghĩa cho Conduit. Trên GitLab có 155 issue đang mở, và từ góc nhìn người dùng thì không có vấn đề nào thật sự nổi bật, nên tôi không biết bắt đầu từ đâu
      Nếu Dortmund hoặc làm từ xa không phải yêu cầu bắt buộc thì cứ liên hệ nhé, chúc bạn kiếm được một công việc tốt
    • Tôi muốn biết bạn nghĩ gì về matrix-p2p / Pinecone đang được phát triển cho Dendrite
      Tôi cũng muốn biết liệu Conduit có kế hoạch trở thành P2P trong tương lai gần không
      https://github.com/matrix-org/pinecone
      https://archive.fosdem.org/2022/schedule/event/matrix_p2p_pi...
    • Khi nhìn Matrix như một protocol, tôi muốn biết phần nào trong thiết kế khiến bạn bực nhất
      Tôi cũng có cảm nhận riêng khi viết bot, nhưng đặc biệt tò mò góc nhìn của một maintainer triển khai homeserver
    • Tôi muốn biết có tài liệu nào tổng hợp Conduit so với Synapse hoặc đặc tả Matrix về mặt tính năng không
      Không rõ mục tiêu là một Matrix server đầy đủ tính năng, hay nhắm đến một tập con cụ thể về quy mô hoặc tính năng
    • Tôi muốn biết bạn có trực tiếp dùng Conduit hằng ngày không. Tôi muốn biết nó có ổn định để dùng thường nhật không
  • Điều tôi không thích ở Matrix là tôi vận hành một server chỉ có 3–4 người dùng, vậy mà sau vài tháng database phình lên khoảng 80GB
    Tổng nội dung và văn bản do người dùng tải lên chỉ khoảng 2–3GB. Tôi muốn biết có cách nào xóa cache dữ liệu nhận từ các server cũ, chẳng hạn sau 2 tuần, rồi khi cần thì tải lại không

    • Có một admin API để xóa ảnh local/remote cũ. Trong tình huống này thì có lẽ API này là thứ phù hợp
      https://matrix-org.github.io/synapse/v1.85/admin_api/media_a...
      Server của tôi không federate nhưng khá sôi động, và tôi xem nó như một không gian tạm thời. Tôi đã cấu hình để cả text lẫn media cũ hơn 1–2 tuần đều được tự động thu hồi
    • Thứ chiếm dung lượng là dữ liệu trạng thái của phòng/cuộc trò chuyện, và có thể nén được
      https://levans.fr/shrink-synapse-database.html
      https://github.com/matrix-org/rust-synapse-compress-state
    • Những điểm như thế khiến tôi đánh giá XMPP cao hơn. Không có kỳ vọng phải sao chép toàn bộ lịch sử phòng chat
      Nhiều MUC mặc định chỉ có 20 tin nhắn gần nhất, thường đủ để nắm được mạch trò chuyện và tham gia. Chi phí vận hành server của tôi cũng khá rẻ
  • Tôi muốn biết có cách nào migrate từ Synapse sang Conduit không. Rất khó biện minh cho việc mất 6 năm lịch sử trò chuyện

    • Hiện thì chưa có. Có kế hoạch cho một công cụ migrate từ Synapse sang Dendrite, nhưng hỗ trợ Conduit cũng cần được thêm riêng
      Dù theo hướng nào thì cũng không biết sẽ mất bao lâu
      Thứ tôi tìm được chỉ là issue theo dõi việc migrate Synapse -> Dendrite
      https://github.com/matrix-org/dendrite/issues/1705
  • Bài liên quan: Conduit Beta – Matrix chat server - https://news.ycombinator.com/item?id=28385840 - Tháng 9 năm 2021, 69 bình luận

  • Đã có XMPP rồi, vậy ai có thể giải thích vì sao nên dùng Matrix không?

    • Suy nghĩ đầu tiên của tôi lại là câu hỏi nên được đảo ngược. Vì tôi không rõ tại sao nên dùng XMPP, nên tôi sẽ nói những điểm hay của Matrix
      Đây là một giải pháp chat hiện đại có các tính năng mà mọi người kỳ vọng từ Slack và Discord, và có nhiều bridge giúp không cần dùng nhiều client chat cho nhiều giao thức khác nhau
      Có nhiều cộng đồng tuyệt vời, chat thoại cũng khá tốt, là mã nguồn mở và có thể tự host. Tôi tò mò XMPP có điểm gì hay
    • Matrix gần giống việc chat bằng Git, dùng cơ sở dữ liệu phân tán và mang tính chất team messenger mạnh như Mattermost hay Zulip
      XMPP về mặt cấu trúc gần với email hơn, có các tùy chọn như trạng thái online, đang nhập, lần truy cập cuối; các dịch vụ nhắn tin lớn như WhatsApp cũng thường dùng biến thể riêng của nó
      XMPP là hệ thống duy nhất có thể dùng và được phép dùng ở bất cứ nơi nào có email. Nó hiện đại ngang Matrix, chỉ khác ở cách nghĩ về lưu trữ và phân tán dữ liệu
      So sánh: https://www.freie-messenger.de/en/systemvergleich/xmpp-matri...
    • Tóm tắt kiểu này đến nay vẫn đúng: https://news.ycombinator.com/item?id=8998290
      XMPP rất tuyệt cho mục đích thiết kế ban đầu, nhưng không phù hợp lắm với mobile, môi trường mất gói cao và kết nối có độ trễ lớn. Nó nhiều lời và dùng nhiều băng thông, nên không tốt trong môi trường bị giới hạn dữ liệu và pin; thực tế một người dùng nhiều thiết bị ban đầu cũng không được tính đến
      Truyền file trong thời gian dài cũng không tốt, và tùy theo client cũng như dạng mạng mà có một mớ cách thức không tương thích với nhau
      Việc có quá nhiều XEP cũng không giúp ích cho hệ sinh thái. Quá nhiều phần mở rộng tùy chọn sẽ làm giảm khả năng tương tác. Các tính năng được kỳ vọng trong chat hiện đại đã vượt quá phạm vi thiết kế của XMPP, và XEP đã cố vá điều này nhưng kết quả không đồng đều
      Vào thời điểm thiết kế, đó là lựa chọn công nghệ tự nhiên, nhưng giờ có nhiều lựa chọn tốt hơn. Developer thường chọn công nghệ khiến công việc thú vị hơn, nên có nhiều hoạt động diễn ra hơn ở các nền tảng mới. Ví dụ, một bài HN khác hôm nay cũng đề cập rằng parser XML thông thường có thể không đủ, nên cần parser XML rất cao cấp: https://news.ycombinator.com/item?id=36930196
    • XMPP có mẫu số chung tối thiểu, và khá nhiều tính năng cốt lõi nằm dưới các XEP tùy chọn. Vì vậy trải nghiệm người dùng rất thất thường tùy theo client và server
      Matrix có tập tính năng quan trọng rõ ràng hơn, nên với client tương thích, có thể kỳ vọng chúng được triển khai đồng đều mà không có bất ngờ
    • Matrix giống một dịch vụ đồng bộ trạng thái hơn là một cách gửi tin nhắn
      Khi bạn vào một phòng trên server Matrix khác, server của bạn bắt đầu duy trì một bản sao của server đó, và bạn có thể dùng nó theo cách mình muốn. Dù bạn tắt server của mình một ngày rồi bật lại, nó cũng sẽ đồng bộ lại
      Tôi không biết XMPP có hoạt động như vậy không, nhưng tôi luôn nghĩ nó giống email: gửi tin nhắn và thử lại vài lần. Tôi cũng không rõ các thông tin nhất thời như trạng thái hiện tại, xác nhận đã đọc, thông báo đang nhập hoạt động thế nào giữa các server
  • Conduit là một dự án rất tuyệt, nhưng nếu không đọc mọi commit và issue thì có vẻ khó theo dõi trạng thái và tiến độ
    Việc tính năng Sliding Sync tích hợp gần đây có tiến triển là điều đáng kỳ vọng, vì nó sẽ khiến việc triển khai dễ hơn nhiều

  • Có ai biết nguyên nhân vì sao trong Matrix đôi khi tin nhắn cuối cùng không được giải mã cho đến khi có tin nhắn cuối mới được gửi, hoặc các tin nhắn xung quanh thì được nhưng chỉ một tin nhắn đơn lẻ bị giải mã thất bại không?

    • Tôi vẫn chưa hiểu hoàn toàn, nhưng không phải mọi tin nhắn đều được mã hóa bằng cùng một khóa
      Nếu tất cả client của tôi không kết nối cùng lúc, và người gửi cũng vậy, thì hai bên không thể trao đổi khóa với nhau. Khi đó mỗi client chỉ có thể giải mã một phần các tin nhắn mà nó có khóa. Ngoài ra, client chỉ trao đổi khóa với các client khác đã được xác minh
      Nếu nhìn vào thuộc tính session_id trong JSON gốc của tin nhắn, bạn có thể thấy các tin nhắn thuộc một session cụ thể, tức là trong thời gian người gửi đăng nhập trên một client, hoặc đều được giải mã, hoặc hoàn toàn không được giải mã. Trường hợp trước nghĩa là bạn có khóa của session đó, còn trường hợp sau nghĩa là bạn vẫn chưa nhận được khóa
  • Có thể tôi đã bỏ sót điều gì đó, nhưng trang này quá đơn giản và có vẻ giả định rằng người đọc đã biết Matrix là gì và cách dùng nó
    Trang dành khá nhiều thời gian cho nhiều cách cài đặt, nhưng không thấy phần hướng dẫn sử dụng chính server, chẳng hạn như dùng client

    • Liên kết đầu tiên trên trang dẫn tới matrix.org, và matrix.org có liên kết tới các client: https://matrix.org/ecosystem/clients/
      Có lẽ dùng Element là được
      Tôi nghĩ trang Conduit đang làm đúng. Không hẳn là giả định bạn biết Matrix là gì, mà gần hơn là giả định bạn có đủ khả năng hiểu để bấm vào liên kết nếu chưa biết
    • Nếu đã quen với Matrix.org thì landing page này khá ổn. Có vẻ nhắm tới các nhà phát triển Matrix
      Cá nhân tôi thích vì nó ngắn gọn, nêu rõ vấn đề muốn giải quyết, và nhanh chóng đưa ra lời kêu gọi hành động thực tế là liên kết tới kho Git
      Cũng có thể chính landing page đã được cập nhật nội dung mới sau bài viết gốc
    • Liên kết đã thay đổi à?
      Matrix là một mạng mở cho giao tiếp an toàn và phi tập trung. Người dùng của mọi homeserver Matrix có thể trò chuyện với người dùng trên mọi server Matrix khác. Thông qua bridge, họ cũng có thể giao tiếp với người dùng bên ngoài Matrix, chẳng hạn như cộng đồng Discord
      Và tôi không thấy thông tin cài đặt đâu cả
    • Matrix là một giao thức chat. Nó hoạt động giống như chat bằng Git và dùng cơ sở dữ liệu phân tán, gần với các trình nhắn tin nhóm như Mattermost hay Zulip hơn
      Conduit là phần mềm server, không phải ứng dụng dành cho người dùng cuối
      Thông tin thêm về Matrix: https://www.freie-messenger.de/en/matrix
  • Tôi tò mò Conduit có quan hệ thế nào với Synapse
    Dendrite được kiểm thử bằng https://github.com/matrix-org/sytest và còn có các issue kiểu như “vẫn là Synapse à?”, nhưng tôi không tìm thấy thảo luận liên quan trong Conduit. Thậm chí cũng không thấy thảo luận nào về lý do họ không muốn trở thành như Synapse

    • Conduit là một bản triển khai bên thứ ba của đặc tả server Matrix, viết bằng Rust. Synapse và Dendrite đều là các bản triển khai chính thức, và Dendrite ban đầu được khởi động với mục tiêu thay thế Synapse
      Điểm mạnh mà Conduit nêu ra là nhẹ và dễ cài đặt, điều này ngụ ý rằng Synapse thì không như vậy. Quan trọng hơn, nó đã trở thành một trường hợp kiểm chứng cho đặc tả server Matrix và trong nhiều năm đã đóng góp khá nhiều vào việc làm rõ các phần còn mơ hồ
    • SyTest chủ yếu được điều chỉnh để dùng cùng Synapse, và phía Dendrite dường như đang làm lớp bọc để gắn nó vào tích hợp liên tục của riêng họ
      Conduit cũng có thể tái sử dụng một phần công việc đó, nhưng theo tôi nhớ thì Conduit dùng GitLab còn Dendrite dùng GitHub Actions
      Riêng chuyện khác, hiện tại Conduit có vẻ không nhắm tới việc trở thành bản thay thế drop-in cho Synapse. Lần cuối tôi xem trong phòng Matrix, vẫn còn nhiều khoảng trống tính năng đáng chú ý