昨天在我的Azure空闲虚拟机上部署了一个Cloudreve跟小伙伴们分享视频,跟着官方文档用Docker-compose,并且改用Caddy实现https证书自动续期和反代,比nginx要再方便一点。搜了一下好像没有类似的做法,发出来供大家参考。
1. 事先准备
- Linux 安装 docker-compose 请自己搜索,非常非常多的教程, 也可以参考官方教程先安装好docker, 再sudo apt install docker-compose 即可。官方教程 https://docs.docker.com/engine/install/ubuntu/
- 使用的 docker 镜像地址 https://hub.docker.com/r/xavierniu/cloudreve
- 确定好你的Cloudreve 根目录,该挂载存储之类的先行做好。例如我的Cloudreve根目录是 /home/wu/cloudreve 文件夹,这是我从Azure Storage 远程挂载过来的目录。常见的比如挂载第二块虚拟磁盘或硬盘后,先设置好fstab以防重启后目录出问题。
- 给虚拟机IP指定好域名的解析。
2. 开始部署
- 创建 .env 文件设置环境变量,示例文件放在附件了。 这里需要改的地方第一个是获取PUID & PGID。这是你运行Docker的用户,一般新部署的docker环境就默认是root用户,获得root用户ID的命令是 id root
将获得的ID写入 .env 文件里,root一般都是0 (毕竟是系统里最大的大佬用户)
- 在 .env 文件里,更改 aria2的token,自己可以瞎写一串,但是要记下来配置里用得到。
- 在 .env 文件里,将{CLOUDREVE_PATH}更改为你的 Cloudreve根目录。
- 创建 Caddyfile,直接用附件的不需要改。
- 创建 docker-compose.yml 需要改的是16行你的域名,17行你的邮箱地址(用在HTTPS证书申请),其他的可以不用动。
- 创建Cloudreve的 conf.ini 内容非常简单,默认使用内置的SQLite数据库即可,如果要用其他数据库请参考官方文档修改这个文件内容。将这个文件放在{CLOUDREVE_PATH}/dockercnf/aria2/conf 这个文件夹下。(文件夹不存在可以创建好)
3. 启动!
除了conf.ini,其它的3个文件放在同一个文件夹里。输入命令
sudo docker-compose up -d
此时docker会自动拉取image并且启动三个容器。稍等片刻后看到三个done就是容器启动成功。
使用以下命令查看docker 容器运行状态
sudo docker ps

图中的status下面看到up则是正常运行。图中第一列container id是你启动容器的id,例如我这里cloudreve的容器id是a78f08fe2f1b
使用以下命令查看Cloudreve的初始log,获取默认管理员账户和密码 (将后面的id a78f08fe2f1b 改为你的id)
sudo docker logs a78f08fe2f1b
此时你应该可以通过域名直接访问并且用管理员账户登录做各种设置了!
4. 维护
- 如果你的服务器直接暴露在公网,建议设置好防火墙规则,只允许80,443,22这些常用端口。特别是云服务器的IP段经常被扫描。
- 安装fail2ban防止密码爆破,例如它的默认设置会使SSH密码输错的IP,被禁用10分钟,输入命令安装即可
sudo apt install fail2ban
- 常用的docker命令最好学习下,非常简单, 这样在维护的时候会方便很多,例如:
docker start
docker stop
docker ps
docker rm
- 备份。因为我们用的是SQlite所以非常简单粗暴,直接把根目录压缩存起来就行。
用到的文件不支持传在附件中, 我放在github上了。
https://gist.github.com/davidwu111/b8d7d28355a6dd92147033428ce4e29e