Debian12 安装 WebDAV 服务
第一步 新建脚本
Section titled “第一步 新建脚本”#!/usr/bin/env bash# set -euo pipefail
# ===== 配置变量(如需修改请替换下面变量) =====VERSION=v5.10.1 # webdav release 版本INSTALL_DIR=/usr/local/webdav # 安装目录BIN=$INSTALL_DIR/webdav # 二进制执行文件CONFIG=$INSTALL_DIR/config.yml # 配置文件DATA_DIR=/data/webdav # 数据存储目录SERVICE=/etc/systemd/system/webdav.service # systemd 单元文件USERNAME=webdav # 运行服务的系统用户WEB_PORT=10020 # WebDAV 服务监听端口# ============================================
# 1. 创建安装目录mkdir -p "${INSTALL_DIR}"cd /tmp
# 2. 下载对应 release 的 linux-amd64 包# 根据项目 Releases 页面中 asset 名称:linux-amd64-webdav.tar.gzwget https://gh-proxy.org/https://github.com/hacdias/webdav/releases/download/${VERSION}/linux-amd64-webdav.tar.gz
# 3. 解压tar -xzf linux-amd64-webdav.tar.gzrm linux-amd64-webdav.tar.gz
# 4. 移动二进制到 INSTALL_DIRsudo mv webdav "${BIN}"sudo chmod 755 "${BIN}"
# 5. 创建运行用户if ! id -u "${USERNAME}" >/dev/null 2>&1; then sudo useradd --system --no-create-home --shell /usr/sbin/nologin "${USERNAME}"fi
# 6. 创建数据目录 & 修改权限sudo mkdir -p "${DATA_DIR}"sudo chown -R "${USERNAME}:${USERNAME}" "${DATA_DIR}"
# 7. 创建默认配置文件(如果不存在)if [ ! -f "${CONFIG}" ]; then sudo tee "${CONFIG}" > /dev/null <<EOF# WebDAV configurationaddress: 0.0.0.0port: ${WEB_PORT}
tls: false
directory: ${DATA_DIR}
permissions: CRUD
users: - username: admin password: admin12345 directory: ${DATA_DIR} permissions: CRUDEOF sudo chmod 600 "${CONFIG}"fi
# 8. 创建 systemd 服务单元sudo tee "${SERVICE}" > /dev/null <<EOF[Unit]Description=WebDAV Server (hacdias/webdav)After=network.target
[Service]Type=simpleUser=${USERNAME}Group=${USERNAME}ExecStart=${BIN} --config ${CONFIG}Restart=on-failure
[Install]WantedBy=multi-user.targetEOF
# 9. 启用 & 启动服务sudo systemctl daemon-reloadsudo systemctl enable --now webdav
echo "✅ WebDAV 已启动,监听端口 ${WEB_PORT}"echo " 配置文件: ${CONFIG}"echo " 数据目录: ${DATA_DIR}"第二步 刷新目录权限
Section titled “第二步 刷新目录权限”sudo mkdir -p /data/webdav/clashsudo chown -R webdav:webdav /data/webdavsudo chmod -R 755 /data/webdav第三步 配置 nginx
Section titled “第三步 配置 nginx”server { listen 80; server_name webdav.haha.me;
return 301 https://$host$request_uri;}
server { listen 443 ssl; server_name webdav.haha.me;
ssl_certificate /usr/local/nginx/conf/ssl/xxx/cert.crt; ssl_certificate_key /usr/local/nginx/conf/ssl/xxx/cert.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5;
location / { proxy_pass http://127.0.0.1:10020; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
gzip off; proxy_set_header Content-Length $content_length; proxy_set_header Transfer-Encoding ""; client_max_body_size 0; }}