通过WSL2、Docker 和 NPS 实现网站部署
本人纯小白,由于之前看了几篇文章和几个教学视频,在加上平时工作太过于无聊,而且在家又有闲着的笔记本,于是灵机一动想将本地电脑做成个人使用服务器,部署几个人的网站玩玩。为方便本地电脑直接使用的wsl2作为虚拟机,然后项目使用的docker,若路由器有公网ipv4使用可以直接跳过内网穿透部分教程,内网穿透使用尝试过三种方案最终有两种得以实现:
- 本地服务器通过 cloudflare 实现的一键内网穿透,无需服务器但是cloudflare 为外网的网站,在国内访问延迟比较高。
- 本地服务器通过vps(需要一台服务器)进行内网穿透,vps服务器为香港的,相对第一种方案延迟低一点,若其他较远的服务器延迟高可尝试使用优选域名和id进行加速(我未使用)。
- 本地服务器通过vps(需要一台服务器)进行内网穿透,这个尝试的阿里云服务器,一开始挺好的帮定域名后贼快,但是没用几天提示需要网络备案,由于在外住房,又没办居住证等问题,最后放弃。
1. 安装和配置 WSL2
1.1 安装 Ubuntu 24.04
首先,我们需要在 Windows 系统上安装 WSL2,并安装 Ubuntu 24.04 作为 Linux 子系统。
参考官方教程:安装 WSL | Microsoft Learn
-
下载 Ubuntu 24.04 并进行安装。
-
安装完成后,通过以下命令检查 WSL 版本:
wsl -l -v
-
配置 WSL2 虚拟机资源,例如设置内存、交换分区和处理器:
-- 参考文件位置: C:\Users\Admin\.wslconfig -- 参考网站: https://blog.csdn.net/weixin_45579994/article/details/112386425 [wsl2] networkingMode=bridged vmSwitch=WSLBridge ipv6=false memory=16GB swap=4GB processors=8 localhostForwarding=true
1.2 修改 WSL2 默认安装位置
如果未来系统空间不足,可以将 WSL2 的安装位置进行移动,具体操作可参考此教程。
1.3 配置和管理 WSL 防火墙
为确保 Docker 和 NPS 能正常工作,需要开放相应的端口,或者禁用防火墙:
# 查看防火墙状态
sudo ufw status
# 开放 Docker 和 NPS 所需端口
sudo ufw allow 2375
sudo ufw allow 4533
# 禁用防火墙
sudo ufw disable
# 重启防火墙
sudo ufw reload
# 卸载
sudo apt-get remove ufw
# 禁用
sudo ufw disable
1.4 其他相关设置
windows卸载wsl下的ubuntu
直接在设置里面卸载就行
wsl 设置默认用户
2. Docker 安装和配置
2.1 安装 Docker
在 WSL2 上使用 Ubuntu 安装 Docker 非常简单,执行以下命令即可:
# 安装 Docker
sudo apt install docker.io
# 启动 Docker 服务
sudo systemctl start docker
# 测试 Docker 是否安装成功
sudo docker run hello-world
可以通过 Docker 守护进程管理 Docker 容器:
# 重启 Docker 守护进程
sudo systemctl restart docker
2.2 安装 Docker-Compose
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具,通过以下命令安装 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
-- 常用相关指令
# 验证安装
docker-compose --version
# 参考网站
https://developer.baidu.com/article/details/2819402
# 第一次启动
docker compose up -d
# 重启
docker compose stop
docker compose start
# 升级
docker compose down
docker compose pull
docker compose up -d
# 查看日志
docker compose logs -f docs-navidrome-1
3. NPS 内网穿透
NPS(内网穿透)允许我们在没有公网 IP 的情况下,将本地服务暴露到公网。(可将本地项目端口绑定到对应域名上)
参考网站:https://www.youtube.com/watch?v=dL9-GeepjFg
参考文档:最新搭建NPS内网穿透,在外轻松远程访问内网设备!非常检查的配置流程,搭配openwrt软路由来使用,非常好用!轻量级NPS内网穿透自带后台设置界面,详解如何设置客户端和服务器#一瓶奶油 – 奶油之家
个人理解勿喷:nps服务器放在vps服务器上,客户端在本地电脑,客户端与远程外网地址的vps服务器进行连接,在nps界面配置将本地的端口绑定到对应的域名上。域名需要在对应的域名服务商绑定到对应vps服务器上。
3.1 NPS 安装
首先,下载 NPS 客户端和服务器端,解压后进行配置:
# 解压 NPS 服务器端文件
tar -zxvf linux_amd64_server.tar.gz
# 配置 NPS 服务器
./nps -server=154.21.200.24:8024 -vkey=your_vkey
3.2 设置 NPS 客户端
在本地设置 NPS 客户端,通过配置文件或命令行启动:
# 进入 NPS 客户端目录
cd /usr/myapps/nps
# 启动客户端
nohup ./npc -server=154.21.200.24:8024 -vkey=your_vkey &
通过 NPS,将本地的 Web 服务映射到公网访问地址。
4. Cloudflare 内网穿透
1,Cloudflare 提供的内网穿透服务也可以作为 NPS 的备选方案,但由于速度原因不建议优先选择。你可以参考Cloudflare 内网穿透教程进行设置。网上也有许多相关教程
2,l站大佬一键内网穿透脚本,(此方法可行,本人也是使用的此方法才得以成功)
5. 网站部署
5.1 使用 Docker 容器化部署网站
使用 Docker 部署网站服务可以简化服务器管理。下面以部署 Navidrome 音乐服务器为例:
5.1.1 Docker Compose 配置
参考视频:https://www.youtube.com/watch?v=7XtLD8y8EF0&t=206s
参考文章:【好玩的Docker项目】搭建一个完全自由的音乐播放软件————Navidrome 随时随地!想听就听! | 爱玩实验室
说明:建文件夹用于该项目的存放目录,在目录内建docker-compose.yml文件,内容如下(有配置不需要可以跳过):
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
ports:
- "4533:4533"
restart: unless-stopped
environment:
ND_SCANSCHEDULE: 1m
ND_LASTFM_ENABLED:
ND_LASTFM_APIKEY: 05eaac206af0861c0c46410ce2ce542c # 修改成自己的APIKEY
ND_LASTFM_SECRET: b4c06cd2bdbf4241a1ba0a6581204083 # 修改成自己的SECRET
ND_SPOTIFY_ID: 566a3d28728d4f0080a4aee45a6dbbd9 # 修改成自己的ID
ND_SPOTIFY_SECRET: 82cad0c258b3425d8c0eac12ff0ddcf1 # 修改成自己的SECRET
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
volumes:
- "/usr/myApps/navidrome/music/data:/data"
- "/usr/myApps/navidrome/music:/music:ro"
5.1.2 启动服务
在配置完成后,使用 Docker Compose 启动服务:
# 启动 Navidrome
docker-compose up -d
# 查看日志
docker-compose logs -f
服务启动后,访问 http://localhost:4533
即可登录 Navidrome 音乐服务器。
6,其他相关文章
本人使用的是雨云服务器,里面有香港服务器且纯中文
推广连接:雨云 - 新一代云服务提供商
便宜vps列表
【VPS选购分享】Racknerd
文件管理项目
LobeChat+ollama本地大模型项目