Jamie Nguyen
213fa1f8a3
|
6 years ago | |
---|---|---|
2.4 | 6 years ago | |
README.md | 6 years ago | |
latest | 6 years ago |
README.md
Supported tags
Quick reference
This image runs an easily configurable WebDAV server with Apache.
- Code repository: https://github.com/BytemarkHosting/docker-webdav
- Where to file issues: https://github.com/BytemarkHosting/docker-webdav/issues
- Maintained by: Bytemark Hosting
- Supported architectures:
Any architecture that the
httpd
image supports
Usage
Basic WebDAV server
This example starts a WebDAV server.
When using unencrypted HTTP, use Digest
authentication (instead of Basic
)
to avoid sending plaintext passwords in the clear.
To make sure your data doesn't get deleted, you'll probably want to create a
persistent storage volume (-v vol-webdav:/var/lib/dav
) or bind mount a
directory (-v /path/to/directory:/var/lib/dav
):
docker run --restart always -v /srv/dav:/var/lib/dav \
-e AUTH_TYPE=Digest -e USERNAME=alice -e PASSWORD=secret1234 \
--publish 80:80 -d bytemark/webdav
Via Docker Compose:
version: '3'
services:
webdav:
image: bytemark/webdav
restart: always
ports:
- "80:80"
environment:
AUTH_TYPE: Digest
USERNAME: alice
PASSWORD: secret1234
volumes:
- /srv/dav:/var/lib/dav
Secure WebDAV with SSL
We recommend you use a reverse proxy (eg, Traefik) to handle SSL certificates.
If you're happy with a self-signed SSL certificate, specify -e SSL_CERT=selfsigned
and the container will generate one for you.
docker run --restart always -v /srv/dav:/var/lib/dav \
-e AUTH_TYPE=Basic -e USERNAME=test -e PASSWORD=test \
-e SSL_CERT=selfsigned --publish 443:443 -d bytemark/webdav
Authenticate multiple clients
Specifying USERNAME
and PASSWORD
only supports a single user. If you want
to have lots of different logins for various users, bind mount your own file to
/user.passwd
and the container will use that instead.
If using Basic
authentication, run the following commands:
touch user.passwd
htpasswd -B user.passwd alice
htpasswd -B user.passwd bob
If using Digest
authentication, run the following commands. (NB: The default
REALM
is WebDAV
. If you specify your own REALM
, you'll need to run
htdigest
again with the new name.)
touch user.passwd
htdigest user.passwd WebDAV alice
htdigest user.passwd WebDAV bob
Once you've created your own user.passwd
, bind mount it into your container
with -v /path/to/user.passwd:/user.passwd
.
Environment variables
All environment variables are optional. You probably want to at least specify
USERNAME
and PASSWORD
(or bind mount your own authentication file to
/user.passwd
) otherwise nobody will be able to access your WebDAV server!
SERVER_NAMES
: Comma-separated list of domains (eg,example.com,www.example.com
). The first is set as the ServerName, and the rest (if any) are set as ServerAlias. The default islocalhost
.LOCATION
: The URL path for WebDAV (eg, if set to/webdav
then clients should connect toexample.com/webdav
). The default is/
.AUTH_TYPE
: Apache authentication type to use. This can beBasic
(best choice for HTTPS) orDigest
(best choice for HTTP). The default isBasic
.REALM
: Sets AuthName, an identifier that is displayed to clients when they connect. The default isWebDAV
.USERNAME
: Authenticate with this username (and the password below). This is ignored if you bind mount your own authentication file to/user.passwd
.PASSWORD
: Authenticate with this password (and the username above). This is ignored if you bind mount your own authentication file to/user.passwd
.ANONYMOUS_METHODS
: Comma-separated list of HTTP request methods (eg,GET,POST,OPTIONS,PROPFIND
). Clients can use any method you specify here without authentication. Set toALL
to disable authentication. The default is to disallow any anonymous access.SSL_CERT
: Set toselfsigned
to generate a self-signed certificate and enable Apache's SSL module. If you specifySERVER_NAMES
, the first domain is set as the Common Name.