Filestash:自托管统一文件管理器,连接SFTP、S3等多协议存储

Filestash自托管文件管理器
于 2026-08-04 06:55:45 修改
·本内容遵循CC 4.0 BY-SA版权协议

1. 项目概述:为什么我们需要一个“网页版”的文件管理器?

如果你经常需要在不同设备、不同网络环境下访问和管理文件,比如从家里的电脑查看公司服务器上的文档,或者用手机临时处理一下NAS里的照片,你大概能体会到传统方式的麻烦。FTP客户端、SMB挂载、各种云盘客户端……工具一堆,协议各异,操作还不统一。Filestash的出现,就是为了解决这个痛点。它本质上是一个自托管的Web应用,给你一个统一的浏览器界面,让你能安全地连接和管理后端各种各样的存储服务,像是SFTP服务器、S3对象存储、Git仓库,甚至是MySQL数据库里的BLOB字段,都能当成文件系统来浏览和操作。

我第一次接触Filestash,是因为要给一个非技术团队搭建一个简单的文件共享门户。他们需要从公司的SFTP服务器上下载报告,但又不想(也不会)装任何FTP软件。Filestash完美地充当了这个“中间人”的角色:我在内网服务器上部署好,他们打开浏览器,输入地址,登录后就能看到一个直观的网盘式界面,直接操作后端SFTP的文件。从那以后,无论是个人NAS的远程管理,还是作为轻量级的网盘替代方案,Filestash都成了我工具箱里的常客。它就像一个万能的文件协议转换器,把那些专业、复杂的存储后端,变成了人人都能轻松使用的网页文件夹。

2. 核心设计思路:Filestash如何做到“以一当十”?

2.1 架构定位:连接器(Connector)模式

Filestash的核心设计非常巧妙,它没有尝试去重新发明轮子——也就是自己搞一套存储系统。相反,它采用了“连接器”架构。你可以把Filestash本身看作一个功能强大的“文件管理器外壳”或“统一操作界面”,而它的实际文件存取能力,则通过一个个独立的“连接器”来提供。

每个连接器都是一个针对特定协议或服务的适配器。例如:

  • SFTP连接器:负责与SSH文件传输协议服务器通信。
  • S3连接器:负责与亚马逊S3、MinIO、阿里云OSS等兼容S3协议的对象存储交互。
  • WebDAV连接器:用于连接Nextcloud、OwnCloud或其他WebDAV服务。
  • Git连接器:可以直接浏览Git仓库的文件结构,甚至查看提交历史。
  • 后端(Backend):Filestash服务本身,提供Web界面、用户会话、插件管理等。

这种设计带来了巨大的灵活性。作为使用者,你面对的是一个始终如一的Web界面,无论后端是哪种存储,你的操作体验——上传、下载、重命名、预览——都是相同的。作为部署者,你只需要维护一个Filestash实例,就能为团队提供访问多种存储的统一入口,极大地简化了运维和用户培训成本。

2.2 安全至上的设计哲学

作为一个可能暴露在公网、用于访问敏感数据的工具,安全是Filestash的重中之重。它在这方面的考虑非常周到:

  1. 无状态与零知识架构:Filestash服务器本身不存储你的文件内容,也不持久化你的存储后端密码(如SFTP密码、S3密钥)。它只在当前用户会话期间,在内存中临时保存这些凭证以建立连接。一旦你关闭浏览器或会话过期,这些信息就消失了。这意味着即使Filestash的服务器被攻破,攻击者也无法直接获取到你后端存储的永久凭据或大量文件数据。
  2. 端到端加密(可选):对于S3等对象存储,Filestash支持在浏览器端对文件进行加密后再上传,密钥由用户自己保管。这样,存储在云端的文件是密文,只有通过Filestash界面并使用正确密钥解密才能查看,实现了真正的零知识存储。
  3. 细粒度的访问控制:管理员可以配置多用户,并为每个用户分配不同的连接器和权限。比如,用户A只能访问SFTP服务器上的/reports目录,且只有只读权限;用户B则可以完全访问某个S3存储桶。这非常适合团队协作和客户分享场景。
  4. 审计日志:所有用户的操作,如登录、文件上传下载、删除等,都可以被记录和审计,满足企业合规性要求。

