
结合 1Panel 与 SSH 部署 Cloudreve 网盘系统
结合 1Panel 与 SSH 部署 Cloudreve 网盘系统
在自托管(Self-hosting)领域,Cloudreve 是一个功能强大且广受欢迎的开源网盘系统。它支持多种云存储策略,提供在线文件管理、多用户支持和 WebDAV 等丰富功能。本文旨在提供一份详尽、客观的技术指南,阐述如何通过 Docker Compose,并结合 1Panel 服务器管理面板与 SSH 命令行工具,来高效、稳定地部署 Cloudreve 服务。
部署方案解析:为何选择 1Panel 与 SSH 结合?
在部署 Web 应用时,开发者可以有多种选择,从业界标准的纯命令行操作到完全图形化的面板管理。我们此次选择的 1Panel 与 SSH 相结合的方案,旨在融合两者的优点,实现效率与控制力的平衡。
-
1Panel 的角色与优势: 1Panel 作为一个现代化的 Linux 服务器运维管理面板,提供了一个直观的图形用户界面(GUI)。在此次部署中,它的核心作用是:
- 文件管理:方便地创建、编辑和管理部署所需的文件和目录结构,如
docker-compose.yml
配置文件。 - 可视化操作:对于需要精确设置目录权限、查看文件位置的用户而言,GUI 操作比命令行更不易出错。
- 后期维护:可以轻松地管理反向代理、防火墙和备份任务。
- 文件管理:方便地创建、编辑和管理部署所需的文件和目录结构,如
-
SSH 的角色与优势: SSH (Secure Shell) 提供了对服务器最直接、最底层的访问方式。在此次部署中,它的作用是:
- 执行核心命令:
docker compose up -d
这类命令的执行与日志查看,在终端中最为直接。 - 调试与监控:当容器启动失败或需要排查问题时,通过
docker logs
或其他 Docker 命令,SSH 提供了无可替代的即时反馈。 - 控制力:对于熟悉命令行的用户,SSH 提供了最高的控制自由度。
- 执行核心命令:
-
方案的协同效应与权衡:
- 优点:此方案将“准备工作”和“执行工作”清晰分离。使用 1Panel 进行目录和文件的可视化准备,降低了配置出错的概率;使用 SSH 执行部署命令,保留了对 Docker 运行状态的完全控制。这种方式对于新手友好,也让资深用户感到便捷。
- 缺点:此方案要求操作者同时具备使用 Web 面板和 SSH 客户端的能力,需要在两个界面之间进行切换,可能不适合追求极致单一操作流程的用户。
核心组件剖析:理解 docker-compose.yml
技术栈
我们的部署依赖于 Docker Compose,它通过一个 YAML 文件来定义和运行一个多容器的 Docker 应用。以下是本次部署中各个服务容器的作用分析:
-
cloudreve
服务: 这是应用的核心。- 功能: 运行 Cloudreve 的主程序,处理所有前端用户交互、后端 API 请求和业务逻辑。
- 目的: 提供网盘的 Web 界面和核心功能。
- 关键配置:
ports
: 将容器的5212
端口映射到服务器的5212
端口,使其可以被外部访问。volumes
: 这是数据持久化的关键。我们将宿主机的config
、uploads
和avatar
目录分别挂载到容器内部,确保 Cloudreve 的配置文件、用户上传的文件和头像数据在容器重启或更新后不会丢失。
-
postgresql
服务: 这是一个企业级的开源关系型数据库。- 功能: 存储 Cloudreve 的所有结构化数据。
- 目的: 持久化存储用户信息、文件元数据、分享链接、用户权限等关键信息。相比于默认的 SQLite,PostgreSQL 在高并发和数据完整性方面表现更优,是生产环境的理想选择。
- 关键配置:
environment
: 用于初始化数据库的用户名、密码和数据库名。volumes
: 将数据库的物理文件存储在宿主机的postgres_data
目录,这是确保数据库信息安全的生命线。
-
redis
服务: 这是一个高性能的内存键值数据库。- 功能: 用作缓存和会话存储。
- 目的: 缓存常用数据,减少对
postgresql
数据库的直接请求,提升应用的响应速度和性能。同时,它也用于管理用户的登录会话(Session)。
部署前的注意点
在开始部署之前,请确保完成以下准备工作:
- 服务器环境: 准备一台已安装好 Docker 和 Docker Compose 的 VPS 或独立服务器。
- 1Panel 安装: 确保服务器上已成功安装并可以访问 1Panel。
- SSH 访问: 确保你可以通过 SSH 客户端连接到服务器。
- 域名(可选但推荐): 准备一个域名并将其 DNS 解析指向你的服务器 IP 地址,这将在后续配置反向代理时使用。
- 密码安全: 预先准备一个足够复杂的字符串作为数据库密码,避免使用弱密码。
详细部署步骤
第 1 步:通过 1Panel 准备文件与目录
此步骤的核心是利用 1Panel 的图形化文件管理器,为 Docker 容器的数据持久化建立宿主机目录结构。
- 登录 1Panel 面板,导航至 文件 菜单。
- 在左侧文件树中,选择一个合适的根路径,例如
/opt
,并在此路径下新建目录,命名为cloudreve
。这个目录将作为我们整个项目的根目录。 - 进入
/opt/cloudreve
目录,继续创建以下子目录,它们将分别用于挂载各个容器的数据卷:config
(存放 Cloudreve 配置文件)uploads
(存放用户上传的文件)avatar
(存放用户头像)postgres_data
(存放 PostgreSQL 数据库文件)redis_data
(存放 Redis 数据)- (可选)
downloads
(如果需要使用 Aria2 离线下载,则创建此目录)
- 在
/opt/cloudreve
主目录下,点击新建文件,创建一个名为docker-compose.yml
的文件。
第 2 步:编写 docker-compose.yml
配置文件
双击打开刚刚创建的 docker-compose.yml
文件,将以下经过优化的配置内容粘贴进去。
services:
cloudreve:
image: cloudreve/cloudreve:latest
container_name: cloudreve
restart: always
ports:
- "5212:5212"
depends_on:
- postgresql
- redis
environment:
# --- 数据库配置 ---
- CR_CONF_Database.Type=postgres
- CR_CONF_Database.Host=postgresql
- CR_CONF_Database.Port=5432
- CR_CONF_Database.User=cloudreve
- CR_CONF_Database.Password=YOUR_POSTGRES_PASSWORD # [重要] 替换为你的强密码
- CR_CONF_Database.Name=cloudreve
- CR_CONF_Database.TablePrefix=cr_
# --- Redis 配置 ---
- CR_CONF_Redis.Server=redis:6379
- CR_CONF_Redis.Password= # 如果你的Redis设置了密码,请填写
- CR_CONF_Redis.DB=0
# --- 时区配置 ---
- TZ=Asia/Shanghai
volumes:
- /opt/cloudreve/config:/cloudreve/config
- /opt/cloudreve/uploads:/cloudreve/uploads
- /opt/cloudreve/avatar:/cloudreve/avatar
- /opt/downloads:/downloads # Aria2 离线下载目录,可选
postgresql:
image: postgres:15-alpine # 使用明确的版本号以增强稳定性
container_name: postgresql
restart: always
environment:
- POSTGRES_USER=cloudreve
- POSTGRES_PASSWORD=YOUR_POSTGRES_PASSWORD # [重要] 确保与上方密码一致
- POSTGRES_DB=cloudreve
volumes:
- /opt/cloudreve/postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine # 使用明确的版本号
container_name: redis
restart: always
volumes:
- /opt/cloudreve/redis_data:/data
# 注:此配置使用了主机路径映射(Host Path Mapping)而非 Docker 命名卷(Named Volumes)。
# 这种方式使得数据在主机文件系统中清晰可见,便于直接通过1Panel进行管理和备份。
在保存前,务必将文件中两处 YOUR_POSTGRES_PASSWORD
替换为您自己设定的复杂密码。
第 3 步:通过 SSH 执行部署命令
- 打开您的 SSH 客户端(如 MobaXterm, Termius, FinalShell 等),连接到您的 VPS。
- 使用
cd
(Change Directory) 命令,切换到我们刚刚准备好的项目目录:cd /opt/cloudreve
- 执行 Docker Compose 启动命令。
-d
参数代表detached
,意为在后台运行服务。docker compose up -d
- Docker 将开始拉取
cloudreve
,postgres
和redis
的镜像,并根据docker-compose.yml
的定义创建并启动这三个容器。此过程需要一些时间,具体取决于您的网络速度。
第 4 步:初始化 Cloudreve 管理员账户
- 部署完成后,在您的浏览器中访问
http://<你的服务器IP地址>:5212
。 - 您将看到 Cloudreve 的登录页面。新版本的 Cloudreve 采用首次注册用户即为管理员的策略。
- 点击页面上的注册链接,立即注册您的第一个用户。此账户将自动被授予管理员权限。
- 使用刚刚注册的账户登录,即可进入 Cloudreve 主界面。建议立即进入管理面板,熟悉各项配置。
部署后的重要事项
成功的部署只是第一步,为了安全、稳定地长期使用,以下操作至关重要:
-
设置反向代理与 HTTPS:
- 直接通过 IP 和端口访问既不专业也不安全。推荐使用 1Panel 的网站功能来设置反向代理。
- 在 1Panel 中创建网站,选择反向代理类型。
- 主域名填写您准备好的域名(例如
disk.yourdomain.com
)。 - 代理地址填写
http://127.0.0.1:5212
。 - 在创建过程中或创建后,为该站点申请并配置 SSL 证书以启用 HTTPS。这将加密所有传输数据,保障访问安全。
-
制定备份策略:
- 由于我们采用了主机路径映射,所有重要数据都集中在
/opt/cloudreve
目录中。 - 您需要定期备份整个
/opt/cloudreve
目录。这个目录包含了 Cloudreve 的配置、用户文件、头像以及完整的数据库和 Redis 数据。 - 您可以使用 1Panel 的计划任务功能,创建一个定时任务来压缩并备份此目录到另一个位置或远程存储。
- 由于我们采用了主机路径映射,所有重要数据都集中在
-
应用更新:
- 当 Cloudreve 发布新版本时,更新过程非常简单。
- 通过 SSH 进入
/opt/cloudreve
目录,依次执行以下命令:# 拉取最新的镜像 docker compose pull # 重新创建并启动容器,新的镜像将被应用 docker compose up -d
- 由于数据卷是持久化的,此过程不会影响您的任何数据。
结论
通过结合 1Panel 的可视化管理能力和 SSH 的强大执行力,我们完成了一次健壮、可维护的 Cloudreve 部署。此方案不仅清晰地分离了配置准备与服务执行,还通过主机路径映射确保了数据的安全与可管理性。遵循本指南的操作流程和部署后建议,您将能够搭建并长期维护一个稳定、高效的个人或团队云盘系统。