19 điểm bởi GN⁺ 2025-10-25 | 1 bình luận | Chia sẻ qua WhatsApp
  • Twake Drive là một nền tảng lưu trữ đám mây mã nguồn mở cung cấp các tính năng lưu trữ và chia sẻ tệp tương tự Google Drive
  • Hỗ trợ triển khai dựa trên Docker, nên có thể chạy dễ dàng trong môi trường cục bộ, đồng thời sử dụng Node.js và MongoDB làm ngăn xếp công nghệ chính
  • Có kiến trúc tách biệt frontend và backend, cung cấp môi trường phát triển dựa trên Yarntính năng thiết lập đường dẫn lưu trữ tệp cục bộ
  • Được phát hành theo giấy phép Affero GPL v3, cho phép doanh nghiệp hoặc tổ chức tự do tùy biến theo hình thức tự host

Tổng quan dự án

  • Twake Drive là giải pháp thay thế Google Drive mã nguồn mở do Linagora phát triển, cung cấp khả năng vận hành các tính năng lưu trữ, chia sẻ và cộng tác tệp trên máy chủ riêng
    • Hướng đến chủ yếu các tổ chức muốn tránh phụ thuộc vào dịch vụ đám mây và vẫn duy trì quyền sở hữu dữ liệu cùng khả năng kiểm soát bảo mật
  • Kho mã nguồn công khai trên GitHub đã đạt hơn 1.000 saokhoảng hơn 70 fork, đồng thời vẫn đang được bảo trì tích cực
  • Dự án áp dụng giấy phép AGPL-3.0, nên khi chỉnh sửa và phân phối lại mã nguồn phải giữ nguyên các điều kiện giấy phép tương tự

Tính năng chính và ngăn xếp công nghệ

  • Twake Drive hoạt động dựa trên Node.js (18.x trở lên), MongoDB, Yarn, và được thiết kế với kiến trúc tách biệt frontend và backend
    • Frontend được chạy từ thư mục tdrive/frontend/ bằng yarn dev:start
    • Backend được khởi chạy từ tdrive/backend/node/ với yarn dev sau khi thiết lập biến môi trường
  • Cung cấp tùy chọn triển khai đơn giản bằng Docker Compose (docker-compose.minimal.yml), giúp thử nghiệm cục bộ và triển khai nội bộ trở nên thuận tiện
  • Có thể dễ dàng chạy cơ sở dữ liệu bằng lệnh khởi chạy container MongoDB docker run -p 27017:27017 -d mongo
  • Có thể tinh chỉnh chi tiết cấu hình thông qua tệp tdrive/backend/node/config/development.json

Cấu trúc phát triển và triển khai

  • Twake Drive tách biệt frontend (dựa trên React)backend (dựa trên Node.js), đồng thời cho phép chỉ định trực tiếp đường dẫn lưu trữ tệp cục bộ
    • Thiết lập vị trí lưu tài liệu thông qua biến môi trường STORAGE_LOCAL_PATH
  • Hỗ trợ chức năng publish-subscribe trong môi trường cục bộ với thiết lập PUBSUB_TYPE=local
  • Ứng dụng mặc định chạy trên cổng 3000, với cấu trúc được tối ưu cho môi trường phát triển và kiểm thử
  • Bao gồm tệp cấu hình Docker Bake (docker-bake.hcl) và thiết lập GitHub Actions cho CI/CD, hỗ trợ build và kiểm thử tự động

Mã nguồn và tình trạng kho lưu trữ

  • Kho mã gồm 882 commit, 61 nhánh46 thẻ, cho thấy lịch sử phát triển được duy trì tích cực
  • Tỷ lệ ngôn ngữ chính gồm TypeScript 58.9%, JavaScript 32.6%, SCSS 3.7%, CSS 2.2%, HTML 1.3%, Less 1.0%

Giấy phép và khả năng ứng dụng

  • Twake Drive được phát hành theo giấy phép Affero GPL v3, nên khi chỉnh sửa và phân phối lại mã nguồn sẽ đi kèm cùng nghĩa vụ công khai tương ứng
  • Doanh nghiệp có thể dựa trên đó để xây dựng hệ thống lưu trữ đám mây nội bộ chuyên dụng hoặc mở rộng theo mô hình SaaS
  • Đây được đánh giá là một lựa chọn thay thế có thể đồng thời đạt được giảm chi phí của dịch vụ đám mây thương mại và đảm bảo chủ quyền dữ liệu

