16 điểm bởi GN⁺ 2025-10-27 | 2 bình luận | Chia sẻ qua WhatsApp
  • hạ tầng lấy S3 làm trung tâm gần như đã trở thành tiêu chuẩn thực tế cho lưu trữ tệp, trong các dự án cá nhân hoặc môi trường tự host, WebDAV vẫn được xem là một lựa chọn thay thế hữu ích
  • Tác giả cho biết đã mệt mỏi với sự phức tạp và tính phụ thuộc của S3, nên bắt đầu quay lại dùng WebDAV như một kho lưu trữ tệp đơn giản dựa trên xác thực
  • WebDAV được hỗ trợ sẵn trong nhiều công cụ như MacOS Finder, Windows Explorer, rclone, curl, nên khả năng tiếp cận rất cao
  • Trên các web server phổ biến như Apache, Nginx, Caddy, có thể cấu hình thư mục riêng tư cho từng người dùng một cách đơn giản, đồng thời cũng có thể tích hợp với xác thực LDAP
  • Với các nhà phát triển muốn thoát khỏi sự phụ thuộc vào đám mây và giữ hạ tầng quản lý tệp riêng của mình đơn giản, WebDAV vẫn là một lựa chọn thực tế

Vấn đề của lưu trữ tệp lấy S3 làm trung tâm

  • FTP đã biến mất, còn SFTP thì bất tiện vì phụ thuộc quá nhiều vào SSH và cơ chế xác thực kiểu Unix
    • Khi AWS S3 trở thành tiêu chuẩn thực tế của ngành, phần lớn web app được thiết kế với giả định sẽ kết nối tới S3
    • Điều này có lợi cho Amazon nhưng lại gây bất tiện cho những người dùng khác
  • Trong các dự án cá nhân hoặc môi trường tự host, những tính năng phức tạp của S3 là không cần thiết; chỉ cần một kho lưu trữ tệp có xác thực là đủ
    • Tác giả đã ngừng dùng S3 và chuyển sang WebDAV, đồng thời khuyến khích các nhà phát triển khác cũng cân nhắc lựa chọn này

Những ai phù hợp với WebDAV và các yêu cầu liên quan

  • WebDAV phù hợp với người dùng cá nhân hoặc dự án nhỏ cần truy cập HTTP ở cấp hệ thống tệp
    • Tính năng cần có: xác thực, ghi tệp, đồng bộ hiệu quả, mặc định riêng tư, dễ dàng chuyển sang công khai
    • Tính năng không cần: ACL nâng cao, signed URL, quản lý phiên bản, lưu trữ phân tầng, quy tắc vòng đời, quota, v.v.
  • Đây là những nhu cầu mà phần lớn lập trình viên cá nhân đều có thể đồng cảm, và không cần phải vận hành những hệ thống phức tạp như OpenStack Swift, CEPH, Minio
  • Đặc biệt, khi Minio gần đây loại bỏ phần lớn UI quản trị và chuyển sang yêu cầu tự viết file policy JSON thủ công, thì nó trở nên kém hiệu quả cho mục đích lưu trữ tệp đơn giản

Khả năng tiếp cận của WebDAV và hỗ trợ công cụ

  • WebDAV được hỗ trợ sẵn trên nhiều hệ điều hành và công cụ
    • MacOS Finder: nhập https://... trong menu “Kết nối tới máy chủ”
    • Windows Explorer: dùng tính năng “Map network drive” hoặc “Add a network location”
    • CLI và ứng dụng: rclone, curl, CyberDuck, WinSCP, Filezilla v.v.
  • Nhiều người cho rằng WebDAV đã lỗi thời, nhưng trên thực tế nó vẫn được hầu hết web server hỗ trợ mặc định
    • Có thể dễ dàng bật trên Apache, Nginx, Caddy, Lighttpd, IIS
    • OwnCloud, NextCloud cũng sử dụng truy cập dựa trên WebDAV

