Skip to content

sfuhrm/docker-nginx-webdav

 
 

Repository files navigation

Nginx WebDav Server (built from the Alpine image)

Docker Image CI Docker Image Size License: MIT

Incredibly secure, fast and light WebDav Server, built from Alpine image - bare minimum with no bells and whistles. The image is only around 5.3 MB in size and the container takes around 10 MB of memory.

This is a fork of https://github.com/maltokyo/docker-nginx-webdav with the following changes:

  • reducing the image layers and size ( maltokyos image: Docker Image Size, this image: Docker Image Size),
  • filesystem secrets are never put in an environment variable,
  • replacing the base Debian image with Alpine Linux,
  • improving the entrypoint script,
  • adding Github Actions build / push with automatic daily image building.

Docker tags

Different tags mean different versions. All tags on Dockerhub have passed the internal tests. Usually you want to go with the nightly version to get the newest Alpine Linux base.

Overview of tag dates:

Tag Date
nightly Dockerhub Nightly Push
master Dockerhub Master Push
latest Dockerhub Latest Push

The meanings of the tags:

Tag Meaning
nightly Nightly build of the master branch, usually up-to-date Alpine Linux verison.
master Last master branch commit. Same features as nightly, but based on an older Appine Linux.
latest Latest release per Github tag, not necessarily the most up-to-date Alpine Linux version!
v1.0.0 Version snapshot of the past. Used to go back to a previous well-known state.

How to use this image

$ docker run --name keepass-webdav -p 80:80 -v /path/to/your/keepass/files/:/media/data -d sfuhrm/docker-nginx-webdav

Or use the docker-compose file included in this repository.

No built-in TLS support. Reverse proxy with TLS recommended.

Volumes

  • /media/data - served directory, needs to be accessible to the nginx user with uid 100 and gid 101.

Authentication

With credentials in environment variables

To restrict access to only authorized users (recommended), you can define two environment variables: $USERNAME and $PASSWORD

$ docker run --name webdav -p 80:80 -v /path/to/your/shared/files/:/media/data -e USERNAME=webdav -e PASSWORD=webdav -d sfuhrm/docker-nginx-webdav

With credentials in files

If you want to pass username and password in files like Docker secrets, you can define two environment variables: $USERNAME_FILE and $PASSWORD_FILE

Docker compose

Or use docker-compose example with secret

version: "3.9" name: webdav secrets: USERNAME_SC: file: <path-to-your-secret>/username.secret.txt PASSWORD_SC: file: <path-to-your-secret>/password.secret.txt services: docker-nginx-webdav: #image: sfuhrm/docker-nginx-webdav build: . container_name: webdav restart: unless-stopped security_opt: - no-new-privileges:true ports: - "80:80" volumes: - "<path-you-want-to-share>:/media/data" secrets: - USERNAME_SC - PASSWORD_SC environment: - USERNAME_FILE=/run/secrets/USERNAME_SC - PASSWORD_FILE=/run/secrets/PASSWORD_SC 

About

Incredibly secure, fast and light WebDav Server, built from minimal Alpine image

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • Shell 70.8%
  • Dockerfile 29.2%