Linux文件共享服务之webdav服务器

Linux文件共享服务之webdav服务器

文件共享是我长期使用的服务,一来是因为原来在办公室工作 ,需要随时调阅电脑上的文件查看;二来是所有的资料随时需要存取,查看。
webdav是一个不错的选择,特别是在Linux电脑上,能更好的做好文件共享,现在将需要浏览的文件放服务器上,想看的时候就可以随时调阅。

一、WebDav介绍

WebDAV 基于 HTTP 协议的通信协议,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

二、WebDav

项目地址:https://github.com/hacdias/webdav

下载对应的版本(也有windows版本、各类服务器系统等):

https://github.com/hacdias/webdav/releases/

1、下载安装

解压、进入目录:

1
2
3
wget https://github.com/hacdias/webdav/releases/download/v4.2.0/linux-amd64-webdav.tar.gz
tar -zxvf linux-amd64-webdav.tar.gz
cd linux-amd64-webdav

运行方式:

1
./webdav -config config.yaml	#config.yaml是配置文件

config.yaml配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Server related settings
address: 0.0.0.0 #地址,默认即可
port: 8080 #webdav访问端口
auth: true #是否启用用户登陆,启用后users段可用
tls: false #是否启用https加密,启用后,下二行证书要配置路径
cert: cert.pem #公钥
key: key.pem #私钥
prefix: / #webdav的访问前缀,亦即访问的根目录,可设置
debug: false

# Default user settings (will be merged)
scope: . #访问的目录路径
modify: true #是否允许修改
rules: []

# CORS configuration(跨域设置)
cors:
enabled: true
credentials: true
allowed_headers:
- Depth
allowed_hosts:
- http://localhost:8080
allowed_methods:
- GET
exposed_headers:
- Content-Length
- Content-Range

users:
- username: admin #访问用户名
password: admin #访问密码
scope: /a/different/path #访问路径(服务器路径)
- username: encrypted #第二个用户
password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"
- username: "{env}ENV_USERNAME" #第三个用户
password: "{env}ENV_PASSWORD"
- username: basic #第四个用户
password: basic
modify: false
rules:
- regex: false
allow: false
path: /some/file
- path: /public/access/
modify: true

以上配置原文复制后不能启动:将注释删除,第二、三、四用户删除后可启动。

2、服务自启

可通过systemd 服务开启自启动:

webdav.service:(/etc/systemd/system/webdav.service 或者:/lib/systemd/system/webdav.service)

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=WebDAV server
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/webdav --config /opt/webdav.config #(路径根据自己的实际修改)
Restart=on-failure

[Install]
WantedBy=multi-user.target

服务管理:

1
2
3
4
5
sudo systemctl start webdav
sudo systemctl stop webdav
sudo systemctl status webdav
sudo systemctl enable webdav
sudo systemctl disable webdav

3、nginx 反向代理:

1
2
3
4
5
6
7
8
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}

三、webdavSmump

项目地址:https://github.com/sangunsun/webdavSmump/releases

1、系统特点

安装简单,如果以https方式运行就一个可执行文件、一个配置文件,一个公钥文件、一个私钥文件;如果是以http方式运行只需要前两个文件就可以正常运行。
支持多用户登录,不同的用户访问不同的服务器文件夹
加密通讯
方便互联网和内部访问
可运行在windows、linux、树莓派、macos等几乎所有操作系统下(只要golang支持的操作系统都可以运行)
性能较好,文件传输输快,可同时传输多个文件。
在webdav中用户名(username),访问路径(URL),服务器上的文件路径(userpath)是一个多对多对多的关系,实现起来比较复杂。本项目暂把这个关系简化成了一对一对一的关系。

2、配置文件

config.json:

1
2
3
4
5
6
7
8
9
10
{
"serviceport":8899,
"cakey":"server.key",
"cacrt":"server.crt",
"prefixdir":"/srv/dev-disk-by-uuid-79746475560579FF/",
"users":[
{"username":"abc","password":"123","userpath":"minaaa"},
{"username":"abc2","password":"202cb962ac59075b964b07152d234b70","userpath":"abc2"}
]
}
  • serviceport:服务端口
  • cakey:私钥证书存取路径(如无需证书则可删除)
  • cacrt:公钥证书存取路径(如无需证书则可删除)
  • prefixdir:服务器端共享文件夹的前缀,和userpath合起来组成共享给某个用户的文件夹在服务器上的绝对路径
  • users:用户集合,每一行对应一个用户描述,分别是用户名、用户口令(可以是明文也可以放置经md5哈稀后的口令)、服务器上分配给用户的共享文件夹名
  • webdav的存取路径名和用户名一致(即webdav的访问路径是形如https://xx.xx.xx.xx:8899/username) ,配置文件不再体现。

3、安装过程

  1. 下载并编译主程序文件
  2. 把配置文件config.json和主程序文件放入同一文件夹中
  3. 在同一目录内放置供https通讯使用的公钥文件和私钥文件(没公钥文件和私钥文件也没关系,系统会转为http方式运行)
  4. 按实际情况编辑好配置文件config.json并保存
  5. 运行主程序文件
  6. 用任一webdav客户端软件访问本服务程序(直接用浏览器访问会返回”Method Not Allowed”,另外windows下的”添加一个网络位置”功能也不能正常访问)

四、连接和访问

1、手机端访问

1、访问文件用ES文件浏览器,FTP 栏内有webdav选项,可新建访问

2、QuickEdit可直接访问webdav内的文件并编和保存

这两个工具是webdav的绝佳伴侣

2、手机端的应用

1、各类软件的webdav备份可用,如:开源阅读、M 浏览器、Tita搜索等软件的备份恢复,在自己建的服务器内,安全又放心。

2、自己的Keedroid密码管理软件的存储和使用

3、Windows端访问:

挂载:使用 Windows 的映射网络硬盘来通过 WebDAV 访问文件


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

×

喜欢就点赞,疼爱就打赏