Coder Social home page Coder Social logo

dgraziotin / docker-nginx-webdav-nononsense Goto Github PK

View Code? Open in Web Editor NEW
136.0 136.0 42.0 206 KB

Aims to enable a no-nonsense WebDAV docker system on the latest available nginx mainline. Magic included?

License: MIT License

Dockerfile 65.29% Shell 34.71%
docker docker-compose mit nginx webdav

docker-nginx-webdav-nononsense's People

Contributors

davidmikesimon avatar dependabot[bot] avatar dgraziotin avatar dotwee avatar dqhl76 avatar florianendel avatar fyears avatar guillaumelamirand avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

docker-nginx-webdav-nononsense's Issues

Multi User with own Folder

Hello,

Is it possible to have multi user with their own folder?

For example,
User Samantha will have folder user1
User Josh will have folder user2

Each user has their own username and password.

If this is possible will be great as additional feature.

Rgds

cant pull image?

Hi,

I keep getting:

Pulling nginxwebdav (dgraziotin/docker-nginx-webdav-nononsense:)... ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.

somethings wrong?

Error with Microsoft Office 2021: Someone else is working in 'X:\yourfile.xlsx' right now. Please try again later.

Describe the bug
Unable to save Documents from Excel 2021 on the Webdav server.

Please include the exact error messages that your client is reporting:
Someone else is working in 'X:\yourfile.xlsx' right now. Please try again later.

To Reproduce
Steps to reproduce the issue:

  1. Connect drive with Windows 11 mini-redirector using net-use
  2. Save file from Excel 2021 on network drive
  3. Error message

Expected behavior
Save the file on the network drive

