Seafile WebDAV Server(SeafDAV) is added in seafile server 2.1.0.
In the wiki below, we assume your seafile installation folder is /data/haiwen
.
The configuration file is /data/haiwen/conf/seafdav.conf
. If it is not created already, you can just create the file.
[WEBDAV] # Default is false. Change it to true to enable SeafDAV server. enabled = true port = 8080 # Change the value of fastcgi to true if fastcgi is to be used fastcgi = false # If you deploy seafdav behind nginx/apache, you need to modify "share_name". share_name = /
Every time the configuration is modified, you need to restart seafile server to make it take effect.
./seafile.sh restart
Your WebDAV client would visit the Seafile WebDAV server at http://example.com:8080
[WEBDAV] enabled = true port = 8080 fastcgi = false share_name = /
Your WebDAV client would visit the Seafile WebDAV server at http://example.com/seafdav
[WEBDAV] enabled = true port = 8080 fastcgi = true share_name = /seafdav
In the above config, the value of '''share_name''' is changed to '''/seafdav''', which is the address suffix you assign to seafdav server.
The corresponding Nginx configuration is (without https):
location /seafdav { fastcgi_pass 127.0.0.1:8080; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; access_log /var/log/nginx/seafdav.access.log; error_log /var/log/nginx/seafdav.error.log; }
Nginx conf with https:
location /seafdav { fastcgi_pass 127.0.0.1:8080; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param HTTPS on; client_max_body_size 0; access_log /var/log/nginx/seafdav.access.log; error_log /var/log/nginx/seafdav.error.log; }
First edit apache2.conf
file, add this line to the end of the file (or add it to httpd.conf
depending on your Linux distro):
FastCGIExternalServer /var/www/seafdav.fcgi -host 127.0.0.1:8080
Note, /var/www/seafdav.fcgi
is just a placeholder, you don't need to actually have this file in your system.
Second, modify Apache config file (site-enabled/000-default):
Based on your apache configuration when you [[Deploy Seafile with apache|deployed seafile with Apache]], add seafdav related config:
ServerName www.myseafile.com DocumentRoot /var/www Alias /media /home/user/haiwen/seafile-server/seahub/media RewriteEngine On # # seafile fileserver # ProxyPass /seafhttp http://127.0.0.1:8082 ProxyPassReverse /seafhttp http://127.0.0.1:8082 RewriteRule ^/seafhttp - [QSA,L] # # seafile webdav # RewriteCond %{HTTP:Authorization} (.+) RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1] RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L] # # seahub # RewriteRule ^/(media.*)$ /$1 [QSA,L,PT] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Based on your apache configuration when you Enable Https on Seafile web with Apache, add seafdav related config:
ServerName www.myseafile.com DocumentRoot /var/www Alias /media /home/user/haiwen/seafile-server/seahub/media SSLEngine On SSLCertificateFile /etc/ssl/cacert.pem SSLCertificateKeyFile /etc/ssl/privkey.pem RewriteEngine On # # seafile fileserver # ProxyPass /seafhttp http://127.0.0.1:8082 ProxyPassReverse /seafhttp http://127.0.0.1:8082 RewriteRule ^/seafhttp - [QSA,L] # # seafile webdav # RewriteCond %{HTTP:Authorization} (.+) RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1] RewriteRule ^(/seafdav.*)$ /seafdav.fcgi$1 [QSA,L] # # seahub # RewriteRule ^/(media.*)$ /$1 [QSA,L,PT] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
On Windows it is recommended to use a webdav client software such as Cyberduck or BitKinex. The implementation of webdav support in Windows explorer is not very usable since:
Windows explorer requires to use HTTP digest authentication. But Seafile can't support this because it doesn't store plain text passwords on the server. HTTP basic authentication is only supported for HTTPS (which is reasonable). But explorer doesn't accept self-signed certificates.
The conclusion is if you have a valid ssl certificate, you should be able to access seafdav from Windows explorer. Otherwise you should use a client software. It's also reported that Windows XP doesn't support HTTPS webdav.
On Linux you have more choices. You can use file manager such as Nautilus to connect to webdav server. Or you can use davfs2 from the command line.
To use davfs2
sudo apt-get install davfs2 sudo mount -t davfs -o uid= https://example.com/seafdav /media/seafdav/
The -o option sets the owner of the mounted directory to so that it's writable for non-root users.
It's recommended to disable LOCK operation for davfs2. You have to edit /etc/davfs2/davfs2.conf
use_locks 0
Finder's support for WebDAV is also not very stable and slow. So it is recommended to use a webdav client software such as Cyberduck.
By default, seafdav is disabled. Check whether you have enabled = true
in seafdav.conf
.
If not, modify it and restart seafile server.
If you deploy SeafDAV behind Nginx/Apache, make sure to change the value of share_name
as the sample configuration above. Restart your seafile server and try again.