ugeek/webdav

By ugeek

Updated over 2 years ago

webdav server based on debian:11.5-slim and Alpine Linux with nginx server

Image

1M+

Mount your webdav server

Example configuration

  • Username: webdav
  • Password: webdav
  • port: 80
  • root path: $HOME/docker/webdav
  • --restart=unless-stopped : always running unless you stop it

Raspberry Pi or ARM

docker run --name webdav \
  --restart=unless-stopped \
  -p 80:80 \
  -v $HOME/docker/webdav:/media \
  -e USERNAME=webdav \
  -e PASSWORD=webdav \
  -e TZ=Europe/Madrid  \
  -e UDI=1000 \
  -e GID=1000 \
  -d  ugeek/webdav:arm

amd64

docker run --name webdav \
  --restart=unless-stopped \
  -p 80:80 \
  -v $HOME/docker/webdav:/media \
  -e USERNAME=webdav \
  -e PASSWORD=webdav \
  -e TZ=Europe/Madrid  \
  -e UDI=1000 \
  -e GID=1000 \
  -d  ugeek/webdav:amd64

i386

docker run --name webdav \
  --restart=unless-stopped \
  -p 80:80 \
  -v $HOME/docker/webdav:/media \
  -e USERNAME=webdav \
  -e PASSWORD=webdav \
  -e TZ=Europe/Madrid \
  -e UDI=1000 \
  -e GID=1000 \
  -d  ugeek/webdav:i386

Example docker-compose + reverse proxy and traefik

version: '2'
services:
  webdav:
    container_name: webdav
    image: ugeek/webdav:arm      ### ex. arm image
    ports:
      - 80:80
    volumes:
      - $HOME/docker/webdav:/media
    environment:
      - USERNAME=webdav
      - PASSWORD=webdav
      - UID=1000
      - GID=1000
      - TZ=Europe/Madrid
    networks:
      - web
    labels:
      - traefik.backend=webdav                                                                                               
      - traefik.frontend.rule=Host:webdav.your_domain.duckdns.org
      - traefik.docker.network=web
      - traefik.port=80
      - traefik.enable=true
      # Adding in secure headers
      - traefik.http.middlewares.securedheaders.headers.forcestsheader=true
      - traefik.http.middlewares.securedheaders.headers.sslRedirect=true
      - traefik.http.middlewares.securedheaders.headers.STSPreload=true
      - traefik.http.middlewares.securedheaders.headers.ContentTypeNosniff=true
      - traefik.http.middlewares.securedheaders.headers.BrowserXssFilter=true
      - traefik.http.middlewares.securedheaders.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.securedheaders.headers.stsSeconds=63072000
      - traefik.http.middlewares.securedheaders.headers.frameDeny=true
      - traefik.http.middlewares.securedheaders.headers.browserXssFilter=true
      - traefik.http.middlewares.securedheaders.headers.contentTypeNosniff=true
networks:                                                                                                                   
  web:
   external: true 

Next

docker-compose up -d

Logs

view logs

docker exec -it webdav cat /var/log/nginx/webdav_access.log

view logs in real time

docker exec -it webdav cat /var/log/nginx/webdav_access.log

view error logs

docker exec -it webdav /var/log/nginx/webdav_error.log

enter the docker

docker exec -it webdav bash

Last update: 12/12/2020

WebDAV + nginx/1.19.7 + Alpine Linux

Alpine Linux tag

for amd64
docker run -d \
    -v $HOME/Download:/data/download \
    -v /media:/data/media \
    -e USERNAME=webdav \
    -e PASSWORD=webdav \
    -p 80:80 \
    --restart=unless-stopped \
    --name=webdav \
    ugeek/webdav:amd64-alpine

for Raspberry and ARM

docker run -d \
    -v $HOME/Download:/data/download \
    -v /media:/data/media \
    -e USERNAME=webdav \
    -e PASSWORD=webdav \
    -p 80:80 \
    --restart=unless-stopped \
    --name=webdav \
    ugeek/webdav:arm-alpine

For i386

docker run -d \
    --name=webdav \
    -v $HOME/Download:/data/download \
    -v /media:/data/media \
    -e USERNAME=webdav \
    -e PASSWORD=webdav \
    -p 80:80 \
    --restart=unless-stopped \
    ugeek/webdav:i386-alpine

Multiusers

user and pass, in config file mount /opt/nginx/conf/htpasswd:ro

docker run -d \
    --name=webdav \
    -v $HOME/Download:/data/download \
    -v /media:/data/media \
    -v $HOME/docker/webdav/htpasswd:/opt/nginx/conf/htpasswd:ro \
    -p 8001:80 \
    --restart=unless-stopped \
   ugeek/webdav:amd64-alpine

Docker-compose

version: "2"
services:
  webdav:
    container_name: webdav
    image: ugeek/webdav:amd64-alpine
    network_mode: bridge
    restart: unless-stopped
    volumes:
      # data
      - $HOME/Download:/data/download
      - /media:/data/media
      # user and password
      - $HOME/docker/webdav/htpasswd:/opt/nginx/conf/htpasswd:ro
    ports:
      - 80:80

New users

fill in the username and password

htpasswd -nb user password >> $HOME/docker/webdav/htpasswd

Fork of:

Docker Pull Command

docker pull ugeek/webdav