墨燝 发表于 3 天前

【异界方块】折腾服务器第二弹——在 1Panel 上部署自己的 WebDAV

上一篇写了 SSH 登录服务器和安装1Panel 面板。装好面板之后,服务器就不只是一个“能连上的机器”了,后面就可以开始放一些真正有用的小服务了。这一篇先写一个比较轻量、但我觉得很实用的东西:WebDAV。简单来说,WebDAV可以理解成一个可以通过网络访问的文件目录。它不一定适合当完整网盘来用,但很适合做一些小型配置文件的同步。比如多个设备之间同步软件设置、同步一些本地配置、保存小文件,都会比较方便。这篇主要包括:
[*]从零构建一个 WebDAV Docker 镜像
[*]在 1Panel 上部署这个 Docker 服务
[*]给 WebDAV 开启反向代理和 HTTPS
[*]同步配置的实际用途

一、为什么要自己搭 WebDAV其实 WebDAV 不一定要自己从零搭。如果只是想要一个“能同步文件”的东西,也可以直接使用一些现成工具,比如:AListNextcloud但问题是服务器本身的硬盘容量不会特别大,当网盘用不够,因此尝试这个轻量化的方案。
二、准备 Dockerfile先准备一个 Dockerfile,用Apache httpd 开启 WebDAV 模块。这里注意,下面的域名、用户名、密码都只是示例,实际使用时换成自己的。FROM httpd:2.4RUN sed -i \
    -e 's/^#LoadModuledav_module/LoadModule dav_module/' \
    -e 's/^#LoadModuledav_fs_module/LoadModule dav_fs_module/' \
    -e 's/^#LoadModuleauth_digest_module/LoadModule auth_digest_module/' \
    -e 's/^#LoadModuleauth_basic_module/LoadModule auth_basic_module/' \
    -e 's/^#LoadModuleauthn_file_module/LoadModule authn_file_module/' \
    /usr/local/apache2/conf/httpd.confRUN mkdir -p/usr/local/apache2/var /var/lib/dav/data \
    && printf '%s\n' \
'ServerName webdav.example.com' \
'' \
'DavLockDB "/usr/local/apache2/var/DavLock"' \
'' \
'Alias /dav "/var/lib/dav/data"' \
'' \
'<Directory "/var/lib/dav/data">' \
'    Dav On' \
'    Options Indexes FollowSymLinks' \
'    IndexOptions Charset=utf-8' \
'' \
'    AuthType Basic' \
'    AuthName "WebDAV"' \
'    AuthUserFile"/user.passwd"' \
'' \
'    Require valid-user' \
'</Directory>' \
> /usr/local/apache2/conf/extra/webdav.conf \
    && echo 'Includeconf/extra/webdav.conf' >> /usr/local/apache2/conf/httpd.conf这里简单解释一下:dav_module 和dav_fs_module 是 WebDAV 相关模块。auth_basic_module 和authn_file_module 用来做用户名密码验证。/var/lib/dav/data是实际存放文件的目录。/dav 是 WebDAV 的访问路径。也就是说,之后访问的地址大概会是:https://webdav.example.com/dav/当然,这里的webdav.example.com 要换成自己的域名。 三、准备用户名和密码文件上面的配置里有一行:AuthUserFile"/user.passwd"这说明 WebDAV 登录时会读取/user.passwd 这个文件。我们可以用 htpasswd生成用户名和密码。比如用户名是webdav_user,可以执行:docker run --rmhttpd:2.4 htpasswd -Bbn webdav_user "这里换成你的强密码" > user.passwd生成之后,会得到一个 user.passwd文件。这个文件后面需要挂载到容器里面。这里建议密码尽量复杂一点,不要使用常用密码。因为WebDAV 后面是要暴露到公网的,弱密码风险比较高。