1 bình luận

 
GN⁺ 2025-10-25
Ý kiến trên Hacker News
  • Nhiều người ở đây nói về tính năng bắt buộc phải có hay chuyện sao lưu, nhưng điều thực sự quan trọng là có xây dựng được cộng đồng và duy trì nó trong thời gian dài hay không
    Vì lưu trữ đám mây mã nguồn mở rất dễ biến mất khi người bảo trì kiệt sức, nên mô hình kinh doanh bền vững hoặc nền tảng cộng tác viên quan trọng không kém gì checklist kỹ thuật
    Ngoài ra, khả năng tương tác (interoperability) cũng bị đánh giá thấp. Nếu hỗ trợ WebDAV hay S3 và tích hợp được với các hệ thống xác thực hiện có, các nhóm sẽ dễ thử hơn nhiều
    Cuối cùng, mọi người muốn một dịch vụ không biến mất sau khi “giai đoạn trăng mật” kết thúc. Điều đó khó hơn rất nhiều so với việc thêm một thanh tiến trình

    • Có thể đó là điểm yếu trong mô hình tổ chức của công cụ, nhưng tôi không muốn tham gia cộng đồng. Tôi chỉ muốn nó hoạt động tốt thôi
      Tôi dùng Syncthing, chưa từng bị bảo phải tham gia cộng đồng, mà nó vẫn chạy rất ổn
      Có vẻ Syncthing được một công ty tên là Kastelo tài trợ chi phí phát triển bằng cách cung cấp hỗ trợ doanh nghiệp
      Tôi cũng điều hành một công ty tư vấn mã nguồn mở, và ngay cả không có cộng đồng thì hợp đồng doanh nghiệp vẫn đủ để duy trì
      Cộng đồng cũng tốt, nhưng về dài hạn tôi nghĩ mô hình kinh doanh và chiến lược marketing còn quan trọng hơn
    • Cá nhân tôi cho rằng tính tương thích S3 là cốt lõi của object storage
      Nếu một hệ thống hỗ trợ S3 API thì gần như bất kỳ loại lưu trữ nào cũng dễ thay thế. Backblaze, Wasabi, local S3 API, v.v. đa số đều có thể thay thế kiểu drop-in
    • Tôi không hiểu vì sao cộng đồng lại quan trọng đến vậy. Nếu đó là công cụ giải quyết vấn đề, thì cộng đồng chỉ là phương tiện để bảo trì thôi
  • Trong các giải pháp đồng bộ tệp self-hosted mà tôi từng dùng, Seafile là thứ dùng được nhất
    Nhưng việc nâng cấp máy chủ vẫn khá phiền. NextCloud hay các công cụ tương tự, theo tiêu chuẩn của tôi, đúng là ở mức thảm họa hoàn toàn

    • Tôi tò mò vì sao bạn nghĩ là thảm họa. Ở công ty tôi, chúng tôi đã dùng NextCloud suốt 3 năm mà không có vấn đề gì
      Có đủ mọi plugin cần thiết, hiệu năng tốt, đồng bộ hoàn hảo. Gần như không có lý do gì để thử giải pháp khác
    • Tôi chạy Seafile bằng bản Docker, chỉ cần đổi tag là nâng cấp rất dễ
      Trước đây NextCloud bị chậm với các repository lớn và cần máy mạnh hơn
      Seafile chạy tốt ngay cả trên bo ARM có 2GB RAM
    • Gần đây tôi cài Seafile trực tiếp lên server, và đã dành rất nhiều công sức để xây dựng chiến lược sao lưu và bảo mật
      Tôi cũng kiểm thử rất kỹ, và tốc độ đồng bộ cùng độ phản hồi thật sự đáng ngạc nhiên
      Giờ tôi đã chuyển toàn bộ file khỏi Google Drive và dùng nó làm đám mây chính
    • Resilio cũng ổn. Syncthing cũng tốt, nhưng theo trải nghiệm của tôi thì Resilio nhanh hơn và vượt NAT tốt hơn
    • Tôi cũng đã dùng Seafile và Seadrive nhiều năm, và nó hoạt động rất tốt với ánh xạ ổ đĩa subst
  • Nếu đặt tên là Twake Dwive thì chắc sẽ vui hơn

  • Như những người khác đã hỏi, tôi muốn biết nó so với NextCloud hay ownCloud thế nào. Và cũng muốn biết có client cho Windows/Mac/Mobile không

    • ownCloud có đủ client cho từng nền tảng, nhưng có quá nhiều lỗi vặt và vấn đề độ tin cậy trên mỗi nền tảng nên tôi không dùng nổi
    • Tôi đã thử cài NextCloud, và đó là một trải nghiệm đau khổ hoàn toàn
    • Theo trải nghiệm của tôi, NextCloud giống như một con quái vật PHP cồng kềnh. Hiệu năng cũng kém, còn Twake có vẻ nhẹ hơn nhiều và phạm vi rõ ràng hơn
  • Sống còn của một công cụ drive mã nguồn mở phụ thuộc vào ba điều

    1. Đồng bộ đơn giản và không bao giờ gây bất ngờ
    2. Xử lý xung đột mà người không rành kỹ thuật cũng hiểu được
    3. Nâng cấp không gặp sự cố
      Nếu Twake hỗ trợ S3 và LDAP mà vẫn làm tốt các điểm này thì có tiềm năng
      Nhưng điều thực sự khó là niềm tin và tài liệu hóa. Cần một threat model rõ ràng, hướng dẫn di chuyển từ Drive hay Dropbox, và một CLI nhỏ có thể chạy cả trong môi trường headless
    • Tôi muốn thêm điều thứ tư là dễ xác minh bản sao lưu
      Trước đây ở công ty tôi, sao lưu vẫn được bật, nhưng đến lúc khôi phục thì hóa ra tất cả đều đã hỏng. Từ sau đó, xác minh sao lưu là ưu tiên số một
    • Tôi muốn có nút “đồng bộ ngay bây giờ” thủ công. Trong Google Drive, trạng thái đồng bộ thường không rõ ràng nên khá bực bội
  • Tôi thấy khó hiểu khi một ứng dụng hiệu năng cao như thế này lại được làm bằng 58.9% TypeScript và 32.6% JavaScript

    • Thế thì 91.5% là JavaScript còn gì? Đùa thôi, ý là TypeScript không phải ngôn ngữ thật
    • Ứng dụng này là loại I/O-bound, nên chạy bằng TS/JS cũng không vấn đề gì
    • Có vẻ backend là TS, frontend là JS. Tôi thì tách test bằng JS và code ứng dụng bằng TS
      Tôi nghĩ phần ít bị bottleneck hơn tốc độ ngôn ngữ mới là điều quan trọng
    • Nhìn cách các startup dạo này xây dựng kiến trúc hướng sự kiện bằng microservice TS/JS thì lựa chọn đó cũng không lạ
  • Hơi lạc đề một chút, nhưng có cách nào để Viber hay WhatsApp dùng loại lưu trữ sao lưu khác thay cho Google Drive không? Tôi tò mò liệu có thể root máy rồi đánh lừa interface theo kiểu nào đó không

    • Trên Android thì có thể làm đơn giản bằng share-target. Làm bằng PWA cũng dễ
  • Những hệ thống như thế này có thực sự cần cơ sở dữ liệu không?
    Trên Unix, có vẻ chỉ cần CRUD người dùng và tệp, cộng với phân quyền là đủ; có phần mềm cũ nào kiểu bọc mấy thứ đó bằng UI hay API không? Kể cả dựa trên giao thức SAMBA cũng được?

    • Để triển khai các tính năng như lịch sử phiên bản hay URL chia sẻ thì cần DB.
      Ngoài ra, nếu muốn giới hạn theo nhóm người dùng thì cũng nhanh chóng chạm mức giới hạn số nhóm (65536)
    • Bạn có thể xem Cockpit. Ở Cockpit Applications có hầu hết các chức năng như duyệt file, chỉnh quyền, upload/download, v.v.
    • Để cache thao tác đĩa hay đồng bộ đa node thì cần lưu trữ metadata. Cuối cùng thì khó tránh khỏi việc dùng DB
    • Tôi cũng từng nghĩ về chuyện đó, và sẽ rất hay nếu có một giao diện kiểu Google Drive viết bằng Python và fsspec để xử lý local hoặc nhiều filesystem khác nhau như S3/SSH
    • Dùng DB thì dễ join usersdocuments, hoặc tận dụng index và transaction của MongoDB
      Việc quản lý metadata phiên bản cũng đơn giản hơn, và trên Windows cũng dễ hack hơn
  • Có lẽ tôi khác không khí chung trên HN, nhưng với tôi tính năng quan trọng nhất là tìm kiếm
    Khi bạn lưu trữ đến hàng TB dữ liệu thì tìm một bức ảnh thôi cũng đã khó
    Cần một tính năng phân tích hình ảnh để có thể tìm kiểu như “hai người trên phố Nothing Street”
    Hiện tại Google vượt trội áp đảo ở điểm này, nhưng tôi hy vọng các đám mây khác rồi cũng sẽ bắt kịp

  • Tôi khuyên nên thử Syncthing một lần

    • Tôi cũng đã dùng Syncthing từ sau khi hết ưu đãi sinh viên của Dropbox. Nhiều năm rồi nó vẫn hoạt động ổn định
      Chỉ là trải nghiệm trên di động vẫn còn hơi thô. Dù vậy, khi cần gấp thì vẫn có thể lấy file qua giao diện web
    • Syncthing rất tuyệt, nhưng không phù hợp để xử lý tệp dung lượng lớn trên di động. Cách đồng bộ toàn bộ khiến nó có những hạn chế
    • Đây là công cụ FOSS đáng tin cậy nhất mà tôi dùng. Nó đơn giản là hoạt động tốt, và chạy được trên mọi nền tảng