简介这份资源是Cloudreve云盘系统源码面向希望自建私有网盘的个人用户、单位与公司运维人员用于搭建简洁美观的文件存储、共享与传输平台支持各类文件与视频可部署在本地服务器供员工随时备份数据。压缩包共约2000个文件以776个PHP核心程序、322个JavaScript脚本、148个HTML页面和71个CSS样式为主另含23个SQL数据库脚本、46个JSON配置及若干Markdown说明文档整体约19.42MB结构完整便于二次开发与部署。资源附带以宝塔面板为例的安装视频教程涵盖PHP7.0以上环境、fileinfo扩展配置、建站建库、源码上传及伪静态规则写入等关键环节并针对URL Rewrite提示给出排错思路。目前已有699人学习下载适合想快速搭建私人或企业云盘、需要完整源码与部署指引的读者参考使用。1. 私人云盘源码选型为什么 Cloudreve 是那个「装完就能用」的答案很多人第一次接触自建网盘都是被公有网盘的限速和会员墙逼出来的。你手里可能有一台闲置的云主机或者一台群晖、飞牛 NAS想把它变成一个自己能完全掌控的文件共享中心。这时候搜「私人云盘源码」跳出来的方案五花八门但真正能做到「下载、解压、跑起来、能用」这条最短路径的Cloudreve 是绕不开的一个。它是一套用 Go 写的云网盘系统前端界面简洁支持本地存储、对象存储、OneDrive 等多种后端自带文件共享传输、多用户管理和 WebDAV。这套源码配合一份搭建教程基本能让你在一个下午之内拥有一个界面不输商业产品的私人云盘。这篇文章面向的是想自己动手把 Cloudreve 跑起来、并且真正用起来的从业者从环境准备到参数调优把中间那些教程视频里不会细说的坑一次讲清楚。2. Cloudreve 云盘源码的部署环境与依赖准备2.1 云主机系统选择与最低配置要求在动手之前先把运行环境定下来。Cloudreve 本体是一个编译好的二进制文件对系统本身不挑但考虑到你要长期挂着做文件共享传输系统选择还是有讲究的。常见做法是选 Debian 12 或 Ubuntu 22.04 LTS这两个版本的软件源稳定社区资料多遇到问题好搜。如果你用的是云主机买的时候注意看架构Cloudreve 官方发布页提供 amd64 和 arm64 两个版本群晖、飞牛 NAS 这类设备通常是 x86_64直接下 amd64 就行。配置方面最低 1 核 1G 能跑起来但如果你打算开启缩略图生成或者多人同时上传下载建议 2 核 2G 起步。硬盘空间取决于你存多少文件系统盘 20G 只装程序足够数据盘单独挂载更稳妥。这里有个容易被忽略的点如果你用的是国内云主机记得在安全组里放行你计划使用的端口默认是 5212但很多人会改成 80 或 443 配合反向代理。提示不要用 CentOS 7 这类已经停止维护的系统后面装数据库和反向代理时会遇到一堆依赖问题血泪经验。2.2 数据库选型SQLite 还是 MySQLCloudreve 支持 SQLite、MySQL、PostgreSQL 三种数据库。对于个人使用或者小团队SQLite 完全够用它是文件型数据库不需要额外安装服务Cloudreve 首次启动会自动创建。但如果你打算开放注册、用户数超过几十个或者需要频繁做数据备份和迁移那就上 MySQL。我一般会这样判断单用户或者三五个人自己用SQLite 省事要给别人开账号、做文件共享传输的直接 MySQL。MySQL 的安装命令如下以 Debian 12 为例# 更新软件源并安装 MySQL 服务端 apt update apt install -y mysql-server # 启动 MySQL 并设置开机自启 systemctl start mysql systemctl enable mysql # 进入 MySQL 交互界面创建 Cloudreve 专用数据库和用户 mysql -u root -p进入 MySQL 后执行-- 创建数据库字符集用 utf8mb4 以支持 emoji 和特殊字符 CREATE DATABASE cloudreve CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建专用用户把 password 换成你自己的强密码 CREATE USER cloudrevelocalhost IDENTIFIED BY password; -- 授予该用户对 cloudreve 库的全部权限 GRANT ALL PRIVILEGES ON cloudreve.* TO cloudrevelocalhost; -- 刷新权限使配置生效 FLUSH PRIVILEGES;这段 SQL 的逻辑很直接建库、建用户、授权、刷新。参数上注意utf8mb4不要写成utf8否则用户上传文件名带 emoji 时会报错。密码不要用弱口令这台机器如果暴露在公网MySQL 3306 端口千万不要对外开放只允许本地连接。2.3 下载 Cloudreve 二进制文件与目录规划环境准备好之后去 Cloudreve 官方发布渠道下载对应架构的压缩包。这里不写具体版本号因为版本更新频繁你下载时选最新稳定版即可。下载完成后解压得到一个可执行文件。我习惯把程序放在/opt/cloudreve目录下数据目录单独放在/data/cloudreve这样以后升级程序时不会误删用户上传的文件。# 创建程序目录和数据目录 mkdir -p /opt/cloudreve mkdir -p /data/cloudreve/uploads mkdir -p /data/cloudreve/avatar # 进入程序目录假设压缩包已经上传到当前目录 cd /opt/cloudreve tar -zxvf cloudreve_*_linux_amd64.tar.gz # 赋予可执行权限 chmod x cloudreve解压出来的cloudreve就是主程序。第一次运行它会自动生成配置文件conf.ini和 SQLite 数据库文件。如果你用 MySQL需要先运行一次让它生成配置文件然后修改配置再重启。目录规划的核心原则是程序和数据分离这样备份的时候只需要打包/data/cloudreve和数据库导出文件升级的时候直接替换二进制文件重启即可。3. 从零跑通 Cloudreve配置文件、启动与反向代理3.1 首次启动与 conf.ini 关键参数解读第一次执行./cloudreve时终端会输出初始管理员账号和密码这个信息只显示一次务必记下来。同时程序会在同级目录生成conf.ini。默认情况下它使用 SQLite数据库文件也在同级目录。如果你要用 MySQL先按 CtrlC 停掉然后编辑conf.ini。[Database] ; 数据库类型可选 sqlite / mysql / postgres Type mysql ; MySQL 连接信息按你实际创建的库和用户填写 Host 127.0.0.1 Port 3306 User cloudreve Password password Name cloudreve ; 表前缀多实例共用库时有用单实例留空即可 TablePrefix cd_ [System] ; 调试模式排错时设为 true生产环境改回 false Debug false ; 监听端口默认 5212 Listen :5212 ; 会话密钥首次启动自动生成不要手动改 SessionSecret xxxxxxxx参数上重点看三个Type改成mysql后下面的连接信息必须和你在 2.2 节创建的一致Listen如果改成:80需要 root 权限运行更推荐保持 5212 然后用 Nginx 反向代理Debug在排查 500 错误时打开能看到详细堆栈但生产环境记得关掉否则日志会膨胀得很快。3.2 用 systemd 托管 Cloudreve 进程直接./cloudreve跑在前台SSH 一断开进程就没了。正确做法是写一个 systemd 服务单元让它开机自启、崩溃自动重启。# 创建 systemd 服务文件 cat /etc/systemd/system/cloudreve.service EOF [Unit] DescriptionCloudreve Cloud Storage Service Afternetwork.target mysql.service Wantsmysql.service [Service] # 工作目录指向程序所在目录 WorkingDirectory/opt/cloudreve # 启动命令 ExecStart/opt/cloudreve/cloudreve # 崩溃后自动重启 Restarton-failure RestartSec5 # 以 root 运行如果改了低端口需要保留否则可以换成普通用户 Userroot [Install] WantedBymulti-user.target EOF # 重载 systemd 配置并启动服务 systemctl daemon-reload systemctl start cloudreve systemctl enable cloudreve # 查看运行状态确认没有报错 systemctl status cloudreve这段配置里After和Wants指定了 MySQL 服务确保数据库先起来。Restarton-failure配合RestartSec5是保命配置程序因为内存不足被 OOM 杀掉后能自动拉起来。WorkingDirectory必须指向conf.ini所在目录否则程序找不到配置会重新生成一份导致数据「丢失」的假象。3.3 Nginx 反向代理与 HTTPS 配置Cloudreve 默认跑在 5212 端口直接暴露这个端口不优雅也不安全。用 Nginx 做反向代理顺便把 HTTPS 配上。假设你已经有了域名和证书Nginx 配置如下server { listen 80; server_name pan.yourdomain.com; # 强制跳转 HTTPS return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name pan.yourdomain.com; ssl_certificate /etc/nginx/ssl/pan.yourdomain.com.crt; ssl_certificate_key /etc/nginx/ssl/pan.yourdomain.com.key; # 上传大文件时必须放宽限制否则会 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; # WebSocket 支持用于实时通知 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; } }client_max_body_size这个参数是文件共享传输场景下的关键默认 1M 会导致稍大一点的文件上传直接失败报 413 错误。设成 2048m 意味着允许 2G 的单文件上传你可以根据实际需求调整。proxy_set_header那几行是为了让 Cloudreve 能拿到真实客户端 IP否则后台看到的全是 127.0.0.1封禁和日志都没法用。4. 文件共享传输与存储策略的落地配置4.1 本地存储策略的路径与权限设置Cloudreve 启动后用初始管理员账号登录第一件事是去后台配置存储策略。默认会有一个本地存储策略但路径可能指向程序目录需要改成你规划的数据目录。进入「管理面板」→「存储策略」→「本地存储」把存储目录改成/data/cloudreve/uploads。改完之后有个必做动作确保运行 Cloudreve 的用户对这个目录有读写权限。如果你用 root 跑那没问题如果用普通用户执行# 把数据目录所有权交给运行 Cloudreve 的用户假设用户名为 cloudreve chown -R cloudreve:cloudreve /data/cloudreve chmod -R 755 /data/cloudreve权限不对的典型现象是上传文件时提示「上传失败」但日志里只看到权限拒绝。这个坑我踩过不止一次尤其是从 root 切换到普通用户运行的时候旧文件的属主没改新文件写不进去。4.2 对接对象存储以 S3 兼容协议为例当本地磁盘不够用或者你想把文件放到更便宜的存储上时可以对接对象存储。Cloudreve 支持 S3 兼容协议这意味着你可以接主流的云厂商对象存储也可以接自建的 MinIO。配置入口在「存储策略」→「添加存储策略」→「Amazon S3」。需要填的参数包括Bucket 名称、Endpoint、Access Key、Secret Key、区域。这里有个细节如果你用的是自建 MinIOEndpoint 要填完整的地址加端口比如http://192.168.1.100:9000并且把「使用 SSL」关掉。填完之后点「测试连接」成功后再保存。注意对象存储策略设为默认后新上传的文件会走对象存储但之前本地存储的文件不会自动迁移。需要手动在文件管理里做迁移或者用命令行工具同步。4.3 分享链接的有效期与提取码策略文件共享传输是私人云盘的核心使用场景。Cloudreve 的分享功能在用户端文件右键菜单里可以设置分享有效期和提取码。后台可以统一控制这些策略路径在「参数设置」→「分享」。我一般会这样配有效期最长 7 天提取码强制开启禁止分享整个根目录。这样做的好处是避免用户把整个网盘分享出去导致内容失控。另外「允许游客下载」这个选项如果开了任何人拿到链接就能下不开则需要登录。看你的使用场景如果是给外部客户传文件开着更方便如果是内部团队用关掉更安全。5. 避坑与排查Cloudreve 搭建教程里不会细说的五个坑5.1 上传大文件失败报 413 或超时现象上传超过几十兆的文件时浏览器提示上传失败Nginx 日志里出现client intended to send too large body。原因Nginx 的client_max_body_size默认值太小同时 PHP 或后端超时时间不够。解决在 Nginx 配置里把client_max_body_size调到你需要的大小比如 2048m。如果用了 CDNCDN 侧也有上传限制需要一并调整。另外 Cloudreve 本身对上传大小没有硬限制瓶颈通常在反向代理和网络带宽。5.2 后台登录后提示「会话已过期」或频繁掉线现象刚登录进去点几个页面就跳回登录页或者提示会话过期。原因conf.ini里的SessionSecret在程序重启后重新生成了导致旧会话失效。这种情况通常发生在你把程序目录挂载到临时文件系统或者容器化部署时没有持久化配置。解决确保conf.ini文件持久化保存不要放在临时目录。如果是 Docker 部署把配置目录挂载出来。另外检查系统时间是否准确时间偏差过大会导致会话校验失败。5.3 上传的文件在服务器上找不到现象网页显示上传成功但去/data/cloudreve/uploads目录下看不到文件。原因存储策略的路径配置和实际运行目录不一致或者你改了策略但没点「设为默认」。解决进后台「存储策略」确认默认策略是哪一个再看该策略的存储目录路径。如果用了相对路径它是相对于程序运行目录的建议一律用绝对路径。改完策略后新上传的文件才会走新路径旧文件还在老地方。5.4 反向代理后获取不到真实 IP现象后台日志里所有访问 IP 都是 127.0.0.1无法做访问控制。原因Nginx 没有传递X-Real-IP和X-Forwarded-For头或者 Cloudreve 没有开启「信任反向代理」。解决在 Nginx 配置里加上 3.3 节那几行proxy_set_header。然后在 Cloudreve 后台「参数设置」→「基础」里把「信任的代理服务器」填上127.0.0.1这样它才会解析转发过来的 IP 头。5.5 数据库连接失败程序启动即退出现象systemctl status cloudreve显示服务失败日志里报Error 1045: Access denied for user。原因conf.ini里的数据库用户名或密码和 MySQL 里创建的不一致或者 MySQL 没有启动。解决先用mysql -u cloudreve -p手动登录测试确认账号密码正确。然后检查conf.ini里Host是127.0.0.1还是localhostMySQL 对这两个的认证方式可能不同。最后确认systemctl status mysql是 running 状态。6. 进阶技巧用 WebDAV 把 Cloudreve 挂载成本地磁盘Cloudreve 内置了 WebDAV 服务开启之后你可以把它挂载到 Windows 资源管理器、macOS Finder 或者 Linux 的davfs2上像操作本地文件夹一样操作云盘文件。这个功能在「参数设置」→「WebDAV」里开启默认路径是/webdav端口和主服务一致。开启后在 Windows 上映射网络驱动器地址填https://pan.yourdomain.com/webdav账号密码用你的 Cloudreve 登录凭证。macOS 用 Finder 的「前往」→「连接服务器」地址一样。Linux 下用davfs2挂载# 安装 davfs2 apt install -y davfs2 # 创建挂载点 mkdir -p /mnt/cloudreve # 挂载输入 Cloudreve 的用户名和密码 mount -t davfs https://pan.yourdomain.com/webdav /mnt/cloudreve挂载成功后/mnt/cloudreve里就能看到你网盘里的所有文件。这个方案的好处是你不用装任何客户端系统原生支持。但要注意WebDAV 走的是 HTTPS大文件传输时性能不如专用客户端适合文档类的小文件同步。另外如果你在 Nginx 里配了client_max_body_sizeWebDAV 上传也受这个限制。我自己的习惯是主力用网页端管理文件需要批量整理的时候挂载 WebDAV 用本地工具操作传大文件还是走网页端或者客户端。这套 Cloudreve 云盘源码从部署到用顺前后大概花了我一个周末中间踩的坑基本都写在上面了。希望帮到你。本文还有配套的精品资源点击获取