Triển Khai WebDAV An Toàn Với Docker Chỉ Trong Vài Phút
Triển khai một máy chủ WebDAV nhẹ và an toàn với Docker chỉ trong vài phút. Giải pháp container này hỗ trợ xác thực Basic, LDAP và OAuth, lý tưởng cho chia sẻ tệp tự lưu trữ, sao lưu và truy cập từ xa cho doanh nghiệp với thiết lập tối thiểu.
📖 WebDAV Là Gì?
WebDAV (Web Distributed Authoring and Versioning) là một phần mở rộng của HTTP cho phép bạn quản lý tệp trên máy chủ như tải lên, tải xuống, chỉnh sửa, di chuyển và chia sẻ như thể chúng là bộ nhớ cục bộ. WebDAV được hỗ trợ rộng rãi trên các hệ điều hành, công cụ sao lưu và ứng dụng di động.
Dự án này cung cấp một máy chủ WebDAV hiện đại, được container hóa với các đặc điểm sau:
- Dễ dàng triển khai với Docker 🐳
- Linh hoạt trong việc xác thực 🔐
- Lý tưởng cho việc tự lưu trữ và sử dụng doanh nghiệp 🏢
📦 Các Yêu Cầu Cần Có
Trước khi bắt đầu, hãy đảm bảo bạn đã có:
- Docker phiên bản 20.0 trở lên
- Kiến thức cơ bản về container và WebDAV
🚀 Các Tính Năng Chính
- Triển Khai Dễ Dàng: Thiết lập một máy chủ WebDAV hoàn toàn hoạt động nhanh chóng bằng cách sử dụng Docker.
- Xác Thực Linh Hoạt:
- Xác thực cơ bản 🛡️
- Xác thực LDAP 🛡️
- Xác thực OAuth 🛡️
- Sẵn Sàng Cho Proxy: Dễ dàng tích hợp với các proxy ngược để thêm nhiều lớp xác thực.
- Xác Thực Tùy Chọn: Máy chủ chạy mà không cần xác thực theo mặc định, mang lại sự linh hoạt cho thiết lập của bạn.
🔧 Cài Đặt Xác Thực
Bạn có thể kích hoạt nhiều cơ chế xác thực khác nhau bằng cách sử dụng các biến môi trường trong tệp .env
. Dưới đây là cách cấu hình từng loại:
🔐 Xác Thực Cơ Bản
Xác thực được kiểm soát thông qua các biến môi trường trong tệp .env
.
BASIC_AUTH_ENABLED=true
BASIC_AUTH_REALM=WebDAV
BASIC_USERS=alice:alice123 bob:bob123
🔐 Xác Thực OAuth
Cấu hình xác thực OAuth (ví dụ với Keycloak):
OAUTH_ENABLED=true
OIDCProviderMetadataURL="http://keycloak/keycloak-auth/realms/master/.well-known/openid-configuration"
OIDCRedirectURI="http://my-domain.local/redirect_uri"
OIDCCryptoPassphrase="randomly_generated_secure_passphrase"
OIDCClientID="webdav-client"
OIDCClientSecret="ABC123def456GHI789jkl0mnopqrs"
OIDCProviderTokenEndpointAuth="client_secret_basic"
OIDCRemoteUserClaim="preferred_username"
OIDCScope="openid email profile"
OIDCXForwardedHeaders="X-Forwarded-Host"
Nhiều ví dụ với các nhà cung cấp danh tính khác có thể được tìm thấy trên trang GitHub của mod_auth_openidc.
🔐 Xác Thực LDAP
Tích hợp LDAP để quản lý người dùng tập trung:
LDAP_ENABLED=true
LDAP_URL=ldaps://ldap.example.com
LDAP_ATTRIBUTE=uid
LDAP_BASE_DN=ou=users,dc=example,dc=com
LDAP_BIND_DN=uid=admin,ou=users,dc=example,dc=com
LDAP_BIND_PASSWORD=securepassword
📑 Các Phương Thức WebDAV và Kiểm Soát Truy Cập
Kiểm soát các phương thức cho phép với biến WEBDAV_OPERATIONS
.
Phương Thức | Mục Đích |
---|---|
GET | Tải xuống một tệp hoặc tài nguyên |
OPTIONS | Khám phá các phương thức được hỗ trợ bởi máy chủ |
PROPFIND | Liệt kê nội dung thư mục, lấy siêu dữ liệu tài nguyên |
PUT | Tải lên một tệp |
DELETE | Xóa một tệp hoặc tài nguyên |
MKCOL | Tạo một bộ sưu tập (thư mục) mới |
COPY | Sao chép một tài nguyên |
MOVE | Di chuyển hoặc đổi tên một tài nguyên |
LOCK | Khóa một tài nguyên |
UNLOCK | Mở khóa một tài nguyên |
PROPPATCH | Thiết lập hoặc loại bỏ thuộc tính tài nguyên |
REPORT | Truy vấn thông tin (khách hàng WebDAV nâng cao) |
PATCH | Cập nhật một phần của tài nguyên |
HEAD | Lấy chỉ các tiêu đề (không có nội dung) |
POST | Gửi dữ liệu (hiếm khi sử dụng trong WebDAV, đôi khi để khóa) |
⚡ Ví Dụ Sử Dụng
- Tạo một tệp
.env
WEBDAV_OPERATIONS="GET OPTIONS PROPFIND"
LDAP_ENABLED=false
OAUTH_ENABLED=false
BASIC_AUTH_ENABLED=false
- Tạo tệp
docker-compose.yaml
services:
webdav:
image: ghcr.io/vaggeliskls/webdav-server:latest
ports:
- 8080:8080
volumes:
- ./webdav-data:/var/lib/dav/data
env_file:
- .env
- Chạy máy chủ
docker compose up -d
- Truy cập qua: http://localhost:8080
Ví dụ này chạy một máy chủ không cần xác thực. Để sử dụng trong sản xuất, hãy kích hoạt HTTPS và xác thực.
📚 Tài Liệu Tham Khảo
- Docker Apache WebDAV
- WebDAV là gì?