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、下载安装
解压、进入目录:
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
运行方式:
./webdav -config config.yaml #config.yaml是配置文件
config.yaml配置文件:
# 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)
[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
服务管理:
sudo systemctl start webdav
sudo systemctl stop webdav
sudo systemctl status webdav
sudo systemctl enable webdav
sudo systemctl disable webdav
3、nginx 反向代理:
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
1、系统特点
安装简单,如果以https方式运行就一个可执行文件、一个配置文件,一个公钥文件、一个私钥文件;如果是以http方式运行只需要前两个文件就可以正常运行。
支持多用户登录,不同的用户访问不同的服务器文件夹
加密通讯
方便互联网和内部访问
可运行在windows、linux、树莓派、macos等几乎所有操作系统下(只要golang支持的操作系统都可以运行)
性能较好,文件传输输快,可同时传输多个文件。
在webdav中用户名(username),访问路径(URL),服务器上的文件路径(userpath)是一个多对多对多的关系,实现起来比较复杂。本项目暂把这个关系简化成了一对一对一的关系。
2、配置文件
config.json:
{
"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、安装过程
- 下载并编译主程序文件
- 把配置文件config.json和主程序文件放入同一文件夹中
- 在同一目录内放置供https通讯使用的公钥文件和私钥文件(没公钥文件和私钥文件也没关系,系统会转为http方式运行)
- 按实际情况编辑好配置文件config.json并保存
- 运行主程序文件
- 用任一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 访问文件
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 vault@coolxy.cn