人物:我,29 岁退伍兵转的野路子技术宅 / 时间:上上个周末 + 两个晚上 / 地点:上海家里,书桌角落那台 13W 的 2014 Mac mini / 事件:朋友吐槽网盘会员太贵,我把吃灰的机器拉出来,给他搭了个类似蓝奏云的运营级网盘,公网 IP 直接访问
事情是这样的。上周五晚上,我一个老战友在微信上跟我倒苦水:他新开的小店要存一堆产品图、报价单、合同扫描件,还得时不时发文件给客户。百度网盘免费版限速限得他想骂人,充会员一年两百多,他心疼;坚果云一年也是两三百,他嫌贵。
他说:"你那不是整天折腾服务器吗?能不能给我搞个网盘?我文件真不多,十几个 G 到头了,就要个能上传能下载、能生成链接发给别人的。"
我一想,还真行。手头正好有台吃灰大半年的 2014 款 Mac mini,上个月刚被我装上 Ubuntu 24.04 单系统(这事我写过一篇实录,感兴趣的翻我前面文章),待机 13W,7×24 挂着不心疼。而且这机器现在就是台 Linux 小服务器,跑个网盘绰绰有余。
最关键的是——我老家那根宽带有公网 IP(电信申请的,之前也写过一篇怎么搞公网 IP 的文章),加上我的域名 moxiaoa.com 已经备案,域名解析 + 公网 IP 就能在外面直接访问。宽带费反正每个月都在交,机器电费一年才 60 块,等于白捡一台免费云服务器。
于是,说干就干。这篇把整个过程写清楚,从选型到安装到踩坑,命令全给你。
---
一、选型:为什么是 Cloudreve,而不是 Nextcloud
"类似蓝奏云的网盘"——蓝奏云的特点是什么?上传简单、分享链接下载快、不整那些花里胡哨的。按这个标准筛开源网盘:
| 方案 | 语言 | 特点 | 适合场景 |
|---|---|---|---|
| Cloudreve | Go | 单二进制、SQLite 起步、自带用户/分享/后台管理 | 小型运营网盘,最接近蓝奏云体验 |
| Nextcloud | PHP | 功能全家桶,同步/日历/协作 | 个人全功能,重,小机器跑不动 |
| Zpan | Go | 极简,单文件分享 | 只要分享链接,不要用户系统 |
| FileBrowser | Go | 就是个文件管理器 | 自己管理文件,不适合给朋友用 |
我最后选了 Cloudreve,理由三条:
- 轻。Go 写的,一个二进制文件 + 一个 SQLite 数据库就能跑,2014 Mac mini 双核 i5 完全无压力。
- 有用户系统。能注册、能登录、能后台管理,朋友自己上传自己管理,不用我天天帮他操作——这才是"能运营"。
- 分享链接体验跟蓝奏云一个路子。上传完点"分享",生成一个链接,对方点开就能下载,不用登录,不用装客户端。
---
二、准备工作
- 一台装好 Ubuntu 的机器(我这台是 2014 Mac mini,Intel x86_64 架构,系统 Ubuntu 24.04)
- 一个公网 IP(没有的话,电信打 10000、联通打 10010 申请,一般免费,我之前写过教程)
- 一个备案过的域名(这是关键!国内家用宽带的 80/443 端口默认封死,域名没备案,公网 IP 也白搭。我的 moxiaoa.com 已备案,皖ICP备2026037696号)
- 一个二级域名,比如
pan.moxiaoa.com,去域名商后台加一条解析记录指向你的公网 IP
我用的二级域名是 pan.moxiaoa.com,解析到老家宽带的公网 IP。后面装 DDNS 之前,先用临时 IP 顶着。
---
三、安装 Cloudreve(二十分钟搞定)
1. 下载
Cloudreve 是开源项目,GitHub 上有官方 Release。到 releases 页面下载 cloudreve_3.8.x_linux_amd64.tar.gz(Mac mini 是 Intel 芯片,选 amd64;如果你是 ARM 机器选 arm64):
cd /opt
sudo wget https://github.com/cloudreve/Cloudreve/releases/download/3.8.3/cloudreve_3.8.3_linux_amd64.tar.gz
sudo tar -zxvf cloudreve_3.8.3_linux_amd64.tar.gz
sudo chmod +x cloudreve
版本号以 GitHub Releases 页面最新版为准,命令里的 3.8.3 是我写这篇文章时的版本。
2. 首次启动(生成管理员账号)
sudo ./cloudreve
第一次启动会做两件事:生成 cloudreve.db(SQLite 数据库)和 conf.ini(配置文件),并在终端里打印初始管理员账号和密码——账号固定是 admin,密码是随机生成的,务必截图记下来,这个密码只显示这一次!
踩坑 1:初始密码没记。 这是新手最容易翻的车。Cloudreve 只打印一次初始密码,丢了只能删库重来。所以看到密码第一时间记到备忘录里。
3. 配置 conf.ini
先用 Ctrl+C 停掉,然后编辑配置文件:
sudo vim /opt/conf.ini
conf.ini 里几个关键项:
[System]
# 监听地址,默认 127.0.0.1:5212,生产环境建议保持这个,由 Nginx 反代
Listen = 127.0.0.1
Port = 5212
[Database]
Type = sqlite
DBFile = /opt/cloudreve.db
文件不多就用 SQLite,够用且零维护。你要是文件量大,再换 MySQL,但没必要。
4. 正式后台启动
cd /opt
sudo nohup ./cloudreve > /opt/cloudreve.log 2>&1 &
等两秒,验证一下服务起来了:
curl http://127.0.0.1:5212
返回 Cloudreve 的欢迎页面就是起来了。
---
四、反向代理 + HTTPS(这一步让朋友访问更体面)
Cloudreve 默认监听 127.0.0.1,只能本机访问,必须用 Nginx 或 Caddy 反代出去。我用的是 Caddy——最大的好处是自动申请和续期 HTTPS 证书,不用手动折腾 certbot。
1. 安装 Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/deb.deb' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddy
2. 配置 Caddyfile
sudo vim /etc/caddy/Caddyfile
内容:
pan.moxiaoa.com {
reverse_proxy 127.0.0.1:5212
encode gzip
}
就三行。reverse_proxy 把公网请求转发到本机 5212 端口,encode gzip 开启压缩。
3. 启动 Caddy
sudo systemctl restart caddy
sudo systemctl enable caddy
Caddy 会自动为 pan.moxiaoa.com 申请 Let's Encrypt 证书并配置 HTTPS。等十几秒,浏览器打开 https://pan.moxiaoa.com,看到 Cloudreve 登录页就成了。
踩坑 2:HTTPS 证书申请失败。 如果 Caddy 报错,八成是域名解析没生效。先在另一台电脑上
ping pan.moxiaoa.com确认解析到你的公网 IP,再重启 Caddy。
---
五、开机自启(服务器不能重启后罢工)
Mac mini 断电重启是常态(家里偶尔跳闸),必须让 Cloudreve 开机自动跑。写个 systemd 服务:
sudo vim /etc/systemd/system/cloudreve.service
[Unit]
Description=Cloudreve
After=network.target
[Service]
WorkingDirectory=/opt
ExecStart=/opt/cloudreve
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now cloudreve
sudo systemctl status cloudreve
看到 active (running) 就成了。以后机器重启,Cloudreve 自动拉起,不用管。
---
六、给朋友开通账号(运营细节)
服务跑起来之后,登录管理员后台(admin + 刚才记的密码),做这几件事:
- 改管理员密码:设置 → 账号,把初始密码换掉。
- 开启注册 + 邀请:设置 → 站点,把"允许注册"打开(也可以只开邀请注册,自己控制谁能用)。
- 限制上传大小:后台 → 存储策略 → 编辑"本机存储",把单文件上限设为 500MB(家庭宽带上行就 20-50M,太大了传不动)。
- 设置配额:给朋友开个账号,配额给 20GB,够他用了。
然后告诉朋友:
打开 pan.moxiaoa.com,注册个账号,直接传文件,传完点"分享",生成链接发给客户,对方打开就能下载,不限制速度。
朋友那边体验是什么样?上传快(取决于我们宽带上行)、下载快(HTTPS + gzip)、链接打开即下、不用装客户端——这就是他要的"蓝奏云"。
---
七、DDNS:公网 IP 会变,域名不能死(最重要的一步)
家用宽带的公网 IP 是动态的,隔几天就变一次。你今天解析的是这个 IP,过两天 IP 变了,朋友就打不开了。解决办法是 DDNS——自动检测 IP 变化并同步到 DNS 解析。
我用的是 DDNS-Go,开源小工具,支持国内主流域名商(阿里云、腾讯云、Cloudflare 等):
# 下载(amd64 版本,注意和 Cloudreve 一样选对架构)
cd /opt
sudo wget https://github.com/jeessy2/ddns-go/releases/latest/download/ddns-go_6.x.x_linux_x86_64.tar.gz
sudo tar -zxvf ddns-go_*.tar.gz
sudo chmod +x ddns-go
# 启动(默认端口 9876)
sudo nohup ./ddns-go > /opt/ddns-go.log 2>&1 &
然后在浏览器打开 http://127.0.0.1:9876,配置:
- 选你的 DNS 服务商(我用腾讯云 DNSPod,填上 API 密钥)
- 添加要同步的域名:
pan.moxiaoa.com - 保存,DDNS-Go 就会每隔几分钟检测一次公网 IP,变了自动改解析记录
再写个 systemd 让它开机自启(跟 Cloudreve 一样的写法,照着第五步改个名字就行)。
踩坑 3:IP 变了但域名还指着旧 IP。 就算有 DDNS,也要把域名解析记录的 TTL 调短(比如 300 秒),这样 IP 一变,几分钟内全网生效,不会出现"朋友白天还好好的,晚上就打不开了"的尴尬。
---
八、踩坑清单(这次实操全在这)
| 症状 | 原因 | 解法 |
|---|---|---|
| 初始管理员密码没记 | 只打印一次 | 看到密码立刻存备忘录,丢了只能删库重来 |
| HTTPS 证书申请失败 | 域名解析没生效 | ping 确认解析到公网 IP 再重启 Caddy |
| 手机访问正常,电脑打不开 | DNS 缓存 | 刷新 DNS(Windows: ipconfig /flushdns;Mac: sudo dscacheutil -flushcache) |
| 传大文件超时断连 | 宽带上行小 + Caddy 默认超时 | 存储策略限制单文件 500MB;Caddyfile 加 request_body { max_size 500MB } |
| 过几天链接打不开 | 公网 IP 变了 | 装 DDNS-Go 自动同步,DNS TTL 调短 |
| 重启后网盘挂了 | 没配开机自启 | 写 systemd 服务,Restart=always |
| 朋友注册了但传不了文件 | 没设存储策略/配额 | 后台给账号设置配额,单文件大小上限调好 |
---
收尾
折腾两天,朋友那边已经用起来了。他前两天跟我说:"这玩意儿比百度网盘好用多了,链接发出去客户直接就能下,我产品图更新也快。"
算笔账:宽带费本来就要交(69 块/月),机器电费一年 60 块,域名备案早弄完了——几乎是零边际成本,白得一台给朋友运营的网盘服务器。而朋友要是去开网盘会员,一年两三百,还限速。
这台 2014 Mac mini 的定位又清晰了一层:不追求性能,就是 7×24 安静省电地干杂活——内网穿透、下载机、家庭中控、给朋友跑网盘,全是它的主场。
后面我打算继续折腾:把 Cloudreve 接上对象存储做容量扩展、给网盘加个自动备份、还有 Mac mini 扩容 SSD 的那篇实录。想要第一手消息,关注我就行,也可以访问 moxiaoa.com 获取更多信息。
有问题想交流的朋友,可以加我微信:lige0552