- Dù 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
Trong hạ tầng ở nhà thì tôi dùng
nfshoặcsmb, còn bên ngoài thì vẫn dùng WebDAV rất ổn, hahaÝ kiến Hacker News
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
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
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
Đâ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/
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
Nó hoạt động rất tốt
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
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
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
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ở
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
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
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 đó
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
Nó còn kèm cả trình web scraper, nên rất phù hợp để lưu Markdown cho chatbot LLM
Dạo này hầu hết vendor đều cung cấp khả năng tương thích với S3 API
Rốt cuộc có vẻ đây là câu chuyện về chính giao thức đó