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、下载安装

解压、进入目录:

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

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

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、安装过程

  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 访问文件


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

×

喜欢就点赞,疼爱就打赏

github