Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
docs:guide-user:services:nas:webdav [2023/01/20 16:17] – [Browser UI for the WebDAV share] stokitodocs:guide-user:services:nas:webdav [2023/03/18 20:24] – [Test it] removed cadaver stokito
Line 8: Line 8:
  
 ==== WebDAV with Lighttpd ==== ==== WebDAV with Lighttpd ====
-Assuming that USB drive is mounted to ''/srv/disk/'' folder.+First of all if you already have the Lighttpd then update it and it's modules to avoid conflicts: 
 +<code bash> 
 +opkg update 
 +opkg list-upgradable | cut -f 1 -d ' ' | grep lighttpd | xargs opkg upgrade 
 +</code> 
 + 
 +Assuming that USB drive is mounted to ''/mnt/disk/'' folder.
  
 <code bash> <code bash>
-mkdir -p /etc/lighttpd/conf.d /srv/disk/dav /var/lib/lighttpd +mkdir -p /etc/lighttpd/conf.d /mnt/disk/dav /var/lib/lighttpd 
-chown http:www-data /srv/disk/dav /var/lib/lighttpd+chown http:www-data /mnt/disk/dav /var/lib/lighttpd
 cat << "EOF" > /etc/lighttpd/conf.d/99-disk.conf cat << "EOF" > /etc/lighttpd/conf.d/99-disk.conf
 $HTTP["url"] =~ "^/dav($|/)" { $HTTP["url"] =~ "^/dav($|/)" {
-  server.document-root := "/srv/disk/"+  server.document-root := "/mnt/disk/"
   auth.backend = "plain"   auth.backend = "plain"
   auth.backend.plain.userfile = "/etc/lighttpd/webdav.shadow"   auth.backend.plain.userfile = "/etc/lighttpd/webdav.shadow"
Line 21: Line 27:
     "/dav/" => ("method" => "basic", "realm" => "disk", "require" => "valid-user")     "/dav/" => ("method" => "basic", "realm" => "disk", "require" => "valid-user")
   )   )
 +  auth.cache = ("max-age" => "3600")
 } }
 EOF EOF