四、准备 docker-compose.yml接下来写一个docker-compose.yml。比如可以这样:version:"3.8"
services:webdav:    build: .    image: mydav    container_name: mydav    restart: unless-stopped    ports:      - "127.0.0.1:18080:80"    volumes:      - /home/ubuntu/webdav:/var/lib/dav/data      -/home/ubuntu/webdav-lock:/var/lib/dav/lock      -/opt/1panel/apps/webdav/user.passwd:/user.passwd:ro
这里有几个地方需要注意。第一,/home/ubuntu/webdav 是实际存放 WebDAV 文件的目录。第二,/opt/1panel/apps/webdav/user.passwd是刚刚生成的密码文件。第三,端口这里写的是:127.0.0.1:18088:80意思是只把服务暴露在服务器本机的18088 端口上,而不是直接暴露到公网。之后我们会通过 1Panel的反向代理访问它。这样做的好处是:外部用户不能直接访问服务器IP:18088,只能通过配置好的域名和 HTTPS入口访问。 五、在 1Panel 中部署 Docker 服务接下来进入 1Panel。可以在“容器”或者“应用 /编排”相关的位置,新建一个 Compose 项目。大概流程是:
[*]创建一个项目目录
[*]上传或写入 Dockerfile
[*]上传或写入 docker-compose.yml
[*]上传 user.passwd 文件
[*]创建 data 目录
[*]启动 Compose 项目
如果一切正常,服务启动后,可以在容器列表里看到webdav 容器。
六、在 1Panel 中开启反向代理接下来进入 1Panel 的“网站”功能。如果还没有安装OpenResty,需要先按提示安装。然后新建网站,类型选择“反向代理”。填写你的主域名:webdav.example.com和代理地址:http://127.0.0.1:18088创建之后,再给这个网站申请 HTTPS 证书。证书申请成功后,建议开启强制 HTTPS。 七、WebDAV 可以用来同步什么WebDAV最大的用途是同步“小而重要”的配置。1. 同步 Netcatty 的设置上一篇写 SSH 的时候用到了Netcatty。如果多台电脑都在用 SSH客户端,那么主机列表、终端配置、连接设置这些东西就有同步需求。这时 WebDAV就可以作为一个配置同步后端。2. 同步 CC Switch 的配置如果使用 CC Switch管理一些模型服务商和本地设置,也会有多设备同步的需求。
3. 同步梯子的本地设置还有一些本地代理工具、订阅转换工具、规则配置,也可能会有跨设备同步需求。这类东西一般不大,但手动复制很烦。这样换电脑、重装系统,或者多设备共用时,就不用到处找配置文件了。到这里,一个简单的 WebDAV服务就搭好了。这次的思路大概是:先用 Dockerfile 构建一个Apache WebDAV 镜像再用 1Panel 部署 Docker 服务然后通过 1Panel 反向代理绑定域名和HTTPS最后把它作为小型配置同步空间使用它不一定适合当完整网盘,但是很适合做“配置同步中转站”。比如 SSH 客户端配置、CC Switch配置、本地代理工具配置、一些小脚本和规则文件,都可以放在这里同步。服务器折腾到这里,就已经不只是“开了一台机器”了,而是开始变成一个自己的小型基础设施。后面如果继续写的话,可以再折腾一点更实际的东西,比如部署Vaultwarden、搭个人网站、做文件管理,或者给这些服务统一配置 HTTPS 和反向代理。



泥潭療養院

天恩 发表于 3 天前

虽然听不懂也看不懂但是莫名的感觉很厉害,膜拜了:'(

商人弗霖 发表于 3 天前

商人弗霖打开异界的百宝袋,袋口微光一闪,一枚【蓝色方块】轻巧地蹦了出来。

aaawwwww 发表于 3 天前

晕了,膜拜,改天来试试搭建一个玩玩

ytujnq 发表于 3 天前

这就相当于自己的轻量云盘吗?很实用呀

少炎明神 发表于 3 天前

@。@已经开始听不懂,部署这么难的吗
好难啊,我觉得我如果要网盘的话,我真的会选择买个成品NAS了

yota 发表于 3 天前

有一点点看晕古七了@@,所以当我学会后,我能整个尤塔云网盘了?欸!

2302594 发表于 3 天前

果然想要一个自己的服务器没有那么简单啊

娱乐法师火布偶 发表于 3 天前

以前在一些项目打包的时候写过dockerfile,不过基本上也是靠查网络信息才会写

哈哈哈哈_ 发表于 3 天前

WebDAV只适合自己一个人用,就比如同步个人笔记什么的,像图片视频就不怎么好管理

2297988 发表于 前天 23:00

跟着楼主的教程,就连原本复杂的折腾也变得简单起来了XD
好喜欢这类细致的工作

cdcai 发表于 前天 23:27

很专业的知识,已经跟不上了{:6_167:}

万俟 发表于 昨天 12:32

感觉已经超过平时自用的范畴了,不过可以学学提升技能

a1b2a9 发表于 4 小时前

好的,第二贴就跟不上了……不过我记得国内想搞网站还得去申请,好麻烦来着
页: [1]
查看完整版本: 【异界方块】折腾服务器第二弹——在 1Panel 上部署自己的 WebDAV