Cloudreve 是一款开源的 WEB 个人云存储系统. 使用 GO 语言开发. 支持本机、从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDrive (包括世纪互联版) 作为存储介质. 且支持 Aria2 离线下载. 本篇文章将介绍 Linux 下 Cloudreve 的简易部署流程.
下载
Cloudreve 的 github 主页是 https://github.com/cloudreve/Cloudreve 截止发稿时间为止, 最新版本为 3.0 版. 我们在 github 主页的 “releases” 页下载最新版本即可. Cloudreve 提供多种不同架构的程序. 你需要明确你目标部署设备 CPU 的架构 以及操作系统使用的架构. 不同架构之间可能是不兼容的. 下面我会列出一些常用设备所使用的 CPU 和操作系统架构, 请参照着下载.
设备 | CPU | 操作系统 | 架构 | 默认支持 |
树莓派3B | Broadcom BCM2837 | Raspbian | armhf | ✔ |
树莓派3B | Broadcom BCM2837 | Ubuntu | arm64 | ✔ |
树莓派4B | Broadcom BCM2711 | Raspbian | armhf | ✔ |
树莓派4B | Broadcom BCM2711 | Ubuntu | arm64 | ✔ |
斐讯N1盒子 | Amlogic S905D | Armbian | arm64 | ✔ |
斐讯N1盒子 | Amlogic S905D | Android | arm64 | ✖ |
台式/笔记本电脑 | (Any) | Windows / Linux | x64 | ✔ |
台式/笔记本电脑 | (Any) | Windows / Linux | x86 | ✖ |
苹果电脑 | (Any) | MacOS | x64 | ✖ |
树莓派2B | Broadcom BCM2836 | Raspbian | armhf | ✔ |
NETGEAR R6220 Router | MediaTek MT7621 | OpenWRT | mipsel | ✖ |
Asus RT-AC66U-B1 Router | Broadcom BCM4708C0 | Linux | arm32 | ✔ |
注意, amd64 = x64 = x86_64, arm64 = aarch64.
还有, AMD64 不是 ARM64. 这俩不是一码事儿!
官方编译版支持的 CPU 架构其实不多. 但是其他的也可以通过自行编译予以支持. 这里暂不展开讨论.
确定自己设备 CPU 和操作系统架构后, 在 “Assets” 列表中按文件名后半部分对照自己设备 CPU 和操作系统的名字以及架构下载即可.

比如我的设备是 树莓派4B. 安装的是 Ubuntu 19. 树莓派4B使用的是 BCM2711, ARM64 架构, 上面运行的 Ubuntu 19 也是 ARM64 的, 那么我需要下载的就应该是 “cloudreve_3.0.0_linux_arm64.tar.gz”
如果还是不清楚, 建议在目标设备 Terminal 中输入 “uname -si” 看输出了什么内容. 可以以此判断自己设备 CPU 和操作系统所使用的架构.

由于 Github 内容托管所用的 Amazon S3 节点离我们普遍都比较远, 因此在 Github 上下载内容速度普遍比较慢. 请耐心等待. 下载完成后, 可以把压缩包中的内容 (就一个文件) 解压缩出来并传输到目标设备上 (通过 SFTP, FTP, SCP 或者 U盘 等等), 通过终端连接到目标设备, 并跳转到存放 cloudreve 主程序的文件夹. Linux 下跳转目录的命令是:
cd 你的目标目录
比如我 cloudreve 程序安装在了 /mnt/app/cloudreve-v3 目录下, 那么我切换到 cloudreve 的命令就是:
cd /mnt/app/cloudreve-v3
切换到目标目录之后, 我们可以通过 ls
命令查看当前目录中的文件.

不用皱眉头, 眼睛也不用瞪那么大. 就这个叫 cloudreve
的文件, 它就是 Cloudreve 的本体. 没有其他的了. 不要觉得自己什么东西没拷贝齐, 真的就这么一个文件!!!
启动
这时候 cloudreve 还是不能执行的. 因为此文件并没有可执行文件的权限. 此时还需要执行命令:
sudo chmod +x ./cloudreve
等以上步骤都完成之后, 直接输入命令
./cloudreve
就可以启动 cloudreve 的主程序了.
如果提示的是 “-sh: ./cloudreve: not found”, 或者 “-sh: ./cloudreve: cannot execute binary file: Exec format error” 说明程序与你目标设备的运行架构不符. 看好了重新下载.

