导语
你是否也曾想过把家里的闲置笔记本变成一台个人服务器,部署几个小网站或服务?但受限于本地网络环境(没有公网 IP),直接访问本地服务成了难题。本教程将带你从环境搭建开始,一步步实现:用 WSL2 作为 Windows 下的 Linux 子系统,Docker 容器化部署项目,再通过 NPS 或 Cloudflare 实现内网穿透,让你的本地网站能被公网访问。无论你是技术小白还是想尝试低成本部署的开发者,跟着这篇教程,你都能快速上手。
1. 环境准备:WSL2 安装与配置
1.1 为什么选择 WSL2?
Windows Subsystem for Linux (WSL2) 是微软推出的 Linux 子系统,能让你在 Windows 上直接运行 Linux 环境,无需额外虚拟机软件。选择 Ubuntu 24.04 是因为它是最新 LTS 版本,长期支持且兼容性好,适合作为开发服务器。
1.2 安装 Ubuntu 24.04 子系统
-
开启 WSL 功能:
以管理员身份打开 PowerShell,执行:
bash wsl --install -d Ubuntu_2404
(或参考微软官方教程:https://learn.microsoft.com/zh-cn/windows/wsl/install) -
验证安装:
安装完成后,在开始菜单找到「Ubuntu 24.04」启动,首次启动会初始化用户和密码。
检查 WSL 版本:
bash wsl -l -v # 输出中显示 "Ubuntu 24.04" 的状态为 "Running" 或 "Stopped" -
配置 WSL2 资源:
为避免卡顿,建议调整 WSL2 内存、交换分区等资源。在 Windows 用户目录(如C:\Users\你的用户名)下创建.wslconfig文件,添加以下配置:
ini [wsl2] networkingMode=bridged # 桥接网络,提升性能 memory=16GB # 分配内存(根据电脑配置调整,建议至少 4GB) swap=4GB # 交换分区,防止内存不足 processors=8 # 分配 CPU 核心数 localhostForwarding=true # 允许本地端口转发
保存后重启 WSL:
bash wsl --shutdown
1.3 调整 WSL 安装位置(可选)
若 C 盘空间不足,可将 WSL2 迁移到其他磁盘:
1. 停止 WSL:wsl --shutdown
2. 迁移命令:wsl --move Ubuntu_2404 D:\WSL\Ubuntu_2404(替换为目标路径)
1.4 防火墙与网络配置
为让 Docker 和 NPS 正常通信,需开放必要端口(如 Docker 默认 2375,NPS 服务器端 8024)。Ubuntu 24.04 默认使用 ufw 防火墙,可执行:
sudo ufw allow 2375/tcp # Docker 守护进程端口
sudo ufw allow 8024/tcp # NPS 服务器端端口
sudo ufw reload # 生效规则
⚠️ 注意:若仅测试,可临时禁用防火墙:sudo ufw disable,但生产环境需谨慎!
2. Docker 容器化部署环境
2.1 安装 Docker 引擎
Docker 能让你在 Linux 环境中隔离部署应用,避免依赖冲突。在 Ubuntu 中执行:
# 安装 Docker
sudo apt update && sudo apt install docker.io -y
# 启动 Docker 服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 测试安装:运行 hello-world 镜像
sudo docker run hello-world
若输出 Hello from Docker! 则安装成功。
2.2 安装 Docker Compose
Docker Compose 用于管理多容器应用(如同时运行前端、后端、数据库)。执行以下命令安装:
# 下载最新版 Docker Compose(替换版本号为最新稳定版)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
常用 Docker Compose 命令:
- docker compose up -d:后台启动服务
- docker compose stop:停止服务
- docker compose logs -f:实时查看日志
- docker compose down:停止并删除容器、网络
3. NPS 内网穿透:让本地服务暴露到公网
3.1 NPS 是什么?
NPS 是一款轻量级内网穿透工具,通过「服务器端 + 客户端」架构实现:
- 服务器端:部署在有公网 IP 的 VPS 上,负责接收客户端连接并转发流量
- 客户端:运行在本地 WSL2 中,连接到服务器端,将本地端口映射到公网域名
3.2 安装 NPS 服务器端(VPS 上)
-
下载 NPS 服务器端:
在 VPS 上(如香港/阿里云服务器)执行:
bash # 下载最新版 NPS 服务器端(根据架构选择,Linux 64 位) wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz tar -zxvf linux_amd64_server.tar.gz cd linux_amd64_server -
启动服务器端:
运行以下命令启动 NPS 服务器(默认端口 8024 为客户端连接端口,80/443 为服务代理端口):
bash ./nps server -server=0.0.0.0:8024 -vkey=your_vkey # 替换 your_vkey 为自定义密钥
--vkey是客户端连接的密钥,需与客户端配置一致
- 建议用nohup后台运行:nohup ./nps server -server=0.0.0.0:8024 -vkey=your_vkey & -
配置 NPS 后台管理:
访问服务器端 IP:8080(默认管理端口),用默认账号admin和密码123登录,在「客户端」菜单生成客户端配置文件。
3.3 配置 NPS 客户端(本地 WSL2 中)
-
下载 NPS 客户端:
在 WSL2 中执行:
bash wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz tar -zxvf linux_amd64_client.tar.gz cd linux_amd64_client -
启动客户端:
用服务器端的-vkey和 IP 连接:
bash ./npc -server=YOUR_VPS_IP:8024 -vkey=your_vkey # 替换 YOUR_VPS_IP 和 your_vkey
- 若连接成功,NPS 后台「客户端」列表会显示本地客户端在线 -
配置端口映射:
在 NPS 后台「端口映射」菜单,添加一条规则:
- 类型:HTTP 代理
- 本地 IP:127.0.0.1(WSL2 本地服务地址)
- 本地端口:4533(Docker 映射的网站端口)
- 目标地址:公网域名(如your-domain.com,需提前在域名提供商解析到 VPS IP)
3.4 其他内网穿透方案对比
- Cloudflare 方案:无需服务器,通过 Cloudflare CDN 转发流量,但国内访问延迟较高(适合快速测试)
- 阿里云 VPS 方案:速度快但需备案(国内用户若无居住证/备案,可选择香港/新加坡 VPS)
- NPS 方案:需 VPS 服务器,但可控性强,适合长期本地服务部署
4. 网站部署实战:以 Navidrome 音乐服务器为例
4.1 准备 Docker Compose 配置文件
在 WSL2 中创建项目目录,如 mkdir -p /usr/myApps/navidrome,在目录下新建 docker-compose.yml:
version: "3"
services:
navidrome:
image: deluan/navidrome:latest # 官方 Navidrome 镜像
ports:
- "4533:4533" # 映射本地 4533 端口
restart: unless-stopped # 容器异常时自动重启
environment:
ND_SCANSCHEDULE: 1m # 1 分钟扫描一次音乐文件
ND_LASTFM_ENABLED: "true" # 启用 LastFM 音乐推荐
# 替换为自己的 API 密钥(需自行注册 LastFM/Spotify 账号获取)
ND_LASTFM_APIKEY: "your_lastfm_apikey"
volumes:
- "/usr/myApps/navidrome/music:/music:ro" # 音乐文件目录(只读)
- "/usr/myApps/navidrome/data:/data" # 数据目录(本地存储)
4.2 启动服务与测试
执行以下命令启动服务:
cd /usr/myApps/navidrome # 进入项目目录
docker compose up -d # 后台启动
docker compose logs -f # 查看日志,等待服务启动完成
此时,访问公网域名 your-domain.com(已在 NPS 配置的域名),即可打开 Navidrome 界面(默认端口 4533)。
小结
通过本教程,你已完成从环境搭建到网站部署的全流程:
1. WSL2 作为本地 Linux 环境,解决 Windows 下开发与服务器体验一致性问题;
2. Docker + Docker Compose 实现应用容器化,简化部署与版本管理;
3. NPS 内网穿透 通过 VPS 服务器或 Cloudflare 实现本地服务公网访问;
4. 网站部署 以 Navidrome 为例,演示了 Docker 容器化部署流程。
⚠️ 关键注意事项:
- 若使用国内 VPS,需提前确认是否需备案(阿里云/腾讯云需备案,香港/国外 VPS 无需);
- 防火墙需仅开放必要端口(如 NPS 8024/8080,Docker 2375),避免安全风险;
- 内网穿透方案可根据需求选择(NPS 可控性强,Cloudflare 简单但延迟高)。
希望这篇教程能帮你把闲置笔记本变成个人服务器,自由部署自己的网站!
评论