简介这是一套基于Cloudreve的私人云盘源码面向希望自建文件存储与共享服务的个人用户、小型团队及企业运维人员。它解决的是数据自主可控、文件集中备份与内网传输的需求适合具备基础PHP环境搭建能力、想快速部署私有网盘的技术爱好者。压缩包共约2000个文件以776个PHP核心程序、322个JavaScript脚本、148个HTML页面和71个CSS样式为主另含23个SQL数据库脚本、44个Markdown说明及若干JSON配置与资源文件整体约19.42MB结构完整、便于二次开发与部署。资源附带以宝塔面板为例的安装视频与图文教程涵盖PHP7.0以上环境、fileinfo扩展配置、伪静态规则写入等关键环节可帮助读者快速跑通网盘系统。目前已有699人学习下载适合需要搭建简洁好看、支持多文件与视频共享的云盘系统的用户参考实践。1. 从一台闲置服务器到私人云盘Cloudreve 源码能解决什么手里有台吃灰的云主机或者公司内网有台常年开机的服务器想把它变成一个能对外分享文件、能在线预览视频、还能给同事分配账号的私人网盘这件事的门槛其实比想象中低。Cloudreve 就是干这个的——一套用 PHP 写的云盘系统源码把文件上传、分享链接、多用户管理、对接对象存储这些事全包了。它不像 Nextcloud 那样重也不像自己从零写一个文件管理后台那样费劲部署完就是一个界面干净、能直接用的网盘。这套源码包带了搭建教程和安装视频压缩包里从 3.33.0 到 3.106.0 横跨了多个版本说明它不是某个孤立的快照而是一个持续迭代的项目。适合谁适合想给团队搭内部文件共享站点的运维、想拿云盘系统练手 PHP 部署的开发者以及需要一套能自己掌控数据存储位置的文件管理方案的人。下面从环境准备一路讲到踩坑排查把这份源码真正跑起来。2. 环境选型与宝塔部署PHP 版本、扩展和伪静态怎么配2.1 为什么是 PHP 7.0 以上加 fileinfo 扩展Cloudreve 的后端是 PHP 写的源码里大量用了 PHP 7 的特性比如类型声明和匿名类所以 PHP 7.0 是硬性下限。实际部署时我一般会选 PHP 7.4 或者 8.0因为 7.0 到 7.2 这几个版本在一些新一点的宝塔面板里已经不太好找了而且 7.4 的兼容性经过大量项目验证跑 Cloudreve 没什么问题。再往上的 PHP 8.1、8.2 也能跑但如果你用的源码版本偏老比如 3.33.0 这种早期版本PHP 8 的严格类型检查可能会让某些函数报错所以版本不是越新越好得看源码包里的版本号。fileinfo 扩展是必须装的这个扩展用来在文件上传时检测 MIME 类型没有它 Cloudreve 没法正确识别上传的文件格式上传图片可能被当成二进制流预览功能直接废掉。宝塔面板里装扩展很简单软件商店找到对应 PHP 版本点设置安装扩展里勾选 fileinfo 就行。装完记得重启 PHP 服务不然扩展不生效。数据库方面Cloudreve 支持 MySQL、PostgreSQL、SQLite 三种。生产环境肯定用 MySQL宝塔里创建数据库的时候字符集选 utf8mb4排序规则用 utf8mb4_general_ci 或者 utf8mb4_unicode_ci 都行。SQLite 适合本地测试一个文件就是整个数据库迁移方便但并发一上来就扛不住多人用的场景别选它。提示如果你用的是 PHP 8.0 以上源码包里的某些版本可能需要手动改一下配置文件里的数据库连接参数把mysqli相关的默认配置改成pdo_mysql具体看源码里的config目录。2.2 宝塔建站、上传源码与安装入口宝塔面板部署 Cloudreve 的流程不复杂但每一步都有细节。先在宝塔里添加站点域名填你自己的比如pan.yourdomain.comPHP 版本选 7.4数据库一并创建好记下数据库名、用户名和密码。站点创建完之后把源码压缩包上传到网站根目录解压。注意解压的时候要确保文件直接落在根目录下而不是多套了一层文件夹否则访问域名会看到目录列表而不是安装页面。源码就位后浏览器访问http://你的域名/CloudreveInstaller/index.php这是安装向导的入口。安装向导会检查环境PHP 版本、fileinfo 扩展、目录权限这几项必须全绿。目录权限这块宝塔默认的 www 用户需要有runtime、uploads、config这几个目录的写权限如果检查不通过在宝塔文件管理里把权限改成 755 或者 777属主设成 www。安装向导走到数据库配置那一步把之前创建的数据库信息填进去表前缀可以保持默认也可以自己改。填完提交系统会自动建表并写入初始配置。如果这一步报数据库连接错误先检查用户名密码有没有多余空格再检查数据库地址是不是127.0.0.1宝塔环境下一般用本地回环地址就行。2.3 伪静态规则与 URL Rewrite 报错处理安装过程中最容易卡住的地方就是 URL Rewrite 提示。Cloudreve 用的是 ThinkPHP 框架URL 访问依赖伪静态规则把请求重写到入口文件。宝塔站点设置里有伪静态选项点进去把下面的规则粘贴到空白处location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s$1 last; } }这段规则的意思是当请求的文件或目录不存在时把请求交给index.php处理s参数携带原始路径。粘贴完保存宝塔会自动重载 Nginx 配置。如果用的是 Apache规则不一样需要在.htaccess里写RewriteRule但宝塔环境下绝大多数人用的是 Nginx所以上面这段够用了。伪静态配好之后刷新安装页面URL Rewrite 的警告应该消失。如果还在报检查一下是不是站点配置里有多余的location块冲突了或者 Nginx 没重载成功。宝塔里改完伪静态最好手动点一下「重载配置」别只依赖自动重载。注意有些源码包里的伪静态规则是给 Apache 写的直接粘到 Nginx 里会报错。判断方法很简单看规则里有没有RewriteEngine和RewriteRule有就是 Apache 的得换成上面那段 Nginx 的写法。3. 源码版本差异与功能验证从 3.33.0 到 3.106.0 怎么选3.1 版本号跨度背后的功能演进源码包里列出的版本从 3.33.0 一路到 3.106.0跨度不小。Cloudreve 的版本号规则是主版本加次版本加修订号3.x 系列是它的稳定分支。早期版本比如 3.33.0、3.41.0功能相对基础主要是文件上传下载、分享链接、本地存储这些核心能力。到了 3.73.0、3.76.0 这个区间开始加入对象存储的支持比如对接七牛、阿里云 OSS、腾讯云 COS这对需要把文件存到云端而不是本地磁盘的场景很关键。3.106.0 是包里比较新的版本通常意味着更多的存储适配器、更完善的用户权限管理和更好的前端体验。选哪个版本取决于你的需求。如果只是内网用本地存储够3.33.0 到 3.41.0 这些版本反而更轻依赖少部署快。如果要对接对象存储至少选 3.73.0 以上的。如果源码包里带了安装视频教程视频里演示的版本大概率是某个中间版本跟着视频走的时候注意版本号对不对得上别拿 3.106.0 的源码去套 3.33.0 的教程配置文件结构可能不一样。3.2 安装后的功能验证清单装完之后别急着交付先跑一遍功能验证。下面这几项是我每次部署完必查的验证项操作预期结果管理员登录用安装时设的邮箱和密码登录进入后台管理面板文件上传上传一个 10MB 左右的图片和视频上传成功进度条正常在线预览点击图片和视频文件图片直接显示视频能播放分享链接生成一个分享链接用无痕窗口打开能访问并下载多用户注册开启注册注册一个新账号新账号能登录并看到独立空间存储策略后台添加一个本地存储策略新上传的文件落到指定目录这几项里最容易出问题的是在线预览。视频预览依赖浏览器的编解码支持MP4 格式一般没问题MKV 或者 AVI 可能播不了这不是 Cloudreve 的锅是浏览器本身不支持。图片预览如果失败回头检查 fileinfo 扩展是不是真的装上了php -m | grep fileinfo在服务器终端跑一下就能确认。3.3 存储策略配置与本地存储路径Cloudreve 的存储策略决定了文件实际存在哪。默认策略是本地存储文件落在uploads目录下。后台可以创建多个策略比如一个本地策略给普通用户一个对象存储策略给 VIP 用户。本地策略配置里有个「存储目录」选项填相对路径比如uploads/user_files系统会自动在这个路径下按用户 ID 分目录存储。如果你要把文件存到挂载的磁盘或者 NAS 上可以在宝塔里先把磁盘挂载到某个目录然后在存储策略里把路径指向那个挂载点。注意权限问题PHP 运行用户 www 需要对挂载目录有读写权限否则上传会失败日志里会报Permission denied。# 查看 PHP 运行用户 ps aux | grep php-fpm | grep -v grep # 给挂载目录赋权假设挂载点是 /mnt/nas chown -R www:www /mnt/nas chmod -R 755 /mnt/nas上面这两条命令第一条确认 PHP-FPM 跑在哪个用户下通常是 www。第二条和第三条把挂载目录的属主和权限设对。如果挂载的是 NFS 或者 SMB 共享还得确保挂载参数里没有noexec或者ro这种限制写的选项。4. 避坑排查部署 Cloudreve 常见的五个翻车现场4.1 安装页面空白或 500 错误现象访问CloudreveInstaller/index.php页面全白或者返回 500。原因通常是 PHP 版本不匹配或者目录权限不对。先看宝塔的 PHP 错误日志路径在/www/server/php/版本号/var/log/php-fpm.log里面会写具体报错。如果是Call to undefined function开头说明 PHP 版本太低或者缺扩展。如果是failed to open stream: Permission denied就是权限问题把runtime和config目录权限改成 777 再试。解决完之后记得把权限改回 755777 只是临时排查用。4.2 上传大文件失败或超时现象上传超过 50MB 的文件时进度条卡住最后报错。原因是 PHP 的upload_max_filesize和post_max_size默认值太小一般是 2M 和 8M。宝塔里在 PHP 设置里改这两个值改成 512M 或者 1024M同时把max_execution_time改成 600 秒。Nginx 那边也有个client_max_body_size限制默认 1M在站点配置里改成 1024M。改完重启 PHP 和 Nginx。这几个参数是连锁的只改一个没用得一起改。4.3 伪静态配了但分享链接 404现象首页能访问但点分享链接或者进后台某个页面就 404。原因是伪静态规则没生效或者规则写错了。先确认 Nginx 配置里location /那段规则确实存在然后检查宝塔站点设置里伪静态是不是选到了「自定义」而不是某个预设。有些宝塔版本里伪静态规则保存了但没重载手动点重载配置。如果还不行把规则里的last改成break试试这两个指令在 Nginx 里的处理顺序不一样某些环境下break更稳。4.4 数据库连接报错但参数没错现象安装时填的数据库信息明明是对的但一直报连接失败。原因可能是 MySQL 的bind-address绑定了127.0.0.1而你的数据库地址填的是公网 IP 或者内网 IP。宝塔环境下数据库默认只允许本地连接如果 PHP 和 MySQL 不在同一台机器上得在宝塔数据库设置里把「权限」改成「所有人」或者指定 IP。另外检查一下 MySQL 用户有没有远程访问权限user表里的host字段是不是%。这两个地方都确认了连接问题基本能解决。4.5 视频预览黑屏或只有声音现象上传的 MP4 视频在网盘里点预览画面黑的只有声音或者干脆转圈。原因是视频编码格式浏览器不支持比如 H.265 编码的 MP4Chrome 和 Firefox 都不支持硬解。解决办法是用 FFmpeg 把视频转成 H.264 编码命令如下ffmpeg -i input.mp4 -c:v libx264 -c:a aac -movflags faststart output.mp4-c:v libx264指定视频编码为 H.264-c:a aac指定音频编码为 AAC-movflags faststart把元数据移到文件头部这样浏览器不用下完整个文件就能开始播放。转完再上传预览就正常了。这个坑跟 Cloudreve 本身没关系是浏览器编解码的限制但很多人第一次遇到会以为是网盘坏了。5. 进阶技巧用反向代理加 HTTPS 让私人云盘真正可用装完能跑只是第一步要让这个云盘在日常环境里真正好用还得解决访问安全和域名问题。Cloudreve 默认跑在 HTTP 上浏览器会提示不安全分享出去的链接也显得不正规。用宝塔的反向代理加 Lets Encrypt 证书十分钟就能把 HTTPS 配上。先在宝塔站点设置里申请 SSL 证书选 Lets Encrypt勾选自动续签。证书签发成功后开启「强制 HTTPS」。这一步做完访问域名会自动跳转到 HTTPS。但如果你在 Cloudreve 后台配置里填的站点地址还是 HTTP分享链接生成出来还是 HTTP 的得去后台「基础设置」里把站点 URL 改成https://你的域名。接下来是反向代理的配置。有些场景下你可能想让 Cloudreve 跑在一个非标准端口上前面用 Nginx 做反向代理。宝塔里新建一个站点专门做代理配置如下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_pass指向 Cloudreve 实际监听的地址和端口5212是 Cloudreve 默认端口如果你改过就换成实际的。后面四行proxy_set_header是把客户端的真实 IP、协议类型传给后端不然 Cloudreve 日志里看到的全是127.0.0.1用户 IP 记录就废了。X-Forwarded-Proto这个头特别重要它告诉后端当前请求是 HTTPS 的否则 Cloudreve 生成分享链接的时候可能还是按 HTTP 来拼。配完反向代理记得在 Cloudreve 后台把「站点 URL」改成代理后的域名并且把「信任的代理」加上127.0.0.1不然 Cloudreve 不认代理传来的头信息。还有一个细节是上传大小限制。反向代理模式下Nginx 的client_max_body_size和 Cloudreve 后端的 PHP 限制是两层关卡任何一层没放开都会导致大文件上传失败。我一般会在代理站点的 Nginx 配置里显式写一行client_max_body_size 2048m;然后确认 PHP 那边的upload_max_filesize和post_max_size也对齐。从那以后我每次部署完 Cloudreve都会先跑一遍上传、预览、分享、HTTPS 访问这四步验证确认没问题再交给同事用。这套源码包里的安装视频教程能帮你把基础环境搭起来但版本差异和代理配置这些细节还是得自己动手调一遍才踏实。希望帮到你。本文还有配套的精品资源点击获取