如果能够成功运行, 应该会显示如下画面:

到这里其实你已经初步成功了. 可以开瓶可乐庆贺一下了. 直接访问
http://[目标设备IP或者域名]:5212/
应该就可以访问了.
注意: 这里的密码是随机的密码, 只会显示一次. 当你再次启动 Cloudreve 的时候, 密码就不会再显示了. 所以登陆之后, 切记在 Cloudreve 的管理面板里修改登录名和密码或另建管理员用户!!! 否则管理员密码忘记就只能删除主程序目录下的 cloudreve.db 跟 conf.ini 来重建管理员账户了!


服务化
但这时候还没有结束. 你是在控制台命令行中启动的 Cloudreve. 这时候它会一直占着你的 Session. 如果你按 Ctrl+C
或者关闭 Terminal, Cloudreve 进程都会自动结束的.

这时候我们需要做的, 就是将 Cloudreve 作为服务启动.
Linux 下创建服务的方式, 一般来说就是在 /lib/systemd/system
下创建一个 .service 文件. 我们在 Terminal 中输入命令
cd /lib/systemd/system
跳转到目标文件夹. 然后输入以下命令创建一个叫做 “cloudreve.service” 的文件
cat >/usr/lib/systemd/system/cloudreve.service <<EOF
[Unit]
Description=Cloudreve
After=network.target
Wants=network.target
[Service]
ExecStart=/你/安装 cloudreve 的/目录/的完整路径/cloudreve
ExecStop=/bin/kill -term $MAINPID
RestartSec=5s
Restart=on-failure
User=root
[Install]
WantedBy=multi-user.target
EOF
(这里的 “ExecStart=” 后面要写你 Cloudreve 的完整安装路径. 不要照抄!)
然后执行以下命令:
sudo systemctl daemon-reload
sudo systemctl enable cloudreve
以及这条命令:
sudo systemctl start cloudreve
这三条命令分别表示: 重新加载守护进程清单, 让 cloudreve 服务开机自启. 以及正式启动 cloudreve 服务.
这样, 每次当你重启服务器之后, cloudreve 就会自动启动了. 你关闭会话也不会导致 cloudreve 自动关闭了.
如果你发现 Cloudreve 无法访问的时候, 你可以使用如下命令看一下 Cloudreve 的服务是否正常:
service cloudreve status

如果 Active 项目显示绿色的 “active (running)” 就证明服务已经在正常运行了. 如果不是, 那证明 Cloudreve 没有运行. 可能是报错了或者怎么样的. 这时候你可以直接去 Cloudreve 主程序所在目录, 像最初启动 Cloudreve 的方式一样, 在 Terminal 中直接输入
./cloudreve
看看输出了什么. 一般这个时候, cloudreve 都会把无法启动的原因打印在屏幕上. 照着解决就是了.
基本配置
现在我们再切回到 Cloudreve 的所在目录, 会发现除了 cloudreve 以外还多出了三个文件和文件夹. 分别是 avatar, conf.ini, files.

这其中, avatar 目录存放的是用户的头像, files 文件夹则是用来存放用户上传的文件. 而 conf.ini 就是配置文件了. 配置可以修改什么呢? 可以设置数据库产品, 切换 SQLite 或者使用 MySQL, 可以修改默认端口, 可以指定 redis 服务等等…. 那我们现在就尝试一下修改默认的访问端口吧, 让我们不用每次打开 Cloudreve 的时候都要输入端口号.
先使用 cat 命令打开 conf.ini 输出一下:
cat conf.ini

可以看到整个文件中就 5 行内容. 第一行 [System] 是段落开头不用理会, 第二行是运行模式. 第三行是监听的端口. 第四第五行的内容不重要.
如果你想要让你的 Cloudreve 不需要端口就能访问, 请将 Listen = :5212
改为 Listen = :80
. 切记 冒号跟等号之间, 以及 等号跟前面单词之间 都是有空格的! 切记! 具体修改方法:
执行以下脚本:
cat >./conf.ini <<EOF
[System]
Mode = master
Listen = :80
SessionSecret = 这里你随便写点什么都可以,反正就是个随机字符串
HashIDSalt = 这里你也可以随便写点什么,反正就是个随机字符串
EOF
执行之后, 执行以下命令重启 cloudreve 服务:
sudo systemctl restart cloudreve
这时候我们就可以用默认的 80 端口来访问 cloudreve 服务了.

至此, Cloudreve 基本的部署过程结束.