2.3 现代Web技术栈选型

Filestash的客户端(即你看到的网页)是一个单页面应用(SPA),使用React构建,提供了流畅、快速的交互体验,媲美原生桌面应用。服务器端则使用Go语言编写。Go以其高性能、高并发、静态编译和部署简单的特性而闻名,这使得Filestash服务端非常轻量、高效,且内存占用低。一个编译好的二进制文件,几乎可以在任何Linux服务器上直接运行,依赖极少,部署过程堪称“傻瓜式”。

选择Go也带来了强大的跨平台能力。你不仅可以在Linux服务器上运行,也可以在Windows、macOS,甚至树莓派(ARM架构)上轻松部署。这种技术选型,充分体现了其追求“简单、高效、随处可运行”的产品理念。

3. 从零开始部署与配置Filestash

3.1 选择你的部署方式

Filestash提供了极其灵活的部署选项,从一分钟快速体验到生产级部署都能满足。

方式一:Docker部署(推荐,最适合大多数场景) 这是最省心、最隔离的方式。假设你已经在服务器上安装了Docker和Docker Compose。

BASH
# 1. 创建一个工作目录并进入
mkdir filestash && cd filestash
 
# 2. 创建docker-compose.yml文件
cat > docker-compose.yml <<EOF
version: '3.5'
services:
filestash:
image: machines/filestash:latest
container_name: filestash
restart: unless-stopped
ports:
- “8334:8334” # 左侧8334可改为你服务器上任何空闲端口
environment:
- APP_PORT=8334
volumes:
- ./filestash_data:/app/data/state # 持久化配置和数据库
# - /path/to/your/certs:/app/data/certs # 如需自定义SSL证书,取消注释并映射
EOF
 
# 3. 启动服务
docker-compose up -d

执行完后,打开浏览器访问 http://你的服务器IP:8334,就能看到Filestash的初始化界面了。通过挂载./filestash_data卷,你的所有配置(用户、连接器设置等)都会保存在宿主机上,即使容器重建也不会丢失。

注意:生产环境强烈建议在Filestash前面配置一个反向代理(如Nginx、Caddy),并配置HTTPS证书,确保通信安全。不要让Filestash直接暴露在公网HTTP端口上。

方式二:直接下载二进制文件 对于没有Docker的环境,或者追求极致简洁的控制,可以直接下载对应平台的二进制文件。

  1. 前往Filestash的GitHub Releases页面。
  2. 下载对应你操作系统(linux-amd64, darwin-amd64, windows-amd64等)的最新版本。
  3. 赋予执行权限:chmod +x filestash
  4. 直接运行:./filestash。服务默认会在 localhost:8334 启动。 这种方式同样简单,但持久化配置的路径需要参考官方文档,通常涉及在运行命令时指定--datadir参数。

方式三:从源码构建 如果你需要深度定制,或者想贡献代码,可以选择从源码构建。这需要你本地有Go和Node.js的开发环境。具体步骤参考官方文档,一般包括克隆仓库、安装前端依赖并构建、编译Go后端等几步。对于普通用户,不建议从此入手。

3.2 初始配置与管理员设置

