Post

通过WSL2、Docker 和 NPS 实现网站部署方案

本教程指导将闲置笔记本变为个人服务器,通过WSL2(Ubuntu 24.04)在Windows下运行Linux环境,安装Docker及Docker Compose实现应用容器化部署,再使用NPS内网穿透工具(VPS服务器端+本地客户端)将本地服务暴露至公网。以Navidrome音乐服务器为例演示完整流程:配置WSL2资源、调整防火墙、安装Docker、编写docker-compose.yml并启动服务。关键结论:WSL2提供一致开发环境;Docker简化部署;NPS通过服务器端与客户端映射实现公网访问;需注意国内VPS可能需备案,防火墙仅开放必要端口。读者可低成本、无公网IP条件下自由部署个人网站。

网站部署 阅读 5 点赞 0 评论 0

导语

你是否也曾想过把家里的闲置笔记本变成一台个人服务器,部署几个小网站或服务?但受限于本地网络环境(没有公网 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 子系统

  1. 开启 WSL 功能
    以管理员身份打开 PowerShell,执行:
    bash wsl --install -d Ubuntu_2404
    (或参考微软官方教程:https://learn.microsoft.com/zh-cn/windows/wsl/install)

  2. 验证安装
    安装完成后,在开始菜单找到「Ubuntu 24.04」启动,首次启动会初始化用户和密码。
    检查 WSL 版本:
    bash wsl -l -v # 输出中显示 "Ubuntu 24.04" 的状态为 "Running" 或 "Stopped"

  3. 配置 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 上)

  1. 下载 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

  2. 启动服务器端
    运行以下命令启动 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 &

  3. 配置 NPS 后台管理
    访问服务器端 IP:8080(默认管理端口),用默认账号 admin 和密码 123 登录,在「客户端」菜单生成客户端配置文件。

3.3 配置 NPS 客户端(本地 WSL2 中)

  1. 下载 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

  2. 启动客户端
    用服务器端的 -vkey 和 IP 连接:
    bash ./npc -server=YOUR_VPS_IP:8024 -vkey=your_vkey # 替换 YOUR_VPS_IP 和 your_vkey
    - 若连接成功,NPS 后台「客户端」列表会显示本地客户端在线

  3. 配置端口映射
    在 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 简单但延迟高)。

希望这篇教程能帮你把闲置笔记本变成个人服务器,自由部署自己的网站!

继续阅读

全部归档
使用 Cloudflare Tunnel 实现内网穿透
使用 Cloudflare Tunnel 实现内网穿透

该教程介绍了一个用于管理 Cloudflare Tunnel 的 Linux 脚本 `cf-tunnels.sh`,支持安装隧道、选择性删除隧道及完全删除 `cloudflared`。使用前提:拥有 Cloudflare 账号并添加域名,Linux 服务器具备 sudo 权限。通过下载脚本、赋予执行权限并运行,即可出现菜单选择操作。安装时需输入隧道名称、域名及本地服务端口(默认 80),脚本自动完成 `cloudflared` 安装、登录授权、隧道创建和系统服务配置,确保开机自启。选择性删除会列出所有隧道,用户指定要删除的隧道 ID 或名称,脚本清理连接并删除隧道,但需手动前往 Cloudflare 官网删除相关 DNS 记录。完全删除则停止并移除 `cloudflared` 及其所有文件。此脚本简化了隧道生命周期管理,但删除隧道后需手动清理 DNS 记录。

混合技术应用
混合技术应用

本文通过9个典型场景,拆解RAG、Agent、多模态处理、工具调用、工程化部署等核心技术的混合应用逻辑。RAG构建企业知识库,解决幻觉与私有知识问题,生产端经文档解析、智能切片、向量化建库,消费端通过多路召回、重排、流式生成实现闭环。Agent通过意图路由、短期/长期记忆与工具调用形成对话记忆闭环;多Agent编排借助总控与子Agent分工处理复杂任务。FC、MCP与RAG构成“黄金三角”,分别负责动态工具调用、标准化接入与静态知识检索。多模态摘要降维、NL2SQL自助取数、高并发工程策略、数仓ETL及推荐系统三层链路进一步拓展应用边界。读者可掌握从技术选型到系统落地的完整思路,核心在于场景化组合RAG+向量库+大模型+工具链的底层逻辑。

OpenClaw 自托管 Agent 网关
OpenClaw 自托管 Agent 网关

OpenClaw是一个自托管开源AI助手网关,将飞书、钉钉、微信等聊天软件统一接入本地LLM Agent,实现多渠道统一接入、自托管安全可控。其核心三层架构(Channel/Brain/Body)实现关注点分离:Gateway层负责消息路由与鉴权,从不调用模型;Brain层负责指令解析、人格定义和LLM推理,支持Claude/GPT等模型无缝切换;Body层提供工具调用(如天气、日程)和文件操作。消息处理遵循七阶段Agentic循环(归一化、路由、上下文组装、LLM推理、ReAct工具循环、技能加载、持久化记忆)。记忆采用Markdown+YAML文件存储,支持人工编辑和Git备份,通过检索式访问避免上下文窗口爆炸。自动化任务支持Heartbeat心跳、Cron定时和Webhook事件触发。安全设计三道权限闸:入口闸(本地连接与配对码)、工具闸(默认拒绝白名单)、执行闸(Docker沙箱隔离)。实践踩坑提示包括记忆选择性遗忘、技能依赖耦合、Cron时区问题及Docker权限控制。核心优势:透明可控、安全隔离、灵活扩展。

评论