简介:这是一套基于Cloudreve的私人云盘源码,面向希望自建文件存储与共享服务的个人用户、小型团队及企业IT人员,可用于搭建本地化网盘系统,实现文件备份、共享与传输。压缩包共约2000个文件,整体19.42MB,以776个PHP核心程序、322个JavaScript脚本、148个HTML页面和71个CSS样式为主,另含23个SQL数据库脚本、46个JSON配置及44个Markdown说明文档,覆盖前端界面、后端逻辑与部署配置。资源附带以宝塔面板为例的安装视频教程,涵盖PHP7.0以上环境、fileinfo扩展安装、数据库创建、源码上传及伪静态规则配置等关键环节,并提示URL Rewrite常见问题。目前已有699人学习下载。读者可获得一套结构完整、界面简洁的云网盘系统源码,支持多格式文件与视频共享,适合用于单位内部数据备份或二次开发学习,目录清晰便于按模块查阅。
1. 从一套私人云盘源码说起:Cloudreve 能解决哪些真实需求
很多人第一次接触 Cloudreve,是因为受够了公有网盘的限速、弹窗和会员墙,想在自己的云主机上搭一套「私人云盘源码」。Cloudreve 就是这类需求里被反复提到的一个方案:它是一套开源的云网盘系统,用 Go 写后端、前端是 SPA,支持本地存储、对象存储、WebDAV、离线下载、多用户和文件共享传输。标题里说的「简洁好看」不是虚的,它的默认主题确实干净,后台管理也做得比较完整,装完之后给同事、家人或小团队用,体验接近商业网盘。
这套东西适合谁?一类是有云主机、想给自己和几个朋友做文件共享传输的人;一类是小团队想内部传素材、发大文件,又不想把数据全交给第三方;还有一类是拿它当练手项目,顺便学一下反向代理、数据库、对象存储怎么串起来。它不适合的是完全不懂命令行、也不愿意碰服务器的人——虽然有一键脚本和安装视频教程,但真出问题时,还是得能看懂日志和配置。下面我按「先讲清楚它是什么、再动手搭、最后说坑」的顺序,把一套能跑起来的 Cloudreve 云盘系统讲透。
2. Cloudreve 云盘系统的架构与部署选型:为什么这么搭
2.1 后端、数据库、存储三层到底怎么分工
Cloudreve 的运行可以拆成三层来看。第一层是 Cloudreve 主程序本身,它是一个编译好的二进制文件,负责处理 HTTP 请求、用户鉴权、文件元数据管理和分享逻辑。第二层是数据库,默认用 SQLite,生产环境一般换成 MySQL 或 PostgreSQL,存的是用户表、文件记录、分享链接这些结构化数据。第三层是存储后端,也就是文件实体真正放的地方,可以是服务器本地磁盘,也可以是对象存储(比如 S3 兼容的 MinIO、阿里云 OSS、腾讯云 COS 等)。
理解这三层分工,后面配置才不会乱。很多人翻车是因为把「数据库」和「文件存储」混为一谈,以为换了数据库文件就搬家了,其实文件实体在存储策略里,数据库只记路径和元信息。选型上,个人自用 SQLite 完全够,省一个服务;小团队并发上传下载多,建议直接上 MySQL,避免 SQLite 写锁在并发时拖后腿。存储这块,如果云主机磁盘不大,强烈建议一开始就接对象存储,本地只留缓存和缩略图,扩容时不用迁移数据。
2.2 云主机系统与运行环境的选择
云主机用什么系统,直接决定后面命令怎么写。Cloudreve 官方发布的二进制对 Linux 支持最好,常见做法是选 Debian 12 或 Ubuntu 22.04 这类长期支持版本,包管理熟、社区资料多。如果你习惯 CentOS 系,Rocky Linux 9 也能跑,但要注意它默认的防火墙和 SELinux 策略,容易在反向代理那一步卡住。Windows Server 也能运行,但生产环境不推荐,主要是权限和守护进程管理麻烦。
运行环境上,Cloudreve 本体不需要额外装 Go 或 Node,下载对应架构的压缩包解压即可。真正需要额外准备的是反向代理,一般用 Nginx 或 Caddy。Nginx 资料多、可控性强,Caddy 配置简单、自动签证书。我的习惯是:面向公网、要配 HTTPS 和自定义规则的,用 Nginx;只是内网或想省事的,用 Caddy。下面这张表把两种常见组合列清楚,方便你按自己情况选。
| 组件 | 轻量自用方案 | 小团队方案 |
|---|---|---|
| 操作系统 | Debian 12 | Ubuntu 22.04 |
| 数据库 | SQLite | MySQL 8 |
| 存储后端 | 本地磁盘 | S3 兼容对象存储 |
| 反向代理 | Caddy | Nginx |
| 进程守护 | systemd | systemd |
2.3 用 systemd 把 Cloudreve 跑成常驻服务
下载解压之后直接./cloudreve能跑,但一关终端就停,这不是生产做法。正确姿势是交给 systemd 管理。先建一个专用用户,避免用 root 跑:
# 创建专用系统用户,不允许登录 sudo useradd -r -s /sbin/nologin cloudreve # 建目录并授权 sudo mkdir -p /opt/cloudreve sudo chown -R cloudreve:cloudreve /opt/cloudreve # 把解压后的程序放进去(假设已解压到当前目录) sudo mv cloudreve /opt/cloudreve/ sudo chmod +x /opt/cloudreve/cloudreve接着写 systemd 单元文件,关键是WorkingDirectory要指向程序所在目录,因为 Cloudreve 默认在当前目录生成conf.ini和数据库文件:
# /etc/systemd/system/cloudreve.service [Unit] Description=Cloudreve After=network.target [Service] User=cloudreve Group=cloudreve WorkingDirectory=/opt/cloudreve ExecStart=/opt/cloudreve/cloudreve Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target写完执行sudo systemctl daemon-reload再sudo systemctl enable --now cloudreve。这里有个参数要留意:Restart=on-failure保证程序崩溃后自动拉起,RestartSec=5是重试间隔,别设太短,否则端口没释放就重启会反复失败。启动后用systemctl status cloudreve看状态,第一次运行会在/opt/cloudreve下生成初始管理员账号密码,务必记下来,这是登录后台的唯一入口。
3. 从零跑通 Cloudreve:反向代理、HTTPS 与文件共享传输配置
3.1 Nginx 反向代理的最小可用配置
Cloudreve 默认监听 5212 端口,直接暴露这个端口既不安全也不方便配证书,所以要用 Nginx 反代。核心是把域名请求转发到本地 5212,同时把上传大文件需要的client_max_body_size调大,否则超过默认 1M 的上传会直接 413。下面是一份能直接抄的配置:
server { listen 80; server_name pan.example.com; # 换成你自己的域名 # 上传大文件必须放开,否则 413 client_max_body_size 2048m; location / { proxy_pass http://127.0.0.1:5212; 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; # 长连接和超时,传大文件时很关键 proxy_http_version 1.1; proxy_read_timeout 3600s; proxy_send_timeout 3600s; } }proxy_set_header这几行不是可选项,Cloudreve 要靠X-Forwarded-Proto判断用户是不是走的 HTTPS,缺了它后台生成的分享链接可能变成 http,浏览器会拦。proxy_read_timeout和proxy_send_timeout设到 3600 秒,是为了大文件传输时不被 Nginx 提前掐断。改完nginx -t测试语法,再systemctl reload nginx生效。
3.2 用 Certbot 给云盘加上 HTTPS
没有 HTTPS 的网盘,浏览器会标「不安全」,分享出去的链接别人也不敢点。用 Certbot 签 Let's Encrypt 证书是最省事的做法:
# 安装 certbot 和 nginx 插件 sudo apt install certbot python3-certbot-nginx -y # 自动改写 nginx 配置并申请证书 sudo certbot --nginx -d pan.example.com执行过程中会问你是否强制跳转 HTTPS,选 2(Redirect)即可。Certbot 会自动往你的 server 块里插入 443 监听和证书路径,并加一条 80 跳 443 的规则。证书 90 天过期,Certbot 装好后会自动加定时任务续期,可以用sudo certbot renew --dry-run模拟一次,确认续期流程没问题。这里要注意:如果你的域名解析还没生效,或者 80 端口被占用,申请会失败,先把这两件事确认好再跑。
3.3 存储策略与文件共享传输的落地设置
登录后台后,第一件事是配存储策略。默认策略指向本地uploads目录,个人用没问题。如果要接对象存储,在「存储策略」里新建,填 Endpoint、Bucket、AccessKey、SecretKey,注意路径风格(PathStyle)这个开关,MinIO 一般要打开,云厂商的 OSS 通常关闭。配好后把默认策略切过去,新上传的文件就走对象存储了。
文件共享传输这块,Cloudreve 支持生成分享链接、设置提取码和过期时间。分享外链的域名取决于你后台「站点 URL」的设置,一定要填成https://pan.example.com,否则生成的链接会带内网 IP 或错误端口。WebDAV 也是它的一大亮点,在「WebDAV」里开启后,可以用 RaiDrive、Windows 映射网络驱动器等方式挂载,把云盘当本地盘用。开启 WebDAV 后记得在 Nginx 里也放行对应路径,否则挂载会 404。
4. 搭建 Cloudreve 最容易翻车的几个地方:避坑与排查
4.1 上传大文件报 413 或传到一半中断
现象是上传几百兆的文件时,浏览器提示 413 Request Entity Too Large,或者进度条走到一半卡死。原因有两处:一是 Nginx 的client_max_body_size没改,默认 1M;二是proxy_read_timeout太短,大文件传输时间超过默认 60 秒被断开。解决办法是把这两个参数按 3.1 的配置调大,client_max_body_size设成你允许的最大单文件大小,超时设到 3600 秒。改完 reload Nginx,再传一次验证。
4.2 分享链接打开是 http 或指向内网 IP
现象是后台生成的分享链接复制出来是http://开头,或者域名变成了127.0.0.1。原因是 Nginx 没传X-Forwarded-Proto,或者后台「站点 URL」没设对。先在 Nginx 配置里补上proxy_set_header X-Forwarded-Proto $scheme;,再到后台把站点 URL 改成完整的https://域名。两处都改完,重新生成分享链接就正常了。这个坑很隐蔽,因为后台自己访问没问题,只有分享出去才暴露。
4.3 systemd 启动失败提示权限或目录错误
现象是systemctl status cloudreve显示 failed,日志里报 permission denied 或找不到 conf.ini。原因是程序运行用户对/opt/cloudreve没有写权限,或者WorkingDirectory写错。解决方法是确认目录属主是 cloudreve 用户(chown -R cloudreve:cloudreve /opt/cloudreve),并检查单元文件里WorkingDirectory和ExecStart路径一致。改完daemon-reload再重启。用 root 跑虽然能绕过,但不建议,出了安全问题得不偿失。
4.4 数据库换 MySQL 后连不上或表结构缺失
现象是把 SQLite 换成 MySQL 后,程序启动报连接错误,或者能连上但登录后台提示表不存在。原因是conf.ini里的数据库配置格式写错,或者没让 Cloudreve 自己初始化表结构。正确做法是先在 MySQL 里建好库和用户,然后在conf.ini的[Database]段填对Type、Host、Port、User、Password、Name,首次启动时 Cloudreve 会自动建表。注意Type要写mysql,端口默认 3306,字符集建议库级设成utf8mb4,否则中文文件名可能乱码。
4.5 WebDAV 挂载成功但无法写入
现象是 WebDAV 能挂载、能看文件列表,但上传或重命名时报错。原因通常是 Nginx 没有正确转发 WebDAV 需要的 HTTP 方法(如 PROPFIND、PUT、MKCOL),或者存储目录权限不足。解决方法是确认反代配置里没有限制请求方法,并检查存储后端目录对 cloudreve 用户可写。如果是对象存储,还要确认 AccessKey 有写权限。这个坑排查时先看 Nginx 的 access.log,里面会记录具体是哪个方法被拒。
5. 让 Cloudreve 更好用:离线下载、多用户与备份的进阶技巧
把基础跑通之后,真正拉开体验差距的是几个进阶设置。第一个是离线下载,Cloudreve 支持对接 Aria2 或 qBittorrent,把磁力、种子任务丢给它们下载,完成后自动入库。配置时在后台「离线下载」里填 RPC 地址和密钥,Aria2 那边要开--rpc-secret,两边密钥一致才能连上。这个功能对经常下素材的人很实用,但要注意磁盘空间,别让下载目录把系统盘撑爆。
第二个是多用户和容量配额。Cloudreve 支持给每个用户设独立容量和上传策略,小团队用的时候,建议按角色分组,管理员只留一两个,普通用户默认走限速策略,避免个别人占满带宽。配额在用户组里设,改完对新上传立即生效,但已用容量不会自动重算,必要时手动刷新。
第三个是备份,这是我最想强调的。血泪经验是:数据库和存储目录必须一起备份,只备份其中一个,恢复出来就是残缺的。SQLite 直接拷cloudreve.db,MySQL 用mysqldump;存储目录如果是本地,用rsync增量同步到另一块盘或另一台机器。我一般写个定时脚本,每天凌晨跑一次,保留最近 7 天。恢复时先停服务,还原数据库和文件,再启动,顺序反了会出元数据和实体对不上的问题。
最后一个技巧是验证。搭完之后别只看首页能打开,要实际走一遍:注册普通用户、上传一个大文件、生成分享链接用无痕窗口打开、用 WebDAV 挂载传一个文件、再删掉。这一圈走下来,反向代理、权限、存储、分享四条链路才算真的通了。我自己每次重装都会走这套流程,比看任何文档都靠谱。希望帮到你。
本文还有配套的精品资源,点击获取