乐于分享
好东西不私藏

不花一分钱,笔记本秒变文件服务器,手机电脑随时传文件

不花一分钱,笔记本秒变文件服务器,手机电脑随时传文件

不花一分钱,笔记本秒变文件服务器,手机电脑随时传文件

家里有闲置笔记本或者台式电脑,存了几百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# 启动Filebrowserdocker 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

# 下载cloudflaredwget -O /tmp/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64chmod +x /tmp/cloudflared# 安装到系统目录sudocp /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.com

2.6 写配置文件

cat > ~/.cloudflared/config.yml << 'EOF'tunnel: 你的隧道IDcredentials-file: /home/你的用户名/.cloudflared/你的隧道ID.jsoningress:  - hostname: files.gogkd.com    service: http://localhost:8080  - service: http_status:404EOF

2.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 FilebrowserAfter=network.target[Service]Type=simpleExecStart=/usr/local/bin/cloudflared tunnel --config /home/你的用户名/.cloudflared/config.yml run filebrowserRestart=alwaysRestartSec=5User=你的用户名[Install]WantedBy=multi-user.targetEOF# 启动并设置开机自启sudo systemctl daemon-reloadsudo systemctl enable cloudflared-filebrowsersudo systemctl start cloudflared-filebrowser

实际体验

上传速度取决于你家宽带上行。我测试了一下:

  • • 上传1GB文件:约1分钟(100Mbps上行)
  • • 上传10GB文件:约10分钟

比云盘的龟速强太多了。而且没有空间限制,你硬盘多大就能传多大。

手机上直接用浏览器打开 https://files.gogkd.com ,登录后就能上传下载。iOS和Android都支持,不用装APP。

安全注意事项

  1. 1. 一定要设密码:Filebrowser自带登录认证,别用默认密码
  2. 2. 只共享专用目录:不要把home目录整个挂进去
  3. 3. Cloudflare自带TLS加密:传输过程是加密的,不怕被窃听
  4. 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。老机器完全没问题。


本文为原创内容,首发于公众号「新一技术宅」,转载请注明出处。