用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!

简介: 用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!

即使你不是程序员,只要有点动手能力,也能轻松把你的 Web UI 项目(比如一些有趣的 AI 应用、个人小工具等)部署到公网上,让你的朋友或者你自己随时随地都能访问!我们要用到的神器就是 Google Colab 和 ngrok。

你需要准备什么?

  1. 一个 Google 账号(用来登录 Colab)。
  2. 你的 Web UI 项目代码,通常会托管在 GitHub 上(如果还没有,别担心,我们会从克隆一个示例项目开始)。
  3. 一点点耐心和探索精神!

什么是 Colab 和 ngrok?

  • Google Colab (Colaboratory): 简单来说,就是 Google 提供的一个免费的在线写代码、跑代码的环境。它特别适合运行 Python 代码,而且还送你免费的计算资源!
  • ngrok: 这是一款能帮你把在你电脑上(或者像 Colab 这样的云端虚拟机上)运行的本地服务,安全地暴露到公共互联网上的工具。也就是说,它能生成一个公开的网址,指向你本地跑起来的应用。

部署三步曲,跟我来!
我们会把整个过程分成三个主要的代码块,你只需要按顺序在 Colab 的代码单元格里运行它们就好啦。

第一步:把你的项目“搬”到 Colab 并准备好环境
这个代码块负责从 GitHub 上下载你的项目代码,进入项目文件夹,并安装项目运行所需要的各种“零件”(我们称之为“依赖”)。

# 代码块 1:克隆项目并安装依赖
# --- 1. 克隆你的 GitHub 仓库 ---
# 把下面的 GitHub 链接替换成你自己的项目链接
# 如果你只是想体验,可以直接用这个示例项目的链接
GITHUB_PROJECT_URL = "https://github.com/peter-zx/IDfenxi.git" # 示例项目,请替换成你自己的
PROJECT_FOLDER_NAME = GITHUB_PROJECT_URL.split("/")[-1].replace(".git", "") # 从链接自动获取项目文件夹名
print(f"准备克隆项目:{GITHUB_PROJECT_URL}")
!git clone {
   GITHUB_PROJECT_URL}
print(f"项目克隆完成!文件夹名为:{PROJECT_FOLDER_NAME}")
# --- 2. 进入项目文件夹 ---
print(f"正在进入项目文件夹:{PROJECT_FOLDER_NAME}...")
%cd {
   PROJECT_FOLDER_NAME}
print(f"当前工作目录:")
!pwd # 显示当前路径,确认一下
# --- 3. 安装项目依赖 ---
# 大部分 Python 项目会有一个叫 requirements.txt 的文件,里面列了所有需要的库
import os
if os.path.exists("requirements.txt"):
    print("找到 requirements.txt 文件,准备安装依赖...")
    !pip install -r requirements.txt
    print("依赖安装完成!")
else:
    print("未找到 requirements.txt 文件。")
    print("如果你的应用启动失败,可能是因为缺少必要的库。")
    print("你需要根据你项目的具体情况,手动安装它们,例如:!pip install flask pandas gradio")
print("\n第一步完成!项目已下载并尝试安装了依赖。")

操作小贴士:

  • 替换项目链接: 代码里的 GITHUB_PROJECT_URL 一定要换成你自己项目的 GitHub 链接哦!
  • requirements.txt 如果你的项目没有这个文件,或者安装后应用还是报错说找不到某个库,你就需要根据错误提示,用 !pip install 库名 的方式手动在新的代码单元格里安装缺少的库。
  • 运行单元格: 在 Colab 里,把这段代码复制到一个代码单元格(Cell)里,然后点击单元格左边的播放按钮 (▶️) 来运行它。

第二步:启动你的 Web UI 项目(让它在后台悄悄运行)
现在项目和环境都准备好了,我们要启动它。为了不让它“霸占”住当前的单元格导致我们无法进行下一步,我们会让它在后台运行。

# 代码块 2:在后台启动你的 Web UI 项目
# --- 确保我们在正确的项目文件夹里 ---
# (如果上一步的 %cd 成功,这一步可以省略,但为了保险起见)
# %cd {PROJECT_FOLDER_NAME} # 如果你分多次运行,确保这行被执行或当前目录正确
# --- 启动你的应用 ---
# 假设你的项目主启动文件是 app.py,并且它是一个 Web 应用 (比如用 Flask, Gradio, Streamlit 写的)
# 这个命令会尝试在后台运行 app.py,并将所有输出信息保存到 app_log.txt 文件里
# 这样方便我们后续查看应用有没有正常启动,或者有没有报错
# 定义你的应用启动命令和监听端口
APP_START_COMMAND = "python app.py" # 如果你的启动文件不是 app.py,或者启动方式不同,请修改这里
APP_PORT = 1575 # 这是我们假设你的应用会监听的端口,要和 ngrok 里设置的一致
print(f"准备在后台启动应用,命令为:{APP_START_COMMAND}")
print(f"应用应该会监听在 0.0.0.0:{APP_PORT} (所有网络接口的 {APP_PORT} 端口)")
# 使用 nohup 和 & 让应用在后台运行,并将日志输出到文件
!nohup {
   APP_START_COMMAND} > app_log.txt 2>&1 &
# 给应用一点启动时间
import time
print("等待几秒钟,让应用有时间启动...")
time.sleep(10) # 等待10秒,如果你的应用比较大,可以适当增加等待时间
print("\n应用已尝试在后台启动。")
print("你可以通过运行下面的命令来查看应用的日志(最后20行):")
print("------------------------------------")
!tail -n 20 app_log.txt
print("------------------------------------")
print("请检查上面的日志,确保你的应用已经成功启动并没有报错。")
print("通常你会看到类似 'Running on http://0.0.0.0:{APP_PORT}/' 或其他表示服务已启动的信息。")
print("\n第二步完成!应用已在后台尝试启动。")

操作小贴士:

  • APP_START_COMMAND 如果你的项目不是用 python app.py 来启动的,比如是 python main.py 或者 streamlit run app.py,记得修改这里。
  • APP_PORT 这个端口号非常重要!你的应用代码里必须设置为监听 0.0.0.0 (或者所有可用网络接口) 的这个端口。例如,如果你用 Flask,你的 app.run() 可能需要写成 app.run(host='0.0.0.0', port=1575)
  • 查看日志: 运行完这个代码块后,一定要看看 !tail -n 20 app_log.txt 的输出。如果里面有错误信息,或者没有看到应用成功启动的提示,那说明应用没跑起来,ngrok 自然也连不上。

第三步:召唤 ngrok 神器,获取公网访问链接!
万事俱备,只欠东风!现在我们要用 ngrok 来为我们后台运行的应用变出一个公开的网址。

# 代码块 3:配置 ngrok 并获取公共访问链接
# --- 安装 pyngrok (ngrok 的 Python 小助手) ---
print("准备安装 pyngrok...")
!pip install pyngrok --quiet
print("pyngrok 安装完成。")
# --- 配置和启动 ngrok ---
from pyngrok import ngrok
# 在这里填入你从 ngrok 官网获取的 Authtoken
# 获取地址: https://dashboard.ngrok.com/get-started/your-authtoken (需要注册免费账号)
NGROK_AUTH_TOKEN = "YOUR_NGROK_AUTHTOKEN_HERE" # 务必替换成你自己的真实 Authtoken!
# 这个端口必须和你第二步中应用监听的端口一致
APP_PORT_FOR_NGROK = 1575 # 和上面 APP_PORT 保持一致
if not NGROK_AUTH_TOKEN or "YOUR_NGROK_AUTHTOKEN_HERE" in NGROK_AUTH_TOKEN:
    print("错误:请先在代码中替换 'YOUR_NGROK_AUTHTOKEN_HERE' 为你真实的 ngrok Authtoken!")
    print("你可以从这里获取: https://dashboard.ngrok.com/get-started/your-authtoken")
else:
    try:
        print(f"正在使用 Authtoken 配置 ngrok 并连接到本地端口 {APP_PORT_FOR_NGROK}...")
        ngrok.set_auth_token(NGROK_AUTH_TOKEN)

        # 如果之前有残留的 ngrok 进程或隧道,先尝试关闭它们,避免冲突
        tunnels = ngrok.get_tunnels()
        for tunnel in tunnels:
            ngrok.disconnect(tunnel.public_url)
            print(f"已关闭旧的 ngrok 隧道: {tunnel.public_url}")

        # 创建新的隧道
        public_url = ngrok.connect(APP_PORT_FOR_NGROK)
        print("\n🎉 太棒了!你的应用现在可以通过下面的公共 URL 访问了:")
        print(public_url)
        print("请复制上面的链接到浏览器中打开。")
        print("注意:第一次访问时,ngrok 可能会显示一个提示页面,点击 'Visit Site' 或类似按钮即可进入你的应用。")
    except Exception as e:
        print(f"😭 配置或启动 ngrok 时发生错误: {e}")
        print("请检查以下几点:")
        print("1. 你的 ngrok Authtoken 是否正确填写?")
        print("2. 你的应用 (在第二步中启动的) 是否真的在后台成功运行并且监听了正确的端口?可以再次查看 app_log.txt。")
        print("3. 网络连接是否正常?")
        print("4. 如果多次失败,可以尝试在 Colab 菜单中选择 '代码执行程序' -> '重启代码执行程序',然后从第一步重新运行所有代码块。")
print("\n第三步完成!请检查上面的输出获取你的公共访问链接。")

操作小贴士:

  • NGROK_AUTH_TOKEN 这是最关键的一步!你需要去 ngrok 官网注册一个免费账号,然后在你的仪表盘(Dashboard)里找到你的 Authtoken,把它复制粘贴到代码中替换掉 "YOUR_NGROK_AUTHTOKEN_HERE"
  • APP_PORT_FOR_NGROK 确保这个端口号和你第二步中应用实际监听的端口号完全一致。
  • ngrok 提示页面: 当你第一次用浏览器打开 ngrok 生成的链接时,它会先显示一个 ngrok 的安全提示页面。别慌,找到并点击页面上的 “Visit Site” (或者类似的文字,比如“Proceed”) 按钮,就能看到你的应用啦!这是 ngrok 免费版的一个特性,无法跳过。
  • 链接有效期: ngrok 免费版生成的链接在你关闭 Colab 笔记本或者 ngrok 进程结束后就会失效。每次重新运行代码块 3,通常会得到一个新的链接。
    遇到问题怎么办?
  1. 仔细阅读错误信息: Colab 和代码的输出通常会告诉你哪里出了问题。
  2. 检查 app_log.txt 这是判断你自己的应用是否正常启动的关键。在新的代码单元格里运行 !cat app_log.txt 可以看到完整的日志。
  3. 确认端口一致: 应用监听的端口、ngrok 连接的端口,这几个数字一定要对上。
  4. Authtoken 是否正确: ngrok 的 Authtoken 复制粘贴时不要出错。
  5. 重启大法: 有时候 Colab 环境出点小问题,可以尝试在菜单栏选择 “代码执行程序” (Runtime) -> “重新启动代码执行程序” (Restart runtime),然后从第一个代码块开始按顺序重新运行所有步骤。

总结
通过以上三个步骤,你就可以把你的 Web UI 项目快速部署到公网上,分享给朋友体验,或者方便自己从不同设备访问了。虽然 ngrok 免费版有一些限制(比如提示页面、链接不固定),但对于快速原型验证和临时分享来说,已经非常强大和方便了!
希望这篇教程对你有帮助!快去试试吧,把你的酷项目秀出来!如果你在操作过程中遇到任何问题,欢迎随时提问。祝你玩得开心!

相关文章
|
网络协议 数据可视化 Ubuntu
可视化web管理的内网穿透神器NPS
可视化web管理的内网穿透神器NPS
可视化web管理的内网穿透神器NPS
|
Linux 数据安全/隐私保护 Docker
搭建内网穿透服务器,带Web面板
有的运营商(比如移动)不给公网IP,但我们又需要公网IP(远程访问家里的NAS,远程控制家里的电脑等)怎么办,自己搭建一台内网穿透服务器。
12018 0
 搭建内网穿透服务器,带Web面板
|
Linux 网络安全 Apache
怎么在树莓派上搭建web网站,并发布到外网可访问?
怎么在树莓派上搭建web网站,并发布到外网可访问?
270 0
|
12月前
|
安全 网络安全 开发者
如何在OpenWRT部署uhttpd搭建服务器实现远程访问本地web站点
如何在OpenWRT部署uhttpd搭建服务器实现远程访问本地web站点
685 0
|
Web App开发 JavaScript 前端开发
使用Nodejs搭建简单的Web网页并实现公网访问
使用Nodejs搭建简单的Web网页并实现公网访问
304 0
使用Nodejs搭建简单的Web网页并实现公网访问
|
12月前
|
SQL 关系型数据库 MySQL
Linux部署Yearning并结合内网穿透工具实现公网访问本地web管理界面
Linux部署Yearning并结合内网穿透工具实现公网访问本地web管理界面
145 0
|
12月前
|
Web App开发 JavaScript 前端开发
使用Nodejs搭建简单的web网页并实现公网访问
使用Nodejs搭建简单的web网页并实现公网访问
|
机器学习/深度学习 网络协议 数据安全/隐私保护
Web网页浏览器远程访问jupyter notebook服务器【内网穿透】
Web网页浏览器远程访问jupyter notebook服务器【内网穿透】
|
存储 Java 应用服务中间件
如何在本地(个人电脑上)安装Tomcat服务器并部署web项目?【2023最新版】
如何在本地(个人电脑上)安装Tomcat服务器并部署web项目?【2023最新版】
|
机器学习/深度学习 网络协议 数据可视化
在外web浏览器远程访问jupyter notebook服务器【内网穿透】
在外web浏览器远程访问jupyter notebook服务器【内网穿透】
267 0