From 344e8ddfba6b36a9a968f74dfb82894f30f5ca88 Mon Sep 17 00:00:00 2001 From: reply2future <6359152+reply2future@users.noreply.github.com> Date: Sat, 30 Mar 2024 17:41:09 +0800 Subject: [PATCH 1/7] Update the base image and enable CORS --- Dockerfile | 2 +- webdav.conf | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index eb3e7de..f077f59 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:10.6-slim +FROM debian:stable-slim LABEL maintainer "ugeek. ugeekpodcast@gmail.com" diff --git a/webdav.conf b/webdav.conf index c16f535..af8c888 100644 --- a/webdav.conf +++ b/webdav.conf @@ -1,12 +1,17 @@ dav_ext_lock_zone zone=a:10m; +map $http_destination $dest_path { + ~^(?https?)://[^/]+(?/.*)$ $xpath; +} + server { #server_name webdav.mashnp.sk; - set $webdav_root "/media/"; + set $webdav_root "/media"; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/htpasswd; dav_ext_lock zone=a; + location / { root $webdav_root; @@ -59,7 +64,15 @@ server { autoindex_exact_size on; autoindex_localtime on; + # Add CORS headers + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always; + add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization' always; + if ($request_method = OPTIONS) { + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always; + add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization' always; add_header Allow 'OPTIONS, GET, HEAD, POST, PUT, MKCOL, MOVE, COPY, DELETE, PROPFIND, PROPPATCH, LOCK, UNLOCK'; add_header DAV '1, 2'; return 200; @@ -85,12 +98,16 @@ server { root $webdav_root; dav_methods DELETE; } + + location @copy_move_handler { internal; open_file_cache off; + more_set_input_headers 'Destination: $dest_path'; + if (-d $webdav_root/$uri) { # Microsoft specific handle: Add trailing slash to dirs. - more_set_input_headers 'Destination: $http_destination/'; + # more_set_input_headers 'Destination: $http_destination/'; rewrite ^(.*[^/])$ $1/ break; } root $webdav_root; From 16bdcd1b40075dc224d444bfc633212a2dad94bc Mon Sep 17 00:00:00 2001 From: mervyn <6359152+reply2future@users.noreply.github.com> Date: Sat, 30 Mar 2024 22:10:40 +0800 Subject: [PATCH 2/7] docs(docs): add README.md English version re #2 --- README.es.md | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 83 ++++++++++++++--------------------- 2 files changed, 154 insertions(+), 51 deletions(-) create mode 100644 README.es.md diff --git a/README.es.md b/README.es.md new file mode 100644 index 0000000..ed21206 --- /dev/null +++ b/README.es.md @@ -0,0 +1,122 @@ +# Servidor webdav partiendo de debian-testing + +## Clonar el repositorio + +``` +git clone https://github.com/reply2future/docker-webdav.git +``` + +y accedemos al interior de la carpeta: + +``` +cd docker-webdav +``` + +## Construir la imagen +``` +docker build -t reply2future/webdav:arm . +``` + +## Ver el número de imagen: +``` +docker images +``` + +## Montar el contenedor + +### docker-cli +USERNAME: webdav +PASSWORD: webdav +PUERTO: 80 + +--restart=unless-stopped: Iniciar cada vez que iniciemos el servidor + + +``` +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 reply2future/webdab:arm +``` + +### docker-compose con traefik y proxy inverso + +``` +version: '2' +services: + webdav: + container_name: webdav + image: reply2future/webdav:arm + 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.tu_dominio.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 +``` + +Introduce el comando... +``` +docker-compose up -d +``` + + +## Logs + +Añadido nuevo registro de logs. + +### Ver logs + +``` +docker exec -it webdav cat /var/log/nginx/webdav_access.log +``` + +### Logs en tiempo real + +``` +docker exec -it webdav cat /var/log/nginx/webdav_access.log +``` + + + +### logs con error +``` +docker exec -it webdav /var/log/nginx/webdav_error.log +``` + +## Agradecimientos +- Gracias a [Germán Martín](https://github.com/gmag11) por añadir la compatibilidad con clientes Windows 10. [Fork](https://github.com/gmag11/docker-webdav) + + diff --git a/README.md b/README.md index 8493df1..8481ae6 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,30 @@ -# Servidor webdav partiendo de debian-testing -## Clonar el repositorio +# Webdav Server based on debian-testing -``` -git clone https://github.com/uGeek/docker-nginx-webdav.git -``` +## Cloning the repository -y accedemos al interior de la carpeta: +> git clone https://github.com/reply2future/docker-webdav.git -``` -cd docker-nginx-webdav -``` +and we access the inside of the folder : -## Construir la imagen -``` -docker build -t ugeek/webdav:arm . -``` +cd docker-webdav -## Ver el número de imagen: -``` +## Building the image +docker build -t reply2future/webdav:arm . + +## Check the image number: docker images -``` -## Montar el contenedor +## Mounting the container ### docker-cli USERNAME: webdav PASSWORD: webdav -PUERTO: 80 +PORT: 80 ---restart=unless-stopped: Iniciar cada vez que iniciemos el servidor +--restart=unless-stopped: Start each time we start the server - -``` +```bash docker run --name webdav \ --restart=unless-stopped \ -p 80:80 \ @@ -40,14 +32,14 @@ docker run --name webdav \ -e USERNAME=webdav \ -e PASSWORD=webdav \ -e TZ=Europe/Madrid \ - -e UDI=1000 \ + -e UID=1000 \ -e GID=1000 \ - -d ugeek/webdab:arm + -d uge ek/webdab:arm ``` -### docker-compose con traefik y proxy inverso +### docker-compose with traefik and reverse proxy -``` +```yaml version: '2' services: webdav: @@ -66,14 +58,14 @@ services: networks: - web labels: - - traefik.backend=webdav + - traefik.backend=webdav - traefik.frontend.rule=Host:webdav.tu_dominio.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.sslRedirect=true - traefik.http.middlewares.securedheaders.headers.STSPreload=true - traefik.http.middlewares.securedheaders.headers.ContentTypeNosniff=true - traefik.http.middlewares.securedheaders.headers.BrowserXssFilter=true @@ -82,41 +74,30 @@ services: - traefik.http.middlewares.securedheaders.headers.frameDeny=true - traefik.http.middlewares.securedheaders.headers.browserXssFilter=true - traefik.http.middlewares.securedheaders.headers.contentTypeNosniff=true -networks: +networks: web: - external: true + external: true ``` -Introduce el comando... -``` -docker-compose up -d -``` +Enter the command... +> docker-compose up -d ## Logs -Añadido nuevo registro de logs. +New log record added. -### Ver logs +### See logs -``` -docker exec -it webdav cat /var/log/nginx/webdav_access.log -``` +> docker exec -it webdav cat /var/log/nginx/webdav_access.log -### Logs en tiempo real +### Real Time Logs -``` -docker exec -it webdav cat /var/log/nginx/webdav_access.log -``` - - - -### logs con error -``` -docker exec -it webdav /var/log/nginx/webdav_error.log -``` +> docker exec -it webdav cat /var/log/nginx/webdav_access.log -## Agradecimientos -- Gracias a [Germán Martín](https://github.com/gmag11) por añadir la compatibilidad con clientes Windows 10. [Fork](https://github.com/gmag11/docker-webdav) +### Error Logs +> docker exec -it webdav /var/log/nginx/webdav_error.log +## Acknowledgements +- Thanks to [Germán Martín](https://github.com/gmag11) for adding compatibility with Windows 10 clients. [Fork](https://github.com/gmag11/docker-webdav) \ No newline at end of file From 2c5239d5798cf608718cf961da4cff07eca647e8 Mon Sep 17 00:00:00 2001 From: mervyn <6359152+reply2future@users.noreply.github.com> Date: Sat, 30 Mar 2024 22:11:45 +0800 Subject: [PATCH 3/7] chore(auth): update maintainer information re #2 --- Dockerfile | 2 +- docker-compose-build.yml | 2 +- docker-compose.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index f077f59..ec952b4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM debian:stable-slim -LABEL maintainer "ugeek. ugeekpodcast@gmail.com" +LABEL maintainer "6359152+reply2future@users.noreply.github.com" ARG UID=${UID:-1000} ARG GID=${GID:-1000} diff --git a/docker-compose-build.yml b/docker-compose-build.yml index d40ebab..2dea1e0 100644 --- a/docker-compose-build.yml +++ b/docker-compose-build.yml @@ -1,4 +1,4 @@ -version: '2' +version: '3' services: webdav: container_name: webdav diff --git a/docker-compose.yml b/docker-compose.yml index 1420181..eb89599 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,8 @@ -version: '2' +version: '3' services: webdav: container_name: webdav - image: ugeek/webdav:arm + image: reply2future/webdav:arm ports: - 80:80 volumes: From 60f9552cb73e0f140b6439247763e56fb1571644 Mon Sep 17 00:00:00 2001 From: mervyn <6359152+reply2future@users.noreply.github.com> Date: Sat, 30 Mar 2024 22:33:35 +0800 Subject: [PATCH 4/7] feat(ci/cd): add github workflow to build and push image automatically after tagging re #3 --- .github/workflows/ci.yaml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/ci.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..1312cda --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,34 @@ +name: CI + +on: + push: + branches: [ main ] + tags: + - 'v[0-9]+.[0-9]+.[0-9]+**' +jobs: + build: + if: startsWith(github.ref, 'refs/tags/v') + runs-on: ubuntu-latest + + name: Build and release the electron app + steps: + - + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64,linux/arm/v7, linux/arm64/v8 + push: true + tags: user/app:latest From eef2b8fab5323fcf13496e640d107b1d7c001470 Mon Sep 17 00:00:00 2001 From: Mervyn Zhan <6359152+reply2future@users.noreply.github.com> Date: Sat, 30 Mar 2024 23:09:35 +0800 Subject: [PATCH 5/7] Update ci.yaml --- .github/workflows/ci.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1312cda..bcadeb0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -28,7 +28,6 @@ jobs: name: Build and push uses: docker/build-push-action@v5 with: - context: . platforms: linux/amd64,linux/arm64,linux/arm/v7, linux/arm64/v8 push: true tags: user/app:latest From 804b38a5c60a8cca0fc0dcbdfc2e8a1b4507902c Mon Sep 17 00:00:00 2001 From: Mervyn Zhan <6359152+reply2future@users.noreply.github.com> Date: Sat, 30 Mar 2024 23:19:47 +0800 Subject: [PATCH 6/7] Update ci.yaml --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index bcadeb0..56335f2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -10,7 +10,7 @@ jobs: if: startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest - name: Build and release the electron app + name: Build and push image steps: - name: Set up QEMU @@ -30,4 +30,4 @@ jobs: with: platforms: linux/amd64,linux/arm64,linux/arm/v7, linux/arm64/v8 push: true - tags: user/app:latest + tags: reply2future/docker-webdav:latest,reply2future/docker-webdav:${{ github.ref_name }} From 7deab0ac9f68f25c9034881f8cf8fbe12ac32c0d Mon Sep 17 00:00:00 2001 From: mervyn <6359152+reply2future@users.noreply.github.com> Date: Mon, 19 Aug 2024 12:18:03 +0800 Subject: [PATCH 7/7] feat(logs): expose log volume re #6 --- Dockerfile | 2 ++ README.es.md | 49 +++++----------------------------------- README.md | 49 +++++----------------------------------- docker-compose-build.yml | 3 ++- docker-compose.yml | 5 ++-- webdav.conf | 4 ++-- 6 files changed, 21 insertions(+), 91 deletions(-) diff --git a/Dockerfile b/Dockerfile index ec952b4..f2991c1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,8 @@ RUN apt-get update && \ RUN usermod -u $UID www-data && groupmod -g $GID www-data VOLUME /media +VOLUME /logs + EXPOSE 80 COPY webdav.conf /etc/nginx/conf.d/default.conf diff --git a/README.es.md b/README.es.md index ed21206..23b9792 100644 --- a/README.es.md +++ b/README.es.md @@ -36,7 +36,8 @@ PUERTO: 80 docker run --name webdav \ --restart=unless-stopped \ -p 80:80 \ - -v $HOME/docker/webdav:/media \ + -v $HOME/docker-webdav/media:/media \ + -v $HOME/docker-webdav/logs:/logs \ -e USERNAME=webdav \ -e PASSWORD=webdav \ -e TZ=Europe/Madrid \ @@ -47,45 +48,7 @@ docker run --name webdav \ ### docker-compose con traefik y proxy inverso -``` -version: '2' -services: - webdav: - container_name: webdav - image: reply2future/webdav:arm - 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.tu_dominio.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 -``` +[Este archivo](/docker-compose.yml) es un ejemplo.. Introduce el comando... ``` @@ -100,20 +63,20 @@ Añadido nuevo registro de logs. ### Ver logs ``` -docker exec -it webdav cat /var/log/nginx/webdav_access.log +docker exec -it webdav cat /logs/webdav_access.log ``` ### Logs en tiempo real ``` -docker exec -it webdav cat /var/log/nginx/webdav_access.log +docker exec -it webdav cat /logs/webdav_access.log ``` ### logs con error ``` -docker exec -it webdav /var/log/nginx/webdav_error.log +docker exec -it webdav /logs/webdav_error.log ``` ## Agradecimientos diff --git a/README.md b/README.md index 8481ae6..b8f8b21 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,8 @@ PORT: 80 docker run --name webdav \ --restart=unless-stopped \ -p 80:80 \ - -v $HOME/docker/webdav:/media \ + -v $HOME/docker-webdav/media:/media \ + -v $HOME/docker-webdav/logs:/logs \ -e USERNAME=webdav \ -e PASSWORD=webdav \ -e TZ=Europe/Madrid \ @@ -39,45 +40,7 @@ docker run --name webdav \ ### docker-compose with traefik and reverse proxy -```yaml -version: '2' -services: - webdav: - container_name: webdav - image: ugeek/webdav:arm - 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.tu_dominio.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 -``` +[this file](/docker-compose.yml) is an example. Enter the command... > docker-compose up -d @@ -89,15 +52,15 @@ New log record added. ### See logs -> docker exec -it webdav cat /var/log/nginx/webdav_access.log +> docker exec -it webdav cat /logs/webdav_access.log ### Real Time Logs -> docker exec -it webdav cat /var/log/nginx/webdav_access.log +> docker exec -it webdav cat /logs/webdav_access.log ### Error Logs -> docker exec -it webdav /var/log/nginx/webdav_error.log +> docker exec -it webdav /logs/webdav_error.log ## Acknowledgements - Thanks to [Germán Martín](https://github.com/gmag11) for adding compatibility with Windows 10 clients. [Fork](https://github.com/gmag11/docker-webdav) \ No newline at end of file diff --git a/docker-compose-build.yml b/docker-compose-build.yml index 2dea1e0..a65c94b 100644 --- a/docker-compose-build.yml +++ b/docker-compose-build.yml @@ -6,7 +6,8 @@ services: ports: - "80:80" volumes: - - "$HOME/docker/webdav:/media" + - "$HOME/docker-webdav/media:/media" + - "$HOME/docker-webdav/logs:/logs" environment: - USERNAME=webdav - PASSWORD=webdav diff --git a/docker-compose.yml b/docker-compose.yml index eb89599..9ae6677 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,11 +2,12 @@ version: '3' services: webdav: container_name: webdav - image: reply2future/webdav:arm + image: reply2future/webdav ports: - 80:80 volumes: - - $HOME/docker/webdav:/media + - "$HOME/docker-webdav/media:/media" + - "$HOME/docker-webdav/logs:/logs" environment: - USERNAME=webdav - PASSWORD=webdav diff --git a/webdav.conf b/webdav.conf index af8c888..2747119 100644 --- a/webdav.conf +++ b/webdav.conf @@ -20,8 +20,8 @@ server { error_page 597 = @copy_move_handler; open_file_cache off; - access_log /var/log/nginx/webdav_access.log; - error_log /var/log/nginx/webdav_error.log debug; + access_log /logs/webdav_access.log; + error_log /logs/webdav_error.log debug; send_timeout 3600; client_body_timeout 3600;