第一次访问Filestash,你会进入一个配置向导。

  1. 创建管理员账户:这是你管理Filestash实例的超级用户。设置一个强密码。
  2. 配置实例URL:填写你最终访问Filestash的完整地址(例如 https://files.yourdomain.com)。这个地址会影响分享链接的生成等。
  3. 完成向导:之后,你就可以用管理员账户登录后台管理界面了。

登录后,点击右上角的“设置”(齿轮图标),进入管理控制台。这里是你运营Filestash的“大脑”。

3.3 配置你的第一个存储连接(以SFTP为例)

假设我们要连接一个内部的SFTP服务器。

  1. 在管理控制台,找到“连接器”或“数据源”配置区域。
  2. 点击“添加新的数据源”或“New Connection”。
  3. 在类型中选择 “SFTP”
  4. 填写连接参数:
    • 主机名:你的SFTP服务器地址(如 sftp.example.com 或内网IP)。
    • 端口:通常是22。
    • 用户名/密码:你的SFTP凭据。再次强调:Filestash不会永久存储这个密码,只用于当前会话。
    • 路径(可选):可以指定一个默认打开的起始目录,如/home/user/docs
  5. 高级选项(非常重要):
    • 私钥:如果你使用密钥认证,可以在这里粘贴私钥内容。
    • 指纹(Fingerprint):首次连接时,Filestash会显示服务器的SSH指纹(SHA256)。你应该验证这个指纹与你已知的服务器指纹一致,然后将其填入此框并保存。这能防止中间人攻击,确保你连接的是真正的服务器。
  6. 点击“保存”或“测试连接”。成功后,这个连接就会出现在你的可用数据源列表中。

现在,退出管理后台,回到用户界面。你应该能看到一个数据源选择器,点击它,选择你刚刚配置的“SFTP连接”,就能像操作本地文件夹一样浏览和管理远程SFTP服务器上的文件了。

4. 核心功能深度体验与实战技巧

4.1 文件操作:不仅仅是上传下载

Filestash的网页界面非常直观,支持拖拽上传、多文件选择、右键菜单等现代操作。但它的能力远不止于此。

  • 在线预览与编辑:这是Filestash的杀手级功能之一。它内置了多种文件的预览器:

    • 图片:支持缩放、旋转、幻灯片播放。
    • 视频/音频:直接在线播放,支持多种格式。
    • PDF/Office文档:通过集成的OnlyOffice或LibreOffice在线查看器(需额外配置后端服务),可以直接在浏览器里查看Word、Excel、PPT、PDF文件,甚至进行简单的协同编辑。
    • 代码/文本文件:高亮显示源代码,并提供一个基本的文本编辑器,可以直接修改并保存。
    • Markdown:实时渲染,所见即所得。
  • 文件分享:对于任何文件或文件夹,你可以生成一个分享链接。可以设置密码、过期时间、下载次数限制。分享链接是临时的、无状态的,即使Filestash服务重启,只要在有效期内,链接依然可用。这比直接分享SFTP账号或S3密钥安全、方便得多。

  • 搜索:支持在当前目录下进行文件名搜索,对于大型目录树查找文件非常有用。

  • 批量操作:可以选中多个文件进行打包下载(会自动打包成ZIP)、批量删除或移动。

4.2 多用户管理与权限实战

在管理控制台的“用户”部分,你可以添加新用户。每个用户可以被分配一个或多个“角色”。

  1. 创建角色:角色本质上是一组权限的集合。例如,你可以创建一个“只读用户”角色,权限勾选“可以浏览”和“可以下载”,但取消“可以修改”、“可以上传”、“可以删除”。
  2. 分配数据源:在创建用户或编辑用户时,最关键的一步是“分配数据源”。你可以精确控制该用户能访问哪个连接器(数据源),以及在该数据源下的起始路径
    • 场景示例:客服团队需要查看日志。你有一个SFTP连接器指向日志服务器根目录/。你可以创建一个用户kefu,为其分配这个SFTP数据源,但将“起始路径”设置为/var/log/app/。这样,kefu用户登录后,直接进入的就是日志目录,无法向上导航到系统的其他目录,实现了安全的目录隔离。
  3. 组合权限:一个用户可以拥有多个角色,访问多个数据源。这为复杂的团队结构提供了灵活的权限配置能力。

实操心得:在规划权限时,遵循“最小权限原则”。先创建好符合各种职能的角色(如“预览员”、“上传员”、“管理员”),再给用户分配角色和数据源。尽量避免直接给用户全局管理员权限。定期审计用户列表和分享链接。

4.3 插件系统扩展能力

Filestash的插件系统允许你扩展其功能。插件分为前端插件和后端插件。

  • 前端插件:主要增加新的文件预览器或编辑器。例如,你可以安装一个插件来支持预览.drawio图表文件。
  • 后端插件:可以增加新的连接器类型,或者为现有连接器添加额外功能。

插件可以通过管理控制台的“插件”页面进行安装和管理。社区维护了一些插件,你也可以根据官方文档开发自己的插件。例如,如果你公司内部使用一个特殊的文档管理系统,完全可以为其开发一个连接器插件,让Filestash也能统一管理其中的文件。

5. 生产环境部署进阶与优化

5.1 使用反向代理和HTTPS

让Filestash直接监听公网IP和端口是不安全的。正确的做法是使用Nginx或Caddy作为反向代理。

Nginx配置示例

NGINX
server {
listen 80;
server_name files.yourdomain.com;
# 强制跳转到HTTPS
return 301 https://$server_name$request_uri;
}
 
server {
listen 443 ssl http2;
server_name files.yourdomain.com;
 
# SSL证书路径(使用Let‘s Encrypt或自有证书)
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
 
# 其他SSL优化配置...
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
ssl_prefer_server_ciphers off;
 
location / {
proxy_pass http://localhost:8334; # 指向Filestash实际运行地址
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade"; # 支持WebSocket
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 重要:设置客户端最大body size,以适应大文件上传
client_max_body_size 10G;
}
}

配置好后,用户将通过 https://files.yourdomain.com 安全地访问你的Filestash。

5.2 性能调优与高可用考虑

  • 资源限制:在Docker Compose中,可以为filestash服务设置CPU和内存限制,防止单个容器占用过多主机资源。
    YAML
    services:
    filestash:
    ...
    deploy:
    resources:
    limits:
    cpus: '1.0'
    memory: 1G
  • 会话存储:默认情况下,用户会话信息存储在内存中。如果重启服务,所有用户会被登出。对于生产环境,可以配置Redis或数据库作为外部会话存储,实现持久化会话和多实例部署。这需要在Filestash的配置文件中进行设置(通常是通过环境变量或config.json)。
  • 文件上传大小限制:除了在Nginx中设置client_max_body_size,Filestash自身也有上传大小限制,需要根据实际情况在配置中调整。
  • 定期备份:定期备份你挂载的filestash_data目录(或自定义的数据目录)。这里面包含了所有的应用配置、用户信息和插件数据。

5.3 监控与日志

  • 日志:Filestash会输出访问日志和错误日志到标准输出(stdout)。在Docker部署时,你可以用docker logs filestash查看,或者配置Docker的日志驱动将日志发送到集中式日志系统(如ELK Stack)。
  • 健康检查:Filestash提供了/health端点,可以用于配置Docker健康检查或外部监控探针,确保服务正常运行。
    YAML
    healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost:8334/health"]
    interval: 30s
    timeout: 10s
    retries: 3
    start_period: 40s

6. 常见问题排查与解决方案实录

在实际部署和使用中,你可能会遇到以下问题。这里记录了我踩过的一些坑和解决方法。

6.1 连接后端存储失败

这是最常见的问题。

问题现象 可能原因 排查步骤与解决方案
连接SFTP超时或拒绝 网络不通、防火墙规则、SFTP服务未运行 1. 从Filestash服务器pingtelnet目标SFTP主机端口。2. 检查SFTP服务器防火墙(如iptablesfirewalld)是否放行了对应端口。3. 确认SSH服务正常运行且允许SFTP。
连接S3存储报“Access Denied” IAM权限不足、区域配置错误、密钥错误 1. 仔细核对Access Key和Secret Key。2. 确认S3存储桶的权限策略(Bucket Policy)和用户IAM策略是否允许必要的操作(如s3:ListBuckets3:GetObjects3:PutObject)。3. 检查区域(Region)是否填写正确。
连接WebDAV提示认证失败 用户名/密码错误、WebDAV路径不正确 1. 使用curl命令测试WebDAV连接:curl -u username:password -X PROPFIND https://your-webdav-server/path/。2. 确保WebDAV服务端已正确启用并配置了基本认证。

排查技巧善用Filestash的“测试连接”功能。在管理后台配置连接时,先点击“测试连接”。如果失败,Filestash通常会返回比在用户界面更详细的错误信息,这是诊断的第一步。对于网络问题,一定要在Filestash所在的容器或主机上进行网络可达性测试。

6.2 文件上传失败或大小限制

  • 现象:上传大文件时中断,或提示“请求实体过大”。
  • 原因:触发了某一层的上传大小限制。
  • 解决方案
    1. Filestash自身限制:检查并修改Filestash配置文件中的upload.max_size参数(可通过环境变量APP_UPLOAD_MAX_SIZE设置,例如 APP_UPLOAD_MAX_SIZE=10000000000 表示10GB)。
    2. 反向代理限制:如前述Nginx配置,必须设置client_max_body_size
    3. 后端存储限制:例如,某些S3兼容服务对单次上传有大小限制,Filestash会自动分片,但需确保配置正确。

6.3 在线预览Office文档不工作

  • 现象:点击Word/Excel文件,无法预览,提示需要配置。
  • 原因:Filestash默认的在线Office预览依赖于一个公共服务或需要自行部署的后端(如OnlyOffice Document Server或LibreOffice)。
  • 解决方案
    1. 对于轻度使用,可以在管理后台的“配置”->“Office Viewer”中,尝试使用公共服务器(可能不稳定或慢)。
    2. 对于生产环境,强烈建议自行部署一个OnlyOffice Document Server。这是一个独立的服务,Filestash会与之通信来渲染文档。部署好OnlyOffice后,在Filestash配置中填写其地址和密钥即可。这能保证文档处理的私密性和性能。

6.4 用户会话频繁过期

  • 现象:用户登录后,过一段时间操作就提示未登录。
  • 原因:默认会话超时时间较短,或者未配置持久化会话存储。
  • 解决方案
    1. 在管理后台的“配置”中,找到会话设置,增加session expiry的时间。
    2. 对于需要高可用的场景,按照官方文档配置外部会话存储(如Redis)。

6.5 界面加载缓慢或卡顿

  • 可能原因
    1. 服务器资源(CPU/内存)不足。
    2. 网络延迟高,尤其是首次加载需要下载前端资源(JS, CSS)。
    3. 浏览器缓存问题。
  • 解决方案
    1. 检查服务器监控,确保资源充足。
    2. 可以考虑将Filestash的前端静态资源通过CDN分发,但这需要一定的部署复杂度。
    3. 确保反向代理配置了正确的缓存头,对静态资源进行缓存。
    4. 引导用户清除浏览器缓存,或尝试无痕模式访问。

部署Filestash的过程,本质上是在构建一个属于你自己的、可控的“文件访问网关”。它剥离了各种存储协议的技术细节,为用户提供了一个干净、统一、安全的操作界面。从个人开发者到中小企业团队,它都能显著提升文件管理和协作的效率。最关键的是,所有的数据控制权都牢牢掌握在你手中,这种安全感是使用任何第三方公有云盘都无法比拟的。如果你正在为团队寻找一个轻量、自托管、多协议支持的文件管理器,Filestash绝对值得你花上一个下午的时间去部署和体验。

【开发者导航】跨平台统一文件访问与管理工具:Filestash
Filestash是一款开源网页文件管理器,支持FTP、S3、Google Drive等多协议接入,通过浏览器实现文件集中管理、在线预览与共享,支持私有部署,保障数据安全,提升开发者与团队协作效率。
开发者导航
671
探索Filestash:一个强大且灵活的文件管理器
Filestash是一个开源的Web应用程序,支持多种后端协议,如SFTPS3、FTP等,提供现代化的文件管理体验。它采用React和Go语言开发,拥有RESTful API和高度的安全性。适用于远程工作、家庭媒体中心、企业文档管理及备份解决方案。
高慈鹃Faye
953
免费S3客户端工具大赏
本文介绍了多款免费开源的S3客户端工具,涵盖GUI、CLI和TUI类型,支持跨平台使用。重点推荐WinSCP、Rclone和Mountain Duck等工具,适用于本地与云端文件同步、批量管理S3存储桶及多协议接入,满足个人与企业用户的多样化需求。
九陌斋
4040
文件管理工具Spacedrive、Filestash、OpenCloud、Far Manager
johnny233
262
Go-一个类似Dropbox的文件管理器可让您在任何位置管理数据
Filestash 是一个基于 Go 语言开发的现代化、开源、自托管的 Web 文件管理器,其核心设计理念是“统一多源存储访问”,即在单一 Web 界面中无缝集成并操作多种异构存储后端——包括传统协议(FTP/SFTP/WebDAV)、对象存储(Amazon S3/MinIO)、代码托管平台(Git)以及主流云盘服务(Dropbox/Google Drive)。它并非简单的前端界面套壳,而是一个具备完整认证流、权限控制、元数据抽象、文件生命周期管理及协议适配能力的服务端应用。其技术架构深度依赖 Go 语言的并发模型(goroutine + channel)、跨平台编译能力与标准库对 HTTP/SSL/IO 的原生支持,从而实现轻量、高性能、零依赖的单二进制部署。在协议支持层面,Filestash 对 FTP 和 SFTP 的集成并非仅限于基础上传下载,而是通过封装成熟的 Go 库(如 github.com/jlaffaye/ftp 和 github.com/pkg/sftp)实现了连接池管理、被动模式自动协商、SSH 密钥/密码双认证、路径遍历防护及 UTF-8 路径兼容;对于 WebDAV,它采用自研 WebDAV 客户端抽象层,兼容 RFC 4918 规范,支持 PROPFIND/PROPPATCH/MKCOL/COPY/MOVE 等全部核心方法,并能正确解析 Apache/Nginx/Nextcloud 等不同服务端返回的 XML 响应结构,同时处理 ETag、Last-Modified、Lock-Token 等关键头字段以保障并发编辑一致性。S3 与 MinIO 支持则基于 AWS SDK for Go v2,完整对接 IAM 角色、临时凭证(STS)、签名版本 v4、区域感知路由、Multipart Upload 分片上传/断点续传、预签名 URL 生成,且针对 MinIO 这类兼容 S3 的私有对象存储,额外实现了 endpoint 自定义、SSL 验证绕过(insecure skip verify)、Bucket 级别 ACL 映射等企业级特性。在云存储网关方面,Filestash 对 Dropbox 和 Google Drive 的集成严格遵循 OAuth 2.0 授权码流程前端重定向至官方授权页获取 code,后端通过 /token 接口交换 access_token 及 refresh_token,并持久化加密存储;后续所有 API 调用均自动携带 Bearer Token,并内置 token 自动刷新机制(监听 401 响应触发 refresh flow),避免用户频繁重新授权。它深度调用 Dropbox Graph API(v2)的 files_list_folder/files_download/files_upload 等端点,支持增量同步游标(cursor)、共享链接生成、团队空间(Team Space)上下文切换;对 Google Drive API,则整合 Drive REST v3,支持多层级文件夹树遍历、MIME 类型智能识别(如 application/vnd.google-apps.document 自动转为 PDF 预览)、共享权限粒度控制(reader/commenter/owner)、以及 Service Account 模式下以服务器身份代管整个域内文件。Git 后端则独树一帜——将 Git 仓库视为只读文件系统,通过 go-git 库解析 commit tree、blob 对象,提供历史版本浏览、diff 查看、raw 文件下载,适用于文档协同、静态站点源码管理等场景。安全体系上,Filestash 默认启用 HTTPS 强制重定向、CSRF Token 防护、CSP 内容安全策略、X-Frame-Options 头防止点击劫持,并支持反向代理下的 X-Forwarded-* 头信任链配置;认证模块可插拔,除内置 Basic Auth 外,还提供 LDAP/AD 绑定、OIDC(Keycloak/Auth0/GitHub)联合登录、以及通过环境变量或配置文件注入的静态用户列表。其前端采用 Vue.js 构建,但所有敏感操作(如删除、移动、权限修改)均需后端二次鉴权,杜绝客户端绕过风险。压缩包中的 mickael-kerjean-filestash-10cfd79 目录即为项目原始 GitHub 仓库快照(commit hash 10cfd79),包含完整 Go 源码(cmd/ server/ backend/ frontend/)、Dockerfile(支持 multi-stage 构建)、Nginx 示例配置、systemd 服务模板、TLS 证书自动化脚本(acme.sh 集成),以及详尽的中文/英文文档(docs/)。该工具本质是构建私有云存储中枢的操作系统级中间件,使组织摆脱厂商锁定,实现数据主权回归——无论数据物理存于本地 NAS、IDC 机房、公有云对象存储,还是第三方 SaaS 平台,均可通过同一套语义化接口(Web UI/API/CLI)完成审计、归档、分发与治理,是 DevOps、SRE、数据工程师及合规官不可或缺的基础设施组件。
weixin_39840588
推荐现成的文件管理系统
本文介绍了几款流行的开源文件管理系统,包括Nextcloud、ownCloud、FileRun、Seafile和Pydio Cells。每个系统都具有文件同步、共享、协作工具、移动应用支持等特点,并提供了各自的安装方式
2403_86664254