0元打造家用云盘:旧笔记本变身NAS
家里有闲置笔记本或者台式电脑,存了几百G照片视频,想在外面也能访问?
买NAS?群晖起步价两三千,硬盘还得另算。云盘?限速限空间,大文件传到猴年马月。
昨晚我用一台2014年的老笔记本,折腾了大半个小时,搞了个文件上传下载服务。外网直接访问,不用内网穿透,不用公网IP,全程免费。
先说结论
最终效果:
• 本地地址:http://localhost:8080
• 外网地址:https://files.gogkd.com(固定域名,重启不变)
• 手机浏览器直接打开就能用
• 上传下载不限速(取决于你家宽带上行)
• 全程花费:0元
技术栈:Docker + Filebrowser + Cloudflare Tunnel
为什么不用NAS
NAS本质就是一台24小时开机的小电脑+硬盘。群晖、威联通这些成品NAS,入门款两三千,还得买硬盘。如果你只是想传文件,没必要花这个钱。
我这台笔记本配置:
• CPU:i5-4210M(2014年的,很老了)
• 内存:8GB
• 硬盘:220GB数据盘
• 系统:Ubuntu
2014年的老U跑NAS转码会吃力,但只跑一个文件服务完全没问题。
第一步:装Filebrowser
Filebrowser是一个开源的网页文件管理器,Docker一行命令就能跑起来。
# 创建专用共享目录(只共享这个目录,不动home下的敏感文件) mkdir -p ~/share # 启动Filebrowser docker run -d \ --name filebrowser \ --restart unless-stopped \ -p 8080:80 \ -v /home/你的用户名/share:/srv \ filebrowser/filebrowser:latest跑完之后打开浏览器访问 http://localhost:8080 ,能看到登录页面就成功了。
默认账号是admin,密码会自动生成一个随机的,看容器日志就知道:
docker logs filebrowser 2>&1 | grep "randomly generated password"安全提醒:我只挂载了~/share这个专用目录,没有把整个home目录挂进去。否则你的SSH密钥、配置文件全暴露在网页上了。
第二步:搞Cloudflare Tunnel
本地能访问了,但外网还访问不了。你家路由器没有公网IP(大内网),端口转发用不了。
解决方案:Cloudflare Tunnel。免费,不需要公网IP,不需要绑信用卡。
2.1 注册Cloudflare账号
打开 https://dash.cloudflare.com 注册,免费的。
2.2 把域名接入Cloudflare
如果你有自己的域名(比如我的gogkd.com),需要把DNS管理权从原来的注册商(比如阿里云)转到Cloudflare。很多人怕这一步——改NS会不会网站挂了?只要操作顺序对,完全不会。
第一步:在Cloudflare添加域名
登录Cloudflare控制台,点Add a site,输入你的域名,选免费计划。
第二步:导入现有DNS记录
这是关键。Cloudflare会自动扫描你域名的DNS记录,但可能不全。我有10多条记录(A记录、CNAME、MX邮箱、TXT验证等),自动扫描只找到一部分。
解决办法:从阿里云导出完整的DNS记录,再导入Cloudflare。
阿里云操作路径:域名控制台 → 域名列表 → 点你的域名 →域名解析→ 右上角导入/导出→ 导出格式选Zone File或BIND Zone File→ 下载文件。
然后在Cloudflare的DNS管理页面,点Import DNS Records,上传刚才下载的文件。导入完成后,对比一下阿里云的记录和Cloudflare的记录,确保所有子域名都在(比如blog、mail、md等)。
第三步:确认记录完整后,点Continue
Cloudflare会给你两个NS地址(类似chelsea.ns.cloudflare.com和odin.ns.cloudflare.com),复制下来。
第四步:去阿里云改NS
阿里云控制台 → 域名列表 → 点你的域名 →DNS修改(左侧菜单)→修改DNS服务器→ 删掉原来的ns1.hichina.com和ns2.hichina.com→ 填入Cloudflare给的两个NS地址 → 保存。
这一步不会影响网站访问,因为Cloudflare已经把你的DNS记录都迁过去了,改NS只是把解析权交过去。生效时间一般几分钟,最长24小时。
2.3 安装cloudflared
# 下载cloudflared wget -O /tmp/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 chmod +x /tmp/cloudflared # 安装到系统目录 sudo cp /tmp/cloudflared /usr/local/bin/2.4 登录授权
cloudflared tunnel login这行命令会生成一个授权链接,在浏览器打开。
打开后会看到一个Authorize Cloudflare Tunnel的页面,里面有个搜索框。输入你的域名(比如gogkd.com),点搜索。如果域名已经在Cloudflare上了,下面会列出你的域名,显示 Active 状态。
选中你的域名,点授权。页面会显示Success,告诉你证书已安装成功。
授权成功后会在~/.cloudflared/下生成一个cert.pem证书文件。这个文件是后续创建隧道的凭证,别删了。
2.5 创建隧道
# 创建隧道 cloudflared tunnel create filebrowser # 绑定域名 cloudflared tunnel route dns filebrowser files.gogkd.com2.6 写配置文件
cat > ~/.cloudflared/config.yml << 'EOF' tunnel: 你的隧道ID credentials-file: /home/你的用户名/.cloudflared/你的隧道ID.json ingress: - hostname: files.gogkd.com service: http://localhost:8080 - service: http_status:404 EOF2.7 启动隧道
cloudflared tunnel --config ~/.cloudflared/config.yml run filebrowser打开 https://files.gogkd.com ,能看到Filebrowser的登录页面就成功了。
第三步:设成开机自启
笔记本重启后服务要自动跑起来,不然每次都要手动启动。
Filebrowser
Docker容器设了--restart unless-stopped,重启后自动拉起。
Cloudflare Tunnel
# 创建systemd服务 sudotee /etc/systemd/system/cloudflared-filebrowser.service << 'EOF' [Unit] Description=Cloudflare Tunnel for Filebrowser After=network.target [Service] Type=simple ExecStart=/usr/local/bin/cloudflared tunnel --config /home/你的用户名/.cloudflared/config.yml run filebrowser Restart=always RestartSec=5 User=你的用户名 [Install] WantedBy=multi-user.target EOF # 启动并设置开机自启 sudo systemctl daemon-reload sudo systemctl enable cloudflared-filebrowser sudo systemctl start cloudflared-filebrowser实际体验
上传速度取决于你家宽带上行。我测试了一下:
• 上传1GB文件:约1分钟(100Mbps上行)
• 上传10GB文件:约10分钟
比云盘的龟速强太多了。而且没有空间限制,你硬盘多大就能传多大。
手机上直接用浏览器打开 https://files.gogkd.com ,登录后就能上传下载。iOS和Android都支持,不用装APP。
安全注意事项
1.一定要设密码:Filebrowser自带登录认证,别用默认密码
2.只共享专用目录:不要把home目录整个挂进去
3.Cloudflare自带TLS加密:传输过程是加密的,不怕被窃听
4.URL保密:知道地址+密码就能访问,别随便分享
常见问题
Q:Cloudflare Tunnel免费吗?
A:免费,不绑信用卡。Quick Tunnel(临时URL)每次重启会变,Named Tunnel(固定域名)需要域名在Cloudflare上。
Q:没有自己的域名怎么办?
A:可以用Quick Tunnel,每次启动会给你一个随机URL(xxx.trycloudflare.com),重启会变。够用但不方便。
Q:能传多大的文件?
A:没有限制,取决于你的硬盘空间和带宽。
Q:Mac能用吗?
A:能。教程里用的Linux,但Docker和cloudflared都有Mac版,流程一样。
Q:2014年的老笔记本跑得动吗?
A:Filebrowser几乎不吃资源,cloudflared也很轻量。CPU占用不到1%,内存占用不到50MB。老机器完全没问题。
