在 Mac mini Server 上配置 WebDAV 文件共享

“ 上一篇文章《Mac mini 搭建 NAS(文件共享服务器)教程》我们搞定了Mac mini 用作文件共享的局域网访问,这篇我们来完善互联网访问,让我们无论在哪里,都可以轻松获取到保存在家里 Mac mini 的文件、视频等资料。”

在 Mac mini Server 上配置 WebDAV 文件共享

虽然诸多的云盘解决了大部分文件多设备远程存储调用的问题,但总存在不足,需要启动App进行上传或使用自动备份策略,某些文件(影视资源)会莫名消失等等。而 macOS 文件共享与 WebDAV 作为一个网络磁盘,是可以像文件夹一般访问、操作,还可以利用 macOS 的批量重命名等操作。

在 Mac mini Server 上配置 WebDAV 文件共享

不过,使用 WebDAV 具有一定门槛,会使用命令工具与配置 Unix/Linux 服务器的人可以得心应手,普通人依据教程虽然可以实现,但碰到不仔细导致错误就没办法解决了,所以这边文档就是为此而来,原本,也是替向我付费咨询用户写的。

01

配置Apache

为了简化教程,选择 macOS 内置的 Apache 程序,有条件的可以通过 Homebrew 安装 Apache, 或者编译 Nginx 用于 WebDAV。

配置步骤为:先完成 80 端口 http 的访问,再配置 443 端口 https 的访问,最后通过路由器映射端口与开启 DDNS 服务进行外部网络访问。

全程需要使用「终端」进行配置。

sudo apachectl start

# 停止内置 Apache 方法

sudo apachectl stop

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

本机访问 localhost,可以看到 It’s works! 的页面

由于 macOS 无法以管理员运行 UI 文本器,这里建议尝试使用 Vim 。学习几分钟就足够应付配置文件的了。

方向键或者 h、l、k、j 移动光标,Ctrl + b、Ctrl + f 上下翻页

/xxx 搜索包含xxx字符串的位置,n 继续搜索下一个,N 搜索上一个

i 进入输入模式,可以输入与删除

Esc 退出输入模式进入命令模式

在命令模式键入 x 删除光标当前字符,dw 删除当前光标单词,dd 删除当前行

:x 保存退出

主配置文件

sudo vim /etc/apache2/httpd.conf

# 与主机名称一致

ServerName macmini.local:80

# WebDAV 相关库文件与配置文件

# 取消以下行的注释( 按键 x 删除行首 # 号)

LoadModule dav_module libexec/apache2/mod_dav.so

LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so

LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so

LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so

Include /private/etc/apache2/extra/httpd-dav.conf

WebDAV 模块配置

sudo vim /etc/apache2/extra/httpd-dav.conf

DavLockDB /opt/webdav/var/DavLock

#设置外置磁盘为共享目录

Alias /dirname “/Volumes/GT35/SSD-Share”

<Directory “/Volumes/GT35/SSD-Share”>

Dav On

AuthType Digest

AuthName “webdav”

# You can use the htdigest program to create the password database:

# htdigest -c “/usr/user.passwd” DAV-upload admin

AuthUserFile “/opt/webdav/user.passwd”

Require valid-user

AuthDigestProvider file

# Allow universal read-access, but writes are restricted

# to the admin user.

# <RequireAny>

# Require method GET POST OPTIONS

# Require user username

# </RequireAny>

</Directory>

02

授权服务的目录操作权限

创建DavLockDB 目录

sudo mkdir -p /opt/webdav/var

sudo chown _www:_www /opt/webdav/var

接着打开 macOS 设置,隐私与安全性,完全磁盘访问权限,依次添加 httpd 与 htdigest 。

在 Mac mini Server 上配置 WebDAV 文件共享

添加方法为点按 + 号,在打开的访达窗口按 Shift+Command+G 调出路径访问方式,输入 /usr/sbin/httpd 回车,找到 httpd 命令添加。