Permission failed with the var/cache/nginx/* folder using Zotero

I use your docker with Zotero to be able to keep my files uploaded and sync on my server.
I couldn't make it work until I changed the chmod for /var/cache/nginx/* from 700 to 775.
Without that I got permission denied because it tried to push file in that folder.
I use the env variable PUID and GID.
I have no idea if it can be helpful and/or if the code needed to be changed but I thought it was worth mentioning it

Windows/Explorer can only see the root folder, no traverse is possible

This is part of #8.

After fixing #11, it is only possible to access the root folder of the WebDAV location and see a file listing. No other operation (traverse, access) is possible.

It is also not possible to access the mapped WebDAV location a second time, after adding it.

Accessing the same file is greeted with an HTTP 401 with Microsoft/Explorer:

Microsoft/Explorer:

nginxwebdav  | 172.21.0.1 - - [10/Dec/2021:14:45:33 +0100] "GET /ciao.txt HTTP/1.1" 401 179 "-" "Microsoft-WebDAV-MiniRedir/10.0.22000"

Whereas with macOS Finder:

nginxwebdav  | 172.21.0.1 - user [10/Dec/2021:14:47:10 +0100] "PROPFIND / HTTP/1.1" 207 1377 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav  | 172.21.0.1 - user [10/Dec/2021:14:47:11 +0100] "PROPFIND /ciao.txt HTTP/1.1" 207 371 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav  | 172.21.0.1 - user [10/Dec/2021:14:47:11 +0100] "PROPFIND / HTTP/1.1" 207 335 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav  | 172.21.0.1 - user [10/Dec/2021:14:47:13 +0100] "LOCK /ciao.txt HTTP/1.1" 200 383 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav  | 172.21.0.1 - user [10/Dec/2021:14:47:13 +0100] "GET /ciao.txt HTTP/1.1" 304 0 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav  | 172.21.0.1 - user [10/Dec/2021:14:47:13 +0100] "UNLOCK /ciao.txt HTTP/1.1" 204 0 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"

ability to delete files

Hello, first of all thank you for making my life easier with this image, been using for about a year

I use this with NAS + infuse for apple tv

The only nitpick I have is ability to delete files from it. The app supports it but webdav doesn't, at least from what I see I can only add custom users

Maybe I am missing something or is there any easy workaround? Thank you!!

Windows WebDAV Client Support

We are using your Image for some days now, I know that the Windows WebDAV Client is a mess itselfe, but supporting Windows WebDAV is curcial for us, as we need native File Explorer integration for our Project. I would like to help you to find an solve all relevant Problems regarding Windows WebDAV Support. Shall I start one Issue for Windows Support overall, or one Issue for each Problem we face?

After rebooting Windows it is quiet impossible to get WebDAV up and running again. I am getting some generic Error Messages. It works quiet well when it works, but a reboot seems to trigger some Bug which is Hard to Workaround. Removing and readding the Drive, while changing some Parameters seems to get it running again, but I can't figure out what is causing it to work again. It seems as, as long as Windows still knows it is the same WebDAV Server the Issue is present, you need to change config Values until Windows can't determine that it is the same Server.

Restore CORS

As of commit 0125aa2, I removed all CORS headers to reduce complexity while we debug issues with Windows.

I need to decide if to restore them, and how (see also keeweb/keeweb)

PROPFIND requests work unauthenticated

An unauthenticated PROPFIND request to / succeeds, and some properties are returned:

HTTP/1.1 207 Multi-Status
Server: openresty
Date: Fri, 17 Dec 2021 12:47:39 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 424
Connection: close

<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/</D:href>
<D:propstat>
<D:prop>
<D:displayname>/</D:displayname>
<D:getlastmodified>Fri, 17 Dec 2021 12:40:27 GMT</D:getlastmodified>
<D:resourcetype><D:collection/></D:resourcetype>
<D:lockdiscovery/>
<D:supportedlock>
</D:supportedlock>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>

An unauthenticated PROPFIND request to a (guessed) existing file succeeds, and some properties are returned:

HTTP/1.1 207 Multi-Status
Server: openresty
Date: Fri, 17 Dec 2021 12:48:51 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 469
Connection: close

<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/hello.txt</D:href>
<D:propstat>
<D:prop>
<D:displayname>hello.txt</D:displayname>
<D:getcontentlength>8</D:getcontentlength>
<D:getlastmodified>Fri, 17 Dec 2021 12:47:59 GMT</D:getlastmodified>
<D:resourcetype></D:resourcetype>
<D:lockdiscovery/>
<D:supportedlock>
</D:supportedlock>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>

Windows/Explorer can't create a new folder

Creating a new folder is unsupported with error message "The request is not supported".

nginx logs:

nginxwebdav    | 172.21.0.1 - - [10/Dec/2021:15:47:38 +0100] "PROPFIND / HTTP/1.1" 207 1495 "-" "Microsoft-WebDAV-MiniRedir/10.0.22000"
nginxwebdav    | 172.21.0.1 - - [10/Dec/2021:15:47:38 +0100] "PROPFIND /New%20folder HTTP/1.1" 404 153 "-" "Microsoft-WebDAV-MiniRedir/10.0.22000"
nginxwebdav    | 172.21.0.1 - - [10/Dec/2021:15:47:38 +0100] "PROPFIND / HTTP/1.1" 207 424 "-" "Microsoft-WebDAV-MiniRedir/10.0.22000"
nginxwebdav    | 172.21.0.1 - - [10/Dec/2021:15:47:38 +0100] "MKCOL /New%20folder HTTP/1.1" 401 179 "-" "Microsoft-WebDAV-MiniRedir/10.0.22000"

macOS Finder works with the following log

nginxwebdav    | 172.21.0.1 - user [10/Dec/2021:15:51:44 +0100] "PROPFIND /untitled%20folder HTTP/1.1" 404 153 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav    | 172.21.0.1 - user [10/Dec/2021:15:51:44 +0100] "MKCOL /untitled%20folder HTTP/1.1" 201 0 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav    | 172.21.0.1 - user [10/Dec/2021:15:51:44 +0100] "PROPFIND / HTTP/1.1" 207 1389 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"
nginxwebdav    | 172.21.0.1 - user [10/Dec/2021:15:51:44 +0100] "PROPFIND /untitled%20folder/ HTTP/1.1" 207 353 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (x86_64)"

Make use of /config

Linuxserver.io images prepare /config so that expected configuration files appear there. Have user-editable configuration files gathered from here.

large folder with photos not accessible

i really enjoy this image as it provides a 5 min set up personal cloud really no nonsense.
everything works as it should and i can access and sync my files with my phone.
Only issue i have is that i can't access a large photo folder ~200gb | ~50000 items
i have changed CLIENT_MAX_BODY_SIZE to 300G
and tried to view logs with docker logs --follow 73e7bc2b53cc but it returned nothing
any ideas appreciated
keep up

Add my build and publish system into the repository

To prevent screwups like in #94 / #95 where I forget that I have a build system that overwrites the Dockerfile, I should release my simple build and publish system into the repository.

Dockerfile.template and README should specify how to provide code changes that target Dockerfile.

Last-Modified header

Hello,

Would you consider to add "Last-Modified" header to Access-Control-Allow-Headers?

Some apps, specially "keeweb" needs it to work properly. I use now your image with a modified ngix.conf, but others may benefit from this change.

Thank you,

Document how to enable read only mode

I wanted to run this in read only mode and it took me a while to figure out I just need to add the following to config/nginx/location.conf, this might be useful for other users.

      limit_except GET PROPFIND OPTIONS HEAD {
            deny all;
      }

Handle Microsoft expectation for a 404 with PROPFIND

This is part of #8.

Using the "Map Network Drive" feature.

When adding the WebDAV location (e.g., http://192.168.178.99:32080), Windows/Explorer would fail to connect and give an error.

At this point, a PROPFIND request is issued when setting up the connection.

The issue is that Microsoft as well as IIS, expects an HTTP 404 in the response headers, whereas RFC2518 recommends an HTTP 207 with the error descriptions in the response body (an XML file).

Somebody (Russian, use Google Translate) proposed as fix to create an ad-hoc response for Microsoft only that would return 404. Implementing this solution restores access to the WebDAV location.

[bug] unexpected 403 error caused by permission setting

Thanks for your excellent docker image!

I am trying to use this image to setup a webdav enviroment to test OpenDAL's webdav service.
apache/opendal#2873

However, I face some problems when I want to mount a volume for data like this:

version: '3.8'

services:
  webdav:
    image: dgraziotin/nginx-webdav-nononsense
    ...
     volumes:
      - webdav-data:/data
    ...
volumes:
  webdav-data:

You can check what we actually write this docker compose file in https://github.com/apache/incubator-opendal/pull/2873/files/111e694f7c036cfcc8e92649db9fce28206c8666

The webdav service gave us the 403 Forbidden error. Log: https://github.com/apache/incubator-opendal/actions/runs/5877080995/job/15936499613?pr=2873

Errors may be caused by incorrect permission settings. We try to add a Dockerfile and that solve this problem:

FROM dgraziotin/nginx-webdav-nononsense

RUN chown -R abc:abc /data

We seem need to create the dir and set the permission first before mark it as a volumn.

How to change default File Permissions correctly

Hello! I would like to change the Permissions which are assigned to new Files. As of Nginx Documentation this can be done with the dav_access configuration Parameter. I have done this successfull by editing the nginx.conf manually. I am curious if there is a more elegant way for doing this, as editing manual is either not persistent, or is cutting me off of further changes to the File in the Image.

Get an 409 conflict error when I try to upload a file

Looks like nginx is having some problems with accessing the folder
PGID | 1000
PUID | 1000
should be fine and work for all other containers.

Nevertheless I get this weird error message when I want to upload/create a file in the main /data folder.

2022-05-17 at 16 40 36 - Sync

update to jammy

Hello,
@dgraziotin, I want to thank you for putting all this together and for the documentation.
I am looking to replace Nextcloud, which does a lot of things, but I only use two parts, remote file browsing and syncing files from phones.
Filebrower takes care of the remote file browsing.
Docker-nginx-webdav-nonosense seems to be perfect to handle the syncing of files from android phones using PhotoSync.
After deploying dnwn by cloning the git repository, I noticed it was using baseimage-ubuntu:focal instead of baseimage-ubuntu:jammy in the Dockerfile.
I changed the baseimage to jammy on lines 10 and 116 and now dnwn is using the jammy image base.
Mentioning it, as I got the message the focal image is not longer supported. (I was also having problems, and thought the update would help, the problems where not due to having the focal base.)
I do not know what/if problems changing the base image will cause. As dgraziotin has not updated the Dockerfile to jammy, then this is a use at your own risk, if anyone else follows this info.

X-Forwarded-For not logged/honored in logs

I'm running the ':latest' release of the container, and I see that the logs show my reverse proxy (haproxy running on another host) as the source IPs. I have the following config in haproxy:

backend webdav
	server [REDACTED] 192.168.1.5:8082
	option forwardfor
	http-request set-header X-Real-IP %[src]

And the proxy logs still seem to show the proxy IP instead of the "real" IP. I confirmed the proxy is sending correct headers with tcpdump. Is there a setting I need to adjust to tell nginx to log those, or do I have to rebuild the container with the tweaked log configuration?

MacOS Finder can't connect to server

I've follow all of the instructions, and can access webdav via browser, but using Finder got a Popup of Problems in connection. I'm using nginx reverse proxy with ssl.
This is mi log for the Finder Connection:

172.20.0.7 - - [17/Sep/2021:20:08:21 -0500] "OPTIONS / HTTP/1.1" 204 0 "-" "WebDAVLib/1.3"
172.20.0.7 - - [17/Sep/2021:20:08:36 -0500] "OPTIONS / HTTP/1.1" 204 0 "-" "WebDAVLib/1.3"
172.20.0.7 - - [17/Sep/2021:20:08:36 -0500] "OPTIONS / HTTP/1.1" 204 0 "-" "WebDAVFS/3.0.0 (03008000) Darwin/21.1.0 (arm64)"

Any help is appreciated!
PD: Nice project!!! this is one of the best written docker projects until now!!! Congratulations!

500 error - /var/cache/nginx/client_temp

In relation to #22

I am running this docker container on a Synology NAS and receive this error. I moved from a separate non Synology environment where it worked before, simply copied my folders and same compose block. I am primarily using this for Paperless document consuming, thus the paperless naming conventions. However the configuration should be isolated.

  paperless-webdav:
    image: dgraziotin/nginx-webdav-nononsense:latest
    container_name: paperless-webdav
    restart: unless-stopped
    networks:
      - apps-net
    environment:
      - PUID=${puid}
      - PGID=${pgid}
      - TZ=${tz}
      - WEBDAV_USERNAME=${paperless_webdav_user}
      - WEBDAV_PASSWORD=${paperless_webdav_password}
      - SERVER_NAMES=scans.*
      - TIMEOUTS_S=1200 # these are seconds
      - CLIENT_MAX_BODY_SIZE=2G # must end with M(egabytes) or G(igabytes)
    volumes:
      - ./paperless/webdav:/config
      - ./paperless/consume:/data

PUID and PGID are ones that I use for other containers on the NAS. I can see that the startup of the container will show the proper ID's

-------------------------------------
GID/UID
-------------------------------------
User uid:    1032
User gid:    65538
-------------------------------------

Here is the "consume" directory on the host, where data should be getting dropped.

$ ls -laF

drwxrwxr-x 5 captain docker 4096 Jan 18 21:40 ./
drwxrwxr-x 8 captain docker 4096 Feb  8 13:36 ../
drwxrwx--- 2 captain docker 4096 Feb  8 14:01 consume/
drwxrwx--- 3 captain docker 4096 Feb  8 13:22 webdav/

With user captain being the 1032 id used for the container

$ id captain
uid=1032(captain) gid=100(users) groups=100(users)

I am getting the same error when trying to write a file. I can connect, browse and delete files just cant write, tried through various methods like an app called Quickscan on iOS or just Finder connection on Mac

172.20.0.2 - paperless [08/Feb/2023:14:01:46 -0600] "PROPFIND /statement.pdf HTTP/1.1" 404 153 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"
172.20.0.2 - paperless [08/Feb/2023:14:01:46 -0600] "PROPFIND /statement.pdf HTTP/1.1" 404 153 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"
2023/02/08 14:01:46 [crit] 138#138: *84 open() "/var/cache/nginx/client_temp/0000000003" failed (13: Permission denied), client: 172.20.0.2, server: scans.*, request: "PUT /statement.pdf HTTP/1.1", host: "scans.mydomain.com"
172.20.0.2 - paperless [08/Feb/2023:14:01:46 -0600] "PUT /statement.pdf HTTP/1.1" 500 177 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"

For good measure, I set this up on a a raspberry pi and it failed for the same file. Note that this has no reverse proxy (above uses SWAG/nginx), was just accessing directly.

  webdav:
    image: dgraziotin/nginx-webdav-nononsense:latest
    container_name: webdav
    ports:
      - 9999:80
    environment:
      - PUID=1001
      - PGID=995
      - TZ=America/Chicago
      - WEBDAV_USERNAME=test
      - WEBDAV_PASSWORD=qwerty21
      #- SERVER_NAMES=test.*
      - TIMEOUTS_S=1200 # these are seconds
      - CLIENT_MAX_BODY_SIZE=2G # must end with M(egabytes) or G(igabytes)
    volumes:
      - ./test/webdav:/config
      - ./test/consume:/data

Error from Mac OSX finder.

10.0.10.81 - test [08/Feb/2023:14:24:28 -0600] "PROPFIND /statement.pdf HTTP/1.1" 404 153 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"
10.0.10.81 - test [08/Feb/2023:14:24:28 -0600] "PROPFIND /statement.pdf HTTP/1.1" 404 153 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"
2023/02/08 14:24:28 [crit] 138#138: *4 open() "/data/statement.pdf.0000000002" failed (13: Permission denied), client: 10.0.10.81, server: localhost, request: "PUT /statement.pdf HTTP/1.1", host: "10.0.10.17:9999"
10.0.10.81 - test [08/Feb/2023:14:24:28 -0600] "PUT /statement.pdf HTTP/1.1" 500 177 "-" "WebDAVFS/3.0.0 (03008000) Darwin/22.2.0 (arm64)"

Really curious what is going on and how it worked for me before but then broke when I moved to a different host.

Thanks.

Multi-arch support

Hi. Thanks for the effort.

Could you please consider adding multi-arch to your images? arm/v7 and arm64/v8 are welcome.

I'm running my containers on a raspberry pi and it takes quite a while to build nginx. I also can't use the local built image on my k3s cluster since I don't have a docker registry configured.

PROPFIND requests 403

Hi,

I am trying to use this image as a front for MDT deployments to offload the WebDav component to serverless architecture.
However I am getting PROPFIND 403's during deployment:

image

Do you have any idea why this happens?

KR

Unable to connect from Windows 10 WebDAV Client

Hi! First of all, great work, keep it up!

I configured a Container with your Image yesterday. When connecting with WinSCP, everything is working like a charm, however the Windows 10 integrated WebDAV Client can't connect.

image
image

The WebDAV Container is running behind a Nginx reverse Proxy exclusive on a custom Port, see configuration below.

server
{
  listen 10443 ssl;
  server_name wwms.*;

  resolver 127.0.0.11 valid=60s;
  set $webdav_upstream wwms_webdav_1:80;

  ssl_certificate /etc/letsencrypt/live/xxx.xxx.xxx/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/xxx.xxx.xxx/privkey.pem;

  proxy_http_version 1.1;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Forwarded-Host $host;
  proxy_set_header X-Forwarded-Port 10443;
  proxy_set_header X-Frame-Options SAMEORIGIN;

  location /
  {
    proxy_pass http://$webdav_upstream;
  }
}

My compose.yml looks as the following.

  webdav:
    image: dgraziotin/nginx-webdav-nononsense
    restart: unless-stopped
    volumes: 
      - ftp:/data/
      - ~/wwms/webdav/htpasswd:/etc/nginx/htpasswd
    environment:
      - TZ:"Europe/Vienna"
      - PUID:"1000"
      - PGID:"1000"

As I can connect to the Directory Listing via Web Browser and can connect via WinSCP, it seems that the Basic configuration must be okay.

Anything I must configure in Windows (Interet Settings or Registry) in order to get it working?

adding a reastart policy to the container

this is more a suggestion not an issue

add a restart policy to the docker-compose.yml
i tried to add a restart: unless-stopped at the end of the file but it throws error when i docker-compose up -d

ERROR: yaml.scanner.ScannerError: while scanning for the next token
found character '\t' that cannot start any token
  in "./docker-compose.yml", line 20, column 21

actually i think it throws error whenever i try to add anything in to the file and "break" its structure?

i added a restart policy by sudo docker update --restart unless-stopped container_name
and
sudo docker inspect container_name tells me

 "RestartPolicy": {
                "Name": "unless-stopped",
                "MaximumRetryCount": 0
            },

so i'm guessing its applied

keep up

connect to server and/or mount under linux

I'm trying to connect to the webdav server using my ddns url https://my.ddns.domain:0000 file managers require a dav:// (http) or davs:// (https) prefix my url isn't recognized using this format neither using https:// also tried webdav://
i get a failed to open file system , "not a webdav enabled file share"

tried another workaround, mounting it with autofs and davfs2
sudo mount -t davfs https://my.ddns.domain:0000 ~/mountpoint
throws error
/sbin/mount.davfs: mounting failed; the server does not support WebDAV

server is mounted fine under android and windows 10

any ideas appreciated

Add client_max_body_size also to reverse proxy

Hi,

thank you for your great work! I am very happy to have such a well-working nginx webdav container at hand.

I just wanted to leave a note about a small possible documentation update. I am using another nginx container as reverse proxy and I noticed that I needed to also add client_max_body_size to the configuration of the reverse proxy. Otherwise, the proxy would refuse large files with http error 413 Payload Too Large before the file even makes it to the webdav server.

My full reverse proxy config looks like this, so very simple:

server {
    listen          443 ssl http2;
    server_name     xxxx;

    location / {
        set $upstream   "nginxwebdav";
        proxy_pass      http://$upstream;
        proxy_buffering off;
    }

    client_max_body_size 10G;
}

If you agree with this change I could propose a documentation update as a pull request. Just wanted to discuss this first.

Cheers

enable ipv6

I noticed that ipv6 is not enabled because it is missing the listen [::]:80; directive in nginx.conf. Can you enable ipv6 from there? Thanks.

Expose activity log

Can you add the ability to see activity in the docker logs? Commands like "GET, HEAD, PROPFIND, PUT", etc. It would be useful to see what's going on.

DELETE requests work unauthenticated

A DELETE https://domain.com/ will return 403 Forbidden but actually delete any file (non directory) at the root.

The logs will show that the root folder cannot be deleted, with permission denied. Yet, any contained file will disappear.

nginxwebdav  | 2021/12/17 13:39:16 [error] 13#13: *1 rmdir() "/data/" failed (13: Permission denied), client: 172.30.0.1, server: localhost, request: "DELETE / HTTP/1.1", host: "myhost.ineed.coffee"
nginxwebdav  | 172.30.0.1 - - [17/Dec/2021:13:39:16 +0100] "DELETE / HTTP/1.1" 403 153 "-" "Paw/3.3.2 (Macintosh; OS X/12.0.1) GCDHTTPRequest

PUID and PGID settings ignored and userid 911 used instead

Hello,

I cloned this repository edited docker-compose.yml (set PGID, PUID) and executed docker-compose build && docker-compose up but the uploaded/created files were created with a wrong userid.

how to reproduce
clone 9cf381a

  • edit docker-compose.yml (I think only the ids are important)
@@ -8,10 +8,10 @@ services:
             - ./data:/data
-            - ./htpasswd:/etc/nginx/htpasswd
+              #- ./htpasswd:/etc/nginx/htpasswd
         environment:
-            - PUID=501
-            - PGID=20
+            - PUID=1000
+            - PGID=1000
             - TZ=Europe/Berlin
             - WEBDAV_USERNAME=user
-            - WEBDAV_PASSWORD=password
-            - SERVER_NAMES=localhost
+            - WEBDAV_PASSWORD=mysecurepassword
+            - SERVER_NAMES=localhost,mycomputer
             - TIMEOUTS_S=1200 # these are seconds
  • execute docker-compose build && docker-compose up
  • check that group id 1000 has write access to folder ./data
  • upload a file from webdav client
  • ls -l ./data

what I see
the owner id of the uploaded file is 911

what I expect
the owner id of the uploaded file should be 1000

Win7/Win srv 2012 webdav cleint

Windows not working.
I installed this package from dockerhub, set it up in accordance with the instructions, made https through the proxy manager. All the same errors, the network drive is not connected. In the browser pass authorization normally, the list of files shows.

Files with beginning . not writable

I use this docker on openmediavault. It works, but not with Files and Folder with beginning ".".
E.g. Folder ".logging" or File "/User_home/_MigrationMail/var/mail/user/.INBOX._CNC/dovecot-uidlist".

Can I enable this to store?

Tanks

Attempt to reach compliance with litmus

litmus is "a WebDAV server test suite, which aims to test whether a server is compliant with the WebDAV protocol as specified in RFC2518;".

I containerized it under dgraziotin/litmus. It can be run with docker run --rm -it dgraziotin/litmus:0.13 http://ip:port user password.

Current output:

-> running `basic':
 0. init.................. pass
 1. begin................. pass
 2. options............... FAIL (server does not claim WebDAV compliance)
 3. put_get............... pass
 4. put_get_utf8_segment.. pass
 5. put_no_parent......... pass
 6. mkcol_over_plain...... pass
 7. delete................ pass
 8. delete_null........... pass
 9. delete_fragment....... WARNING: DELETE removed collection resource with Request-URI including fragment; unsafe
    ...................... pass (with 1 warning)
10. mkcol................. pass
11. mkcol_again........... pass
12. delete_coll........... pass
13. mkcol_no_parent....... pass
14. mkcol_with_body....... pass
15. finish................ pass
<- summary for `basic': of 16 tests run: 15 passed, 1 failed. 93.8%
-> 1 warning was issued.

Files permissions

Is it possible to change the copied file permissions when copying from remote to server from -rw------- ?

Usecase I sometimes use the copied files in programs like e.g. photo servers (librephotos) and I cant view my asserts unless I change the copied files permissions

I've looked at nginx.conf and cant figure out if this parameter was set

Also google search didnt helped out much

I've seen the "dav_access user:rw group:rw all:r;" parameter but I have no idea where I should put this in the nginx.conf

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.