Ví dụ sử dụng WebDAV trong thực tế

  • WebDAV hiện đã được dùng cho đồng bộ danh bạ và lịch dưới dạng CardDAV, CalDAV
    • Nói cách khác, người dùng đang sử dụng dịch vụ dựa trên WebDAV hằng ngày mà có thể không nhận ra
  • Tác giả đã triển khai WebDAV trên nền Apache và tích hợp xác thực LDAP để cho phép từng người dùng truy cập thư mục riêng của mình
    • Caddy có thể cấu hình việc tách thư mục theo người dùng đơn giản hơn, nhưng Apache cũng hoàn toàn đáp ứng được
    • Dù cấu hình Apache hơi phức tạp, nó vẫn có thể đảm bảo quyền riêng tư trong môi trường nhiều người dùng

Ví dụ cấu hình WebDAV trên Apache

  • Các module cần thiết trong Apache: mod_dav, mod_dav_fs, mod_dav_lock
    • Bao gồm cả thiết lập BrowserMatch để tương thích với các client cũ
  • Các thành phần cấu hình chính
    • Dùng DavLockDB, DavMinTimeout, DavDepthInfinity để điều khiển hoạt động của WebDAV
    • Dùng AuthType Basic, AuthBasicProvider ldap để tích hợp xác thực LDAP
    • Dùng RewriteEngine để giới hạn người dùng đã đăng nhập chỉ được truy cập thư mục của chính họ
  • Nếu tạo thư mục trùng với tên người dùng dưới /usr/local/www/webdav, thì sau khi xác thực, người dùng đó có thể sử dụng không gian riêng của mình

Các trường hợp sử dụng WebDAV và khả năng mở rộng

  • Tác giả đang dùng WebDAV cùng với các ứng dụng sau
    • Joplin: ứng dụng đồng bộ ghi chú với máy chủ riêng
    • Keepassium: client Keepass cho iOS/MacOS
    • VLC, Infuse: streaming và phát media
    • rclone: đồng bộ tệp để xuất bản blog tĩnh (nhanh hơn NFS/SMB và không cần VPN)
  • Ngoài ra, tác giả còn phát hiện một dự án mới tên là Altmount
    • Cho phép “mount” trực tiếp nội dung đăng trên Usenet mà không cần tải xuống
    • Điểm thú vị là có thể truy cập Usenet dễ dàng ở tốc độ nhiều gigabit

2 bình luận

 
kimjoin2 2025-10-27