在 Mac mini Server 上配置 WebDAV 文件共享

授权完成后配置 WebDav 用户

sudo touch /opt/webdav/user.password

sudo chown _www:_www /opt/webdav/user.password

#webdav 不动, username 是你需要设置访问 WebDav 服务器的用户名

sudo htdigest /opt/webdav/user.password webdav username

创建好用户密码进入下一步。

03

运行与调试

apachectl configtest 检查配置文件是否有问题,仅仅输出 Syntax OK 代表配置没有问题,如有问题按提示检查配置文件。

apachectl graceful 重载配置文件使生效。

问题日志可以到 /var/log/apache2/error_log 下查看 cat /var/log/apache2/error_log

打开本机或其他局域网 Mac 的访达,按 Command+k 连接服务器,dirname 为 httpd-dav.conf 中定义的 Alias 路径

在 Mac mini Server 上配置 WebDAV 文件共享

输入之前配置好的用户名密码应该就能连接成功了,打开后界面跟使用 SMB 共享的结果一致。至此,WebDav 就可以使用了,但是使用 http 容易被嗅探用户密码与传输内容,采用 HTTPS 更佳。

04

开启SSL

httpd.conf,取消注释以下行 sudo vim /etc/apache2/httpd.conf

Include /private/etc/apache2/extra/httpd-ssl.conf

LoadModule ssl_module libexec/apache2/mod_ssl.so

LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so

sudo vim /etc/apache2/extra/httpd-ssl.conf

# 修改为主机名称

ServerName macmini.local:443

#注意以下位置与自签名证书存放位置一致

SSLCertificateFile “/private/etc/apache2/server.crt”

SSLCertificateKeyFile “/private/etc/apache2/server.key”

由于动态 IP 的问题,无法使用常规的证书服务,可以尝试使用动态 DNS 服务提供的证书服务(多半收费),也可以使用自签名证书。

如果觉得使用 openssl 生成证书太过复杂,可以查找在线工具生成证书,更改名称放入上面指定的路径也行

生成密钥和证书

cd #进入当前用户 Home 目录

openssl genrsa -des3 -out server.key 1024 #生成服务器私钥

#Enter pass phrase for server.key: (输入密码,越复杂就越安全)

#Verifying – Enter pass phrase for server.key: (确认密码)

cp server.key server.key.org

openssl rsa -in server.key -out server.key #从密钥中删除密码(以避免系统启动后被询问口令)

openssl req -new -key server.key -out server.crt #生成服务器证书请求

下面的交互中证书的其他信息可以随意填,当到 Common Name (eg, YOUR name) []: 时需要填入 ServerName 中定义的域名或者 IP,我这里范例为 macmini.local

openssl x509 -req -days 365 -in server.crt -out server.crt -signkey server.key

#将证书放入配置文件指制定的路径

sudo cp server.crt /etc/apache2

sudo cp server.key /etc/apache2

#重载配置生效

sudo apachectl graceful

现在,你的 WebDav 就可以通过 https 访问了。虽然自签名证书无法解决 DNS 欺骗的隐患,但比 http 还是好很多。

05

在路由器映射端口

在路由器的界面找到此功能,将 80 或 443 端口映射到服务器的局域网 IP 即可。

鉴于部分家庭网络 80、443 端口无法入站访问,需要路由器支持外部端口与内部端口差异映射,外部通过 8888 等自定义端口访问内部 80、443 端口。

找到广域网 IP (比如切换到手机网络)进行测试。如果成功连接,就可以注册一个动态域名解析服务,这个主流路由器通常都会带有这项服务。免费的动态域名解析的缺点是,在路由器刚更换完 IP 后访问可能因 DNS 服务器暂未更新,会导致无法访问,多尝试几次或等待一段时间即可。

06

客户端

经测试,macOS 访达、手机上 FE文件管理器、Infuse 等均可以通过映射端口正常访问。

Windows 资源管理器暂时不受支持。

(0)
麦克哥麦克哥

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注