0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Triển Khai WebDAV An Toàn Với Docker Chỉ Trong Vài Phút

Đăng vào 1 ngày trước

• 3 phút đọc

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.

👉 Xem trên GitHub


📖 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.

Copy
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):

Copy
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:

Copy
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

  1. Tạo một tệp .env
Copy
WEBDAV_OPERATIONS="GET OPTIONS PROPFIND"
LDAP_ENABLED=false
OAUTH_ENABLED=false
BASIC_AUTH_ENABLED=false
  1. Tạo tệp docker-compose.yaml
Copy
services:
  webdav:
    image: ghcr.io/vaggeliskls/webdav-server:latest
    ports:
      - 8080:8080
    volumes:
      - ./webdav-data:/var/lib/dav/data
    env_file:
      - .env
  1. Chạy máy chủ
Copy
docker compose up -d
  1. 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ì?
Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào