如何映射GitHub Actions Runner公网IP并暴露端口以手动验证服务?
解决GitHub Actions Runner端口暴露供本地浏览器访问的方案
直接通过Runner公网IP+3000端口访问不可行,因为GitHub托管的Runner处于NAT网络架构下,公网IP是平台共享的,不会直接映射到Runner实例的内部端口,外部无法直接访问。
可行的方案是使用反向隧道工具将Runner内部的3000端口转发到公网可访问的地址,以下是具体实现方式:
1. 方案一:使用ngrok(稳定可靠,支持自定义域名)
准备工作
- 注册ngrok账号,获取个人
NGROK_AUTH_TOKEN - 进入GitHub仓库的「Settings」→「Secrets and variables」→「Actions」,添加名为
NGROK_AUTH_TOKEN的Secret,值为你的令牌
修改后的工作流配置
name: Start NPM Server & Expose Port on: push: branches: [ main ] workflow_dispatch: # 手动触发更适合临时验证场景 jobs: start-server: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install dependencies run: npm install - name: Setup ngrok run: | curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list sudo apt update && sudo apt install ngrok -y ngrok config add-authtoken ${{ secrets.NGROK_AUTH_TOKEN }} - name: Start server and expose port run: | npm start & # 后台启动服务,避免阻塞后续步骤 sleep 10 # 等待服务完全启动,可根据实际调整时长 ngrok http 3000 --log=stdout & # 后台启动ngrok转发端口 sleep 5 # 等待ngrok建立公网连接 # 输出公网访问地址 curl -s http://localhost:4040/api/tunnels | jq -r '.tunnels[0].public_url' sleep 3600 # 保持Runner在线1小时,足够完成手动验证
关键说明
- 手动触发:通过
workflow_dispatch可以按需启动工作流,避免代码推送时自动触发浪费资源 - 后台运行:用
&让服务和ngrok在后台运行,确保后续步骤能正常执行 - 公网地址获取:通过ngrok本地API获取转发后的公网URL,直接复制到本地浏览器即可访问Runner上的服务
2. 方案二:使用LocalTunnel(无需认证,快速测试)
如果只是临时快速验证,可使用无需注册的LocalTunnel:
name: Start NPM Server & Expose Port on: workflow_dispatch: jobs: start-server: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install dependencies run: npm install - name: Setup LocalTunnel run: npm install -g localtunnel - name: Start server and expose port run: | npm start & sleep 10 # 自定义子域名可选,不填则随机分配 lt --port 3000 --subdomain my-test-server & sleep 5 echo "访问地址: https://my-test-server.loca.lt" sleep 3600
注意:LocalTunnel免费域名稳定性较差,仅适合临时测试场景。
内容的提问来源于stack exchange,提问作者Matt Anderson
相关产品推荐
相关产品推荐

