commit bfa171c844c13410168c3d4d4e71b6dcd0490e6e Author: Logan Marchione Date: Sat Apr 2 14:32:22 2022 -0400 Initial commit diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ea684c3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +*.md +*.env +.git +.gitignore +.github +.drone.yml +.travis.yml +docker-compose.yml +Dockerfile +.dockerignore +screenshots diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..fb7a85e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +FROM ubuntu:focal + +ARG BUILD_DATE + +LABEL \ + maintainer="Logan Marchione " \ + org.opencontainers.image.authors="Logan Marchione " \ + org.opencontainers.image.title="docker-webdav-nginx" \ + org.opencontainers.image.description="Runs a Nginx WebDav server in Docker" \ + org.opencontainers.image.created=$BUILD_DATE + +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get install -y --no-install-recommends \ + apache2-utils \ + netcat \ + nginx-extras && \ + rm -rf /var/lib/apt/lists/* && \ + mkdir -p "/var/www/webdav/restricted" && \ + mkdir -p "/var/www/webdav/public" && \ + chown -R www-data:www-data "/var/www" && \ + rm /etc/nginx/sites-enabled/default + +EXPOSE 80 + +VOLUME [ "/var/www/webdav" ] + +COPY password.sh password.sh + +COPY webdav.conf /etc/nginx/sites-enabled/webdav + +ENTRYPOINT ["/password.sh"] + +CMD ["nginx", "-g", "daemon off;"] + +HEALTHCHECK CMD nc -z localhost 80 || exit 1 diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..8acdd82 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.0.1 diff --git a/password.sh b/password.sh new file mode 100755 index 0000000..64e490b --- /dev/null +++ b/password.sh @@ -0,0 +1,21 @@ +#!/bin/sh -e + +printf "#####\n" +printf "# Container starting up!\n" +printf "#####\n" + +# Check for WebDav user/pass +printf "# STATE: Checking for WebDav user/pass\n" +if [ -n "$WEBDAV_USER" ] && [ -n "$WEBDAV_PASS" ] +then + printf "# STATE: WebDav user/pass written to /etc/nginx/webdav_credentials\n" + htpasswd -b -c /etc/nginx/webdav_credentials $WEBDAV_USER $WEBDAV_PASS > /dev/null 2>&1 +else + printf "# WARN: No WebDav user/pass were set, the 'restricted' diretory has no authentication on it!\n" + sed -i 's/.*auth_basic.*//g' /etc/nginx/sites-enabled/webdav + sed -i 's/.*auth_basic_user_file.*//g' /etc/nginx/sites-enabled/webdav +fi + + +printf "# STATE: Nginx is starting up now, the logs you see below are error_log and access_log from Nginx\n" +exec "$@" diff --git a/webdav.conf b/webdav.conf new file mode 100644 index 0000000..eaca1f3 --- /dev/null +++ b/webdav.conf @@ -0,0 +1,33 @@ +server { + listen 80 default_server; + server_name _; + + root /var/www/webdav; + autoindex on; + + location /public { + dav_methods PUT DELETE MKCOL COPY MOVE; + dav_ext_methods PROPFIND OPTIONS; + dav_access user:rw group:rw; + + create_full_put_path on; + + error_log /dev/stdout; + access_log /dev/stdout; + } + + location /restricted { + auth_basic "Restricted"; + auth_basic_user_file /etc/nginx/webdav_credentials; + + dav_methods PUT DELETE MKCOL COPY MOVE; + dav_ext_methods PROPFIND OPTIONS; + dav_access user:rw group:rw; + + create_full_put_path on; + + error_log /dev/stdout; + access_log /dev/stdout; + } + +}