零成本、可外网访问,还能跑Docker应用
你是否也有这样一台旧电脑?—— 屏幕可能已经碎裂,键盘有几个键不太灵光,开机需要整整三分钟,放在角落积了厚厚一层灰。
大多数人会选择扔掉或卖给回收站,但我用了48小时,将它变成了一台可以24小时运行的服务器,能随时随地访问,还能部署各种Docker应用,而且完全免费。
为什么需要一台自己的服务器?
开发者常常需要一台服务器来:
- 🚀 部署个人项目或演示
- 📱 搭建私有云盘或同步服务
- 🤖 运行定时任务或爬虫
- 🎮 架设游戏服务器
- 🔧 作为开发测试环境
但云服务器价格不菲,最便宜的也要每月几十元。而旧电脑的硬件性能其实足够运行大多数服务,最大的障碍是大多数家庭网络没有公网IP,无法从外网访问。
核心解决方案:内网穿透
我用 natapp + Docker 解决了这个核心问题。整个方案的原理非常简单,可以理解为在您的旧电脑和公网之间,搭建了一条专用的“数据隧道”。
架构说明
为了让您更直观地理解这个方案的数据流向,请看下面的示意图:
[您的本地服务] [旧电脑上的Docker] [Natapp云端隧道] [互联网用户]
▼ ▼ ▼ ▼
+-------------+ +---------------------------+ +-------------------+ +-----------------+
| | | | | | | |
| Web应用 |<------->| Natapp客户端容器 |<====>| 公网服务器 |<---->| 您的浏览器 |
| 数据库 | 本地 | (建立并维持隧道) | 加密 | (转发请求) | 公网 | 或移动应用 |
| API服务等 | 网络 | | 隧道 | | 访问 | |
| | | | | | | |
+-------------+ +---------------------------+ +-------------------+ +-----------------+
▲ ▲ ▲ ▲
| | | |
[只在局域网内] [作为桥梁,打通内外网] [提供公网入口点] [通过唯一域名访问]
可访问 运行在Windows Docker中 (natapp.cc域名) (如:xxx.pro.natapp.cc)
流程解读:
- 左端:您本地的Web服务、数据库等在旧电脑上运行,通常只能在家庭网络内访问。
- 中左:Docker容器中的Natapp客户端启动,它会主动与Natapp的云端服务器建立一条稳定的、加密的连接(隧道)。
- 中右:Natapp云端服务器为您分配一个唯一的公网域名(如
xxx.pro.natapp.cc)。 - 右端:任何互联网用户访问这个域名时,请求会先到达Natapp服务器。
- 贯通:Natapp服务器通过已建立的隧道,将请求精准地转发回您旧电脑上的Natapp客户端,再由客户端交给对应的本地服务处理,并将响应原路返回给用户。
最终效果:对于访问者来说,xxx.pro.natapp.cc 就是一个正常的网站;对您而言,无需拥有公网IP或操作路由器,就实现了服务的对外发布。
具体步骤
第一步:准备旧Windows电脑
- 精简系统:重装Windows 10/11,选择最小安装
- 关闭自动更新:避免半夜重启影响服务
- 设置高性能模式:电源选项中取消睡眠和休眠
- 固定本地IP:在路由器中为电脑分配固定IP(如
192.168.1.100)
第二步:获取免费内网穿透
我选择了natapp,因为它提供:
- 免费隧道(带宽足够个人使用)
- 国内节点,访问速度快
- 支持HTTP/HTTPS/TCP多种协议
- 简单易用的配置
访问 natapp.cn 注册后,在“我的隧道”中购买一个免费隧道,您将获得一个关键的 authtoken。
第三步:安装Docker Desktop
访问Docker官网下载Windows版Docker Desktop。关键在于安装时开启WSL2后端,这能让Docker在Windows上获得接近原生Linux的性能,这是流畅运行的关键。
安装后,在您选择的目录(如 C:\myserver)下,创建一个 docker-compose.yml 文件:
version: '3'
services:
natapp:
image: shyiny/natapp
container_name: natapp
environment:
- NATAPP_AUTHTOKEN=你的authtoken_粘贴到这里
restart: unless-stopped # 自动重启保证隧道稳定
nginx:
image: nginx:alpine
container_name: web-server
ports:
- "8080:80" # 将本地8080端口映射给Nginx
volumes:
- ./html:/usr/share/nginx/html # 挂载网页文件
restart: unless-stopped
filebrowser:
image: filebrowser/filebrowser
container_name: filebrowser
ports:
- "8081:80"
volumes:
- /srv:/srv
- ./filebrowser.db:/database/filebrowser.db
restart: unless-stopped
第四步:配置与优化
-
启动所有服务: 打开PowerShell或命令提示符,进入
C:\myserver目录,执行:docker-compose up -d这行命令会按照配置文件,一键拉取镜像并启动三个容器在后台运行。
-
查看隧道地址: 查看Natapp容器的日志,获取您的公网域名:
docker logs natapp在输出信息中找到类似
Tunnel established at https://xxxxxx.pro.natapp.cc的一行,这个https://xxxxxx.pro.natapp.cc就是您服务器的公网地址。 -
设置开机自启动:
- 创建批处理文件
startup.bat,内容为:cd /d "C:\myserver" docker-compose up -d - 按
Win + R,输入shell:startup,将startup.bat放入打开的“启动”文件夹中。
- 创建批处理文件
至此,您的免费私人服务器已经搭建完成! 现在,您访问 https://xxxxxx.pro.natapp.cc:8080 就能看到Nginx的欢迎页,访问 https://xxxxxx.pro.natapp.cc:8081 就能管理文件。
我部署了哪些实用服务?
1. 个人网盘(FileBrowser)
用刚才的filebrowser容器,我搭建了一个私有网盘,可以:
- 通过网页上传下载文件
- 在线预览图片、视频、文档
- 分享文件给朋友
- 管理多个用户权限
2. 代码仓库(Gitea)
在 docker-compose.yml 中添加:
gitea:
image: gitea/gitea
ports:
- "3000:3000"
volumes:
- ./gitea:/data
运行后,访问 https://xxxxxx.pro.natapp.cc:3000 就能替代GitHub私有仓库,所有代码完全在自己掌控中。
3. 自动化工具(nginxProxyManager)
这是反向代理管理工具,让我能用子域名区分不同服务,无需记住端口:
code.xxxxxx.pro.natapp.cc→ 指向Gitea (3000端口)files.xxxxxx.pro.natapp.cc→ 指向个人网盘 (8081端口)blog.xxxxxx.pro.natapp.cc→ 指向个人博客
4. 监控面板(Uptime Kuma)
实时监控各个服务的运行状态,宕机时通过Telegram、微信等通知我。
性能与功耗实测
我的旧电脑配置:
- Intel i3-6100 + 8GB DDR4
- 128GB SSD + 1TB HDD
- 集成显卡
实测结果:
- 🔌 待机功耗:25-30W(一天约0.7度电)
- 🌡️ 温度:CPU平均45°C(无需额外散热)
- 💾 内存占用:运行上述所有服务后占用4.2/8GB
- 📊 带宽:natapp免费隧道1Mbps,足够网页应用
每月电费成本约15元,相比最基础的云服务器(约50元/月),成本降低超过60%。
进阶技巧与安全提醒
安全加固(非常重要!)
- 务必修改默认密码:FileBrowser、Gitea等服务安装后第一件事就是改密码。
- 使用NPM添加访问认证:通过nginxProxyManager为每个服务添加简单的用户名密码验证。
- 定期更新:使用
docker-compose pull和docker-compose up -d定期更新镜像,修复安全漏洞。 - 备份配置:将整个
C:\myserver目录定期备份到移动硬盘或网盘。
数据备份自动化
可以创建一个计划任务,每周自动打包备份Docker数据卷。
远程管理
- 通过Tailscale组建虚拟局域网,可以更安全、高速地直接访问管理界面(如Docker端口)。
- 配置Telegram Bot,接收服务器状态通知。
你可能担心的问题
Q1:旧电脑24小时开机会不会坏?
A:服务器本来就是设计为长期运行的。确保散热良好,定期清灰,用五六年没问题。许多公司的服务器一开就是好几年。
Q2:natapp免费版够用吗?
A:对于个人使用完全足够。如果流量增加,可以考虑付费版(约10元/月)或搭配Cloudflare Tunnel(完全免费,但配置稍复杂)。
Q3:断电或断网怎么办?
A:在电脑BIOS中设置“通电自启”,并配一个小型UPS电源。服务都配置了 restart: unless-stopped,恢复后会自启。
Q4:会被黑客攻击吗?
A:比直接将服务器暴露在公网安全得多,所有流量都通过natapp隧道中转。只要您为各个服务设置了强密码,风险极低。
不只是省钱
这个方案的价值不仅仅是省下服务器费用:
- 环保:延长电子设备寿命,减少电子垃圾。
- 学习:是深入理解网络、Docker、服务部署和运维的绝佳实践。
- 可控:数据完全掌握在自己手中,隐私有保障。
- 灵活:硬件升级方便,硬盘不够加一块,内存不足换一条,成本极低。
开始行动吧!
今晚就找出那台旧电脑,跟着这些步骤操作。48小时后,你将拥有第一台完全属于自己的、可外网访问的服务器。
这不仅仅是技术实践,更是一种态度——在消费主义盛行的时代,用创造力和技术让旧物焕发新生,并真正为自己创造价值。
文中所有配置的详细代码与步骤清单,我已整理成文档。如果您在搭建过程中遇到任何问题,或者有更酷的Docker服务想推荐,欢迎在评论区交流分享!
与其让旧电脑在角落积灰,不如让它在新角色中继续发光。技术最有魅力的时刻,就是用简单方案解决实际问题的瞬间。