Droppy 教程 | 轻量级的文件共享服务
唠唠闲话
在数字化时代,文件共享成为了日常工作的重要组成部分。特别是对于那些需要快速、高效地分享大文件的人来说,拥有一个简单、可靠且易于管理的平台至关重要。
下边要介绍的是 Droppy,一个轻量级、功能强大的自托管文件共享服务。教程将介绍如何使用 Docker 和 Nginx 来部署 Droppy,打造一个既方便又高效的文件共享环境。
项目地址:https://github.com/droppyjs/droppy
测试环境
以下是个人的测试环境
1 | ❯ uname -i |
Docker 配置 Droppy
首先,通过 docker-compose
来快速部署 Droppy:
1 | version: '3' |
在这个配置中,文件将存储在当前目录下的 files
文件夹中,配置信息则保存在 config
文件夹中。
文件说明:
files
文件夹:存储文件,所有用户共享这一文件夹config/db.json
:存储 Droppy 的配置信息,包括用户信息、权限等config/config.json
:存储服务启动的配置信息,包括端口、访问限制等
Nginx 配置
接下来配置 Nginx,80 端口进行重定向
1 | server { |
主要在配置 443 端口,配置如下:
1 | server { |
各项指令的作用如下。
请求头设置:
proxy_set_header Host $host;
:将请求头中的 Host 字段设置为客户端请求的 Hostproxy_set_header Upgrade $http_upgrade;
:这个指令对于 WebSocket 支持是必须的。如果 Droppy 使用了 WebSocket,这将确保升级请求被正确传递proxy_set_header Connection $http_connection;
:传递正确的 Connection 头,这对于一些特殊协议(如 WebSocket)的连接是必需的proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
:将用户的真实 IP 地址传递给 Droppy,这在日志和一些网络策略中非常有用proxy_set_header X-Forwarded-Proto $scheme;
:传递原始请求的协议(如 http 或 https)proxy_set_header X-Real-IP $remote_addr;
和proxy_set_header X-Real-Port $remote_port;
:分别传递用户的 IP 地址和端口
其他设置:
proxy_http_version 1.1;
:设置 HTTP 协议版本为 1.1proxy_cache off;
、proxy_buffering off;
、proxy_request_buffering off;
:这些指令禁用了代理层面的缓存和缓冲,有助于减少内存使用,并允许大文件流式传输proxy_redirect off;
:禁用代理重定向,避免修改后端服务器的重定向proxy_ignore_client_abort on;
:即使客户端中断连接,也会继续向后端 Droppy 服务器发送请求proxy_connect_timeout 7200;
、proxy_read_timeout 7200;
、proxy_send_timeout 7200;
:设置连接、读取和发送超时时间,这里设置为 7200 秒,以便支持长时间连接client_max_body_size 0;
:这里设置为 0,表示取消上传文件大小的限制
ssl 证书的获取可以参考 『Let's Encrypt 域名证书增强网站安全』。
使用 Droppy
部署完成后,通过浏览器访问 Droppy。
-
首次访问,登录界面如下,输入用户名和密码即可登录,默认为管理员账号:
-
文件上传,左上角四个按钮分别为上传文件、文件夹,创建文件、文件夹:
-
点击文件或文件夹右侧按钮,进行下载、分享或删除操作:
-
管理员账号还可以设置用户权限,创建用户,删除用户,重置密码等。这些操作可以通过右上角的设置进入:
通常情况下,新增用户分配为普通权限就够了。
结语
以上,Droppy 结合 Docker + Nginx ,提供一个强大的文件共享和存储解决方案。
文章采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自 学习乐园!
评论