Line 54: Line 61:
 To connect to WebDAV see [[https://www.webdavsystem.com/server/access/|Accessing WebDAV Server]]. To connect to WebDAV see [[https://www.webdavsystem.com/server/access/|Accessing WebDAV Server]].
  
-To test WebDAV from command line use ''cadaver'': +A quick test can be done with a ''curl'' (replace the ''youruser''):
- +
-<code> +
-cadaver http://192.168.1.1/dav/ +
-Authentication required for webdav on server `192.168.1.1': +
-Username: youruser +
-Password:  +
-dav:/dav/> ls +
-Listing collection `/dav/': succeeded. +
-    README.txt +
-dav:/dav/> cat README.txt  +
-Displaying `/dav/README.txt': +
-It works! +
-dav:/dav/> exit +
-Connection to `192.168.1.1' closed. +
-</code> +
- +
-If you don't want to install the cadaver you can test with a ''curl'' (replace the ''youruser''):+
  
 <code bash> <code bash>
-curl -u youruser -X PROPFIND -H "Depth: 1http://192.168.1.1/dav/+curl -u youruser:pass -X PROPFIND -H 'Depth: 1http://192.168.1.1/dav/
 </code> </code>
 +You must see a 207 status code and XML response with directory listing.
 +
 +See more details and examples [[https://gist.github.com/stokito/cf82ce965718ce87f36b78f7501d7940|WebDAV with curl]]
  
 ==== Don't forget about encryption! ==== ==== Don't forget about encryption! ====
 Please note that you must configure HTTPS if you are going to access your files from internet. Please note that you must configure HTTPS if you are going to access your files from internet.
-See [[https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_SSL|lighttpd docs: Secure HTTP]]+You'll need to [[docs:guide-user:services:tls:certs|get a TLS certificate]] and  [[https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_SSL|configure lighttpd for HTTPS]]
  
 ==== Browser UI for the WebDAV share ==== ==== Browser UI for the WebDAV share ====
Line 85: Line 78:
  
 <code html> <code html>
-cat << EOF > /srv/disk/dav/index.html+cat << EOF > /mnt/disk/dav/index.html
 <!DOCTYPE html> <!DOCTYPE html>
 <html lang="en"> <html lang="en">
Line 94: Line 87:
 </head> </head>
 <body> <body>
-<script src="https://cdn.jsdelivr.net/gh/dom111/webdav-js/src/webdav-min.js"/>+<script src="https://cdn.jsdelivr.net/gh/dom111/webdav-js/src/webdav-min.js"></script>
 </body> </body>
 </html> </html>
Line 106: Line 99:
  
 == Online apps and PWAs == == Online apps and PWAs ==
-You can also try an online apps that can connect directly to your WebDAV share.+You can also try an online apps that can connect directly to your WebDAV share to backup dataSome notable apps:
   * [[https://diffuse.sh/|Diffuse]] a music player [[https://github.com/icidasset/diffuse|Source code]]   * [[https://diffuse.sh/|Diffuse]] a music player [[https://github.com/icidasset/diffuse|Source code]]
   * [[https://app.super-productivity.com/|Supper Productivity]] a powerful TODO App. [[https://github.com/johannesjo/super-productivity|Source code]]   * [[https://app.super-productivity.com/|Supper Productivity]] a powerful TODO App. [[https://github.com/johannesjo/super-productivity|Source code]]
-  * [[https://app.keeweb.info/|KeeWeb]] a password manager +  * [[https://buttercup.pw/|Buttercup]] a password manager as a browser extension. 
-  * [[https://katomaso.github.io/webdave/|webdave]] a file manager.+  * [[https://app.keeweb.info/|KeeWeb]] a password manager as PWA
  
-You'll need a CORS enabled.+To allow online apps to connect with your WebDAV it need a CORS enabled.
 Here is an example [[https://gist.github.com/stokito/0a6274106d407ba6d9fb776e7773445d]] Here is an example [[https://gist.github.com/stokito/0a6274106d407ba6d9fb776e7773445d]]
  
 == Useful Apps == == Useful Apps ==
 Useful mobile apps that supports WebDAV sync: Useful mobile apps that supports WebDAV sync:
-* [[https://www.orgzly.com/|Orgzly]] Outliner for notes and to-do lists. [[https://github.com/orgzly|Source code]] +  * [[https://www.orgzly.com/|Orgzly]] Outliner for notes and to-do lists. [[https://github.com/orgzly|Source code]] 
-* [[https://www.cloudbeatsapp.com/|CloudBeats]] a music player. Not FOSS!+  * [[https://www.cloudbeatsapp.com/|CloudBeats]] a music player. Not FOSS! 
 + 
 ==== Links and docs ==== ==== Links and docs ====
   * [[https://redmine.lighttpd.net/projects/1/wiki/docs_modauth|Module mod_auth - Using authentication]]   * [[https://redmine.lighttpd.net/projects/1/wiki/docs_modauth|Module mod_auth - Using authentication]]
   * [[https://redmine.lighttpd.net/projects/1/wiki/Docs_ModWebDAV|Module mod_webdav - WebDAV]]   * [[https://redmine.lighttpd.net/projects/1/wiki/Docs_ModWebDAV|Module mod_webdav - WebDAV]]
   * [[https://redmine.lighttpd.net/projects/1/wiki/Docs_ModSecDownload|Module mod_secdownload - Secure and fast downloading]]   * [[https://redmine.lighttpd.net/projects/1/wiki/Docs_ModSecDownload|Module mod_secdownload - Secure and fast downloading]]
-  * [[https://github.com/fstanis/awesome-webdav|Awesome WebDAV]]+  * [[https://github.com/fstanis/awesome-webdav|Awesome WebDAV]] a list of software that works with WebDAV.
   * [[https://gist.github.com/stokito/77c42f8aff2dade91621c1051f73e58c|WebDAV with Lighttpd on Turris Omnia (TurrisOS)]]   * [[https://gist.github.com/stokito/77c42f8aff2dade91621c1051f73e58c|WebDAV with Lighttpd on Turris Omnia (TurrisOS)]]
  
 +==== ZeroConf autodiscovery ====
 +You can advertise a WebDAV share with [[docs:guide-developer:mdns|umdns]].
 +Then it will be seen in Network folder of a file manager in GNOME and KDE and can be [[https://kodi.wiki/view/Avahi_Zeroconf|discovered from a Kodi media player]].
 +
 +Install the umdns package with ''opkg install umdns'' and create a service description file:
 +
 +<code - /etc/umdns/lighttpd_webdav.json>
 +{
 +  "lighttpd_webdav": {
 +    "service": "_webdav._tcp.local",
 +    "port": 80,
 +    "txt": [
 +      "path=/dav/",
 +      "u=media"
 +    ]
 +  }
 +}
 +</code>
 +
 +The reload the umdns service with: ''ubus call umdns reload'' or ''service umdns reload''.
  • Last modified: 2024/12/19 14:35
  • by stokito