Trong hạ tầng ở nhà thì tôi dùng nfs hoặc smb, còn bên ngoài thì vẫn dùng WebDAV rất ổn, haha

 
GN⁺ 2025-10-27
Ý kiến Hacker News
  • Tôi đã viết cả client và server WebDAV cho rclone
    Nhờ đó có thể đồng bộ hoặc mount giữa các server WebDAV, đồng thời cũng có thể xuất hệ thống tệp cục bộ, S3, Google Drive... thành server WebDAV
    RFC tốt hơn FTP, nhưng vẫn còn rất nhiều hành vi không chuẩn do khác biệt giữa các cách triển khai, nên phải cần nhiều cách lách
    Theo mặc định thì không thể thiết lập thời gian sửa đổi hay hash, nhưng các triển khai như ownCloud, Nextcloud có hỗ trợ việc này
    Vì dựa trên HTTP và TLS nên nhanh hơn SFTP rất nhiều
    • Không biết nếu so với NFS thì sẽ thế nào
      NFS cũng dựa trên TCP và có thể mã hóa, nhưng Windows hỗ trợ kém, còn chỉ macOS là hỗ trợ sẵn
      Trong khi đó WebDAV hoạt động tốt trên cả hai nền tảng
  • Sẽ rất tuyệt nếu Android hỗ trợ sẵn mount WebDAV
    Hiện tại tôi dùng davx5, nhưng truy cập tệp hơi bất tiện
    Nó rất hợp với hạ tầng mTLS mà tôi đã dựng sẵn, nên tôi thích WebDAV hơn
    Phía server thì tôi đang dùng sftpgo
  • Tiêu đề là “I hate S3”, nhưng S3 vẫn ổn nếu dùng đúng chỗ
    Đây không chỉ là công nghệ riêng của Amazon; còn có các dự án mã nguồn mở được EU Horizon hỗ trợ như Garage S3
    https://garagehq.deuxfleurs.fr/
    • Tôi cũng muốn thử viết một bài kiểu “Tôi ghét việc AWS S3 SDK trên thực tế đã trở thành tiêu chuẩn giao thức web
  • Thực ra có thể bạn đã dùng WebDAV rồi
    Ví dụ, Tailscale Drive Share dựa trên WebDAV, và kho lưu trữ tệp của Fastmail cũng có thể truy cập qua WebDAV
    WebDAV là một công nghệ khá hay
    • Tôi luôn dùng WebDAV khi mount instance CopyParty
      Nó hoạt động rất tốt
  • Tôi ước gì giao thức 9p được dùng rộng rãi hơn
    Cả Windows lẫn macOS đều có hỗ trợ tích hợp, nhưng người dùng phổ thông không thể tiếp cận
    Windows chỉ dành cho WSL, còn macOS chỉ dành cho ảo hóa, nên khá đáng tiếc
    Sẽ rất tuyệt nếu có thể mount 9p trực tiếp từ UI
  • Vì tôi tin WebDAV vẫn còn sống, nên gần đây tôi đã công bố bản WIP của module WebDAV cho nginx
    Nó tương thích với client NextCloud (desktop/Android), đồng thời cũng dùng được trong Gnome Online Accounts và Nautilus
    https://codeberg.org/lunae/dav-next
    Hiện vẫn chưa có gói cài đặt hay bản phát hành nhị phân, nhưng rất hoan nghênh phản hồi
  • Tôi nghĩ WebDAV là một công nghệ bền bỉ vì nó đơn giản và dễ triển khai
    Trên nền tảng đám mây của công ty chúng tôi cũng đang phát triển tính năng cho phép truy cập như một ổ đĩa thông qua WebDAV
    Có thể tận dụng nguyên hạ tầng dựa trên HTTP, nên hầu như không có thêm độ phức tạp nào
    • Hoàn toàn đồng ý
      Công nghệ nhàm chán nhưng ổn định cuối cùng mới là thứ tồn tại lâu dài
      Hơn nữa đây còn là một tiêu chuẩn mở
  • Tôi không đồng ý với câu “FTP đã chết”
    Rất nhiều dịch vụ shared hosting vẫn hướng dẫn tải lên bằng FTP
    SSH key hay SFTP cũng có thể dùng, nhưng trong tài liệu vẫn còn nhắc đến các công cụ FTP như FileZilla
    Hướng dẫn FTP của OVHcloud
    • Có lẽ tôi đã không dùng FTP thuần suốt 15 năm rồi
      Thật khó tin là vẫn còn dùng một giao thức không mã hóa
      Những dịch vụ hosting như vậy chắc tôi sẽ loại ngay
    • Khi shared hosting dần biến mất thì FTP cũng đang suy tàn theo
      Tôi nhớ thời nó từng được dùng để phân phối phần mềm hoặc trong giới học thuật, nhưng giờ gần như chỉ còn lại những mục đích cuối cùng đó
  • Tôi đã tạo một server WebDAV đơn giản bằng Sabre để đồng bộ cơ sở dữ liệu Devonthink
    Nó cho phép đồng bộ giữa nhiều người dùng iCloud account khác nhau, đồng thời không cần đăng ký Dropbox
    Nó nhanh hơn CloudKit và cũng ít gánh nặng bảo trì hơn
    Có vẻ tôi sẽ còn dùng nó rất lâu nữa
    • Đồng bộ WebDAV của Devonthink trên iOS nhanh, ổn định và không cần thuê bao
      Nó còn kèm cả trình web scraper, nên rất phù hợp để lưu Markdown cho chatbot LLM
  • Có vẻ tác giả đã nhầm lẫn giữa S3 API và bản thân S3
    Dạo này hầu hết vendor đều cung cấp khả năng tương thích với S3 API
    • Dù ở cuối bài có nhắc đến server tương thích S3
      Rốt cuộc có vẻ đây là câu chuyện về chính giao thức đó