用caddy 和 hacdias/webdav 的 Docker 镜像提供 WebDAV 服务

Posted on Wed 11 January 2023 in howto

这个设置使用 caddy 反向代理 hacdias/webdav 服务器为网站提供 WebDAV 功能。

首先下载相应的docker镜像:

docker pull caddy
docker pull hacdias/webdav

新建目录webdav,在其中放置下列配置文件:

webdav的配置文件 config.yml:

# Server related settings
address: 127.0.0.1
port: 8000
auth: true
tls: false
prefix: /

# Default user settings (will be merged)
scope: .
modify: true
rules: []

cors:
  enabled: false
  credentials: false

users:
  - username: user
    password: "{bcrypt}password"
    scope: /data

caddy 的配置文件 Caddyfile:

your.domain.name {
    file_server
    root * /www
    encode gzip
}

https://your.domain.name:8888 {
    reverse_proxy 127.0.0.1:8000
}

docker-compose.yml:

version: '3'

services:
  webdav:
    image: hacdias/webdav
    restart: always
    network_mode: host
    volumes:
      - ./config.yml:/opt/webdav.config.yml
      - ./data:/data
    command:
      --config /opt/webdav.config.yml
    container_name: webdav
  caddy:
    image: caddy:latest
    restart: always
    network_mode: host
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./www:/www
      - ./caddy_data:/data
    container_name: caddy

在webdav下建立以下目录:

  • www,其中可放置网站的静态页面,例如一个简单的 index.html
  • caddy_data,用于保存 caddy 镜像运行时产生的数据
  • data,在其中存放需要WebDAV服务的内容,例如 TiddlyWikiJoplin笔记等。

启动docker容器:

docker-compose up -d