为了随时查看下载文件,或者传输大文件,我使用云服务器配置了一个文件存储以及传输的网页,支持上传下载、断点传输、访问控制、自定义页面等。
本次配置选择了作为一键化配置,采用docker的方式,我将我能够运行的docker命令以及配置文件放在下面,并添加了注释,可以作为示例参考。
#!/bin/bash
# 如果存在同名容器,则停止并删除
if [ "$(docker ps -a -f "name=dufs-server" --format "{{.Status}}")" ]; then
docker stop dufs-server
docker rm dufs-server
fidocker run -d \ # -d 是后台运行
--name dufs-server \
-v /files:/data \
-v /config.yaml:/etc/dufs/config.yaml \
-p 8443:8443 \ # 这里使用了8443端口,原因在后文解释
sigoden/dufs \
--config /etc/dufs/config.yaml # 使用配置文件,不采用参数启动的方式
config.yaml :
serve-path: '.' # 服务根目录(容器内路径),当前配置为当前目录(需挂载宿主机目录)
bind: 0.0.0.0 # 监听地址(0.0.0.0 表示监听所有IP)
port: 8443 # 服务端口(容器内端口,需映射到宿主机)
# path-prefix: /dufs # URL路径前缀(访问时需加 `/dufs`)hidden: # 隐藏的文件/目录(对用户不可见)
- tmp
- '*.log'
- '*.lock'
- '*.pem'auth: # 认证规则(格式:用户名:密码@路径:权限)
- 'admin:admin@/:rw' # admin 用户对根目录有读写权限
- 'user:pass@/data/share:rw' # user 用户对 /src 和 /share 有读写权限
- 'user1:pass1@/data/share:ro' # user 用户对 /src 和 /share 有只读权限
# - '@/' # 匿名用户对根目录只读allow-all: false # 是否允许所有操作(若为 true,覆盖其他 allow-* 参数)
allow-upload: true # 允许上传
allow-delete: true # 允许删除
allow-search: true # 允许搜索
allow-symlink: true # 允许符号链接
allow-archive: true # 允许打包下载
enable-cors: true # 启用跨域资源共享(CORS)
# render-index: true # 渲染 index.html 文件
# render-try-index: true # 尝试加载 index.html 作为默认页
# render-spa: true # 支持单页应用(SPA)路由 (启用会出现Not Found页面)
# assets: ./assets/
log-format: '$remote_addr "$request" $status $http_user_agent' # 自定义日志格式
log-file: ./dufs.log # 日志输出文件(容器内路径)
compress: low # 压缩级别(low/medium/high)
tls-cert: /data/cert.pem # https证书
tls-key: /data/key.pem # https证书私钥
需要注意的是,如果是国内服务器,可能需要配置docker镜像源,可以自行搜索配置方式,我的服务器是在海外,可以直接拉取。
第二步:Cloudflare代理并转发到其他端口
其实完全可以使用别家的DNS服务,不过如果想隐藏服务器真实IP或者想白嫖Cloudflare的CDN可以看看以下步骤。
首先,启用代理:
如果没有搭建网站,可以直接使用80或者443端口。不过我的服务器还挂着博客,所以需要转发到其他端口。
不能实现
主机名等于dufs.example.com时,重写到8443
这里需要注意的是免费版的Cloudflare默认只支持代理发往下列 HTTP/HTTPS 端口的流量。(参考自)
HTTP: 80, 8080, 8880, 2052, 2082, 2086, 2095
HTTPS: 443, 2053, 2083, 2087, 2096, 8443
所以如果想走代理就不能使用默认的5000端口,需要更改为以上的端口之一。
启用https服务可以在Cloudflare的SSL/TLS->源服务器
申请源服务器的证书,能够使用很长时间,不用每隔一段时间就要自己重新配置。另外,记得打开“始终使用 HTTPS”。
访问经Cloudflare代理的网页时,Cloudflare会自动帮你的网页提供有效证书,可以看到我的博客直接显示了Google的证书。
所以我一直认为Cloudflare是赛博大善人的说法还是有点道理的。
另外,如果是国内服务器可能不支持Cloudflare代理,因为备案检查可能会检查到备案的IP和实际IP不一致(是Cloudflare代理服务器的IP)。我看到过有使用转发绕开备案的方法,但一直没有成功,有兴趣的可以去试试。
文章评论
mprnunklszfuqjgzolwhhnxvhjlruo
ryhviqugoqjuzigkrksfxvgxhkirsp