前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux本地部署开源项目OpenHands基于AI的软件开发代理平台及公网访问

Linux本地部署开源项目OpenHands基于AI的软件开发代理平台及公网访问

原创
作者头像
kwan的解忧杂货铺
发布于 2024-11-25 16:38:44
发布于 2024-11-25 16:38:44
6700
举报

在开始今天的分享之前,我想先推荐一篇非常精彩的文章。

文章就是《渗透测试文件包含漏洞原理与验证(1)——文件包含概述》🚀🌟🚀🌟🚀🌟

链接是:点击这里

这篇文章详细解释了文件包含漏洞的原理,以及如何在实际的 Web 应用程序中发现和验证这类漏洞。它提到,文件包含漏洞通常发生在 PHP 等脚本语言中,当开发者在引入文件时没有对文件名进行充分的校验,就可能导致意外的文件泄露或恶意代码注入。

文章还介绍了几种 PHP 中的文件包含函数,包括include()include_once()require()require_once(),以及它们在找不到文件时的不同行为。此外,文章还探讨了利用文件包含漏洞的条件,比如函数通过动态变量引入文件,以及用户能够控制这个动态变量。

通过一些实际的示例,文章展示了如何通过修改文件扩展名来绕过某些安全限制,以及如何通过修改 URL 参数来实现文件包含攻击。

这篇文章不仅提供了丰富的技术细节,还强调了合法合规的重要性。它提醒我们,所有的渗透测试活动都应该在获得明确授权的情况下进行,并且要遵守相关法律法规。

如果你对 Web 安全感兴趣,或者想要提高你的 Web 应用程序的安全性,我强烈推荐你阅读这篇文章。它不仅能够提供实用的技术知识,还能帮助你更好地理解安全领域的法律和道德规范。让我们一起在合法合规的前提下,探索和提升 Web 安全吧!


前言

本篇文章介绍如何在 Linux 本地部署开源项目 OpenHands 基于人工智能软件开发代理平台,并结合 cpolar 实现公网访问。

OpenHands(此前称为 OpenDevin)是一个基于人工智能的软件开发代理平台,旨在通过 AI 技术增强软件开发流程。该平台支持开发者执行各种任务,包括代码编写、命令行操作以及网页浏览等,其功能几乎与人类开发者相当。

OpenHands 采用 MIT 许可证发布,并强调社区驱动的开发模式。项目主要使用 Python 编程语言构建,同时运行依赖于 Docker 环境。因此,熟悉容器化技术对于贡献或使用该项目尤为重要。

OpenHands 代理可以执行人类开发人员可以执行的任何操作:修改代码、运行命令、浏览网页、调用 API,甚至从 StackOverflow 复制代码片段。

接下来本地部署 OpenHands。

openHands.png
openHands.png

1. Linux 部署 OpenHands

本篇文章演示环境:Ubuntu22.04

运行 OpenHands 最简单的方法是使用 Docker 进行部署,如果没有安装 Docker,可以查看这篇教程进行安装:Docker 安装——Linux、Windows、MacOS - cpolar 极点云官网

输入以下命令来运行以下命令拉取 OpenHands 镜像:

代码语言:shell
AI代码解释
复制
sudo docker pull docker.all-hands.dev/all-hands-ai/runtime:0.14-nikolaik
image.png
image.png

使用以下命令启动 OpenHands 容器:

代码语言:shell
AI代码解释
复制
sudo docker run -it --pull=always \
    -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.14-nikolaik \
    -e LOG_ALL_EVENTS=true \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -p 3000:3000 \
    --add-host host.docker.internal:host-gateway \
    --name openhands-app \
    docker.all-hands.dev/all-hands-ai/openhands:0.14
image.png
image.png

打开浏览器输入 localhost:3000 启动并可以访问。

2. OpenHands 功能介绍

首次运行时,会弹出设置窗口。

image.png
image.png

用户需要选择 LLM 提供商、LLM 模型并输入 API 密钥。

可通过点击 UI 中的齿轮图标随时调整设置。如需使用自定义模型,可在高级选项中手动输入模型名称和 Base URL。

设置好后,点击 Save 保存

image.png
image.png

接下来验证下 OpenHands,输入下提示词请求,例如:请编写一个 bash 脚本 hello.sh,打印 "hello world!"

image.png
image.png

回到 OpenHands,可以看到左侧显示提示词,右侧给出了对应回答

fba8e26ccd1ba7927d88df52e9b6ef8.png
fba8e26ccd1ba7927d88df52e9b6ef8.png

接下来我想让他使用 HTML 创建一个简单的计算器,点击生成,可以看到右侧出现了相应文件的代码

image.png
image.png

在输入框中让它运行这个项目,可以看到在对话框中输出了链接

image.png
image.png

验证一下这个简单的计算器生成是否正确,这里我使用 VsCode 打开并运行代码。

image.png
image.png

一个简易的计算器就生成好了,如果不满意就可以回到 OpenHands,继续输入要求生成新的代码。

image.png
image.png

虽然在本地环境中部署 OpenHands 已经能够显著提升你的开发效率,但如果你希望从任何地方都能随时随地访问这个强大的工具,就需要解决内网穿透的问题。这时,Cpolar 就成为了你的得力助手。

Cpolar 是一款功能强大且易于使用的内网穿透工具,它能够在几秒钟内将你的本地服务暴露到公网上。无论你是在办公室、家里还是在旅途中,Cpolar 都能确保你能够轻松访问 OpenHands,而无需复杂的网络配置或昂贵的服务器托管费用。

接下来教大家如何安装 Cpolar 并且将 OpenHands 实现公网使用。

3. 公网使用 OpenHands

3.1 内网穿透工具安装

下面是安装 cpolar 步骤:

Cpolar 官网地址: https://www.cpolar.com

使用一键脚本安装命令

代码语言:shell
AI代码解释
复制
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看 cpolar 服务状态:(如图所示即为正常启动)

代码语言:shell
AI代码解释
复制
sudo systemctl status cpolar

Cpolar 安装和成功启动服务后,在浏览器上输入 ubuntu 主机 IP 加 9200 端口即:【http://localhost:9200】访问 Cpolar 管理界面,使用 Cpolar 官网注册的账号登录,登录后即可看到 cpolar web 配置界面,接下来在 web 界面配置即可:

3.2 创建远程连接公网地址

登录 cpolar web UI 管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了: openhands 注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:3000
  • 域名类型:随机域名
  • 地区:选择 China Top
  • image.png
    image.png

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址,接下来就可以在其他电脑(异地)上,使用任意一个地址在浏览器中访问即可。

image.png
image.png

如下图所示,成功实现使用公网地址异地远程访问本地部署的 OpenHands,跟上面一样,配置好模型即可使用。

image.png
image.png

使用上面的 cpolar https 公网地址,在任意设备的浏览器进行访问,即可成功看到 OpenHands 界面,这样一个利用公网地址可以进行远程访问的隧道就创建好了,隧道使用了 cpolar 的公网域名,无需自己购买云服务器,可节省大量资金。使用 cpolar 创建隧道即可发布到公网进行远程访问,新域名登录,可能需要重新登陆!

4. 固定 OpenHands 公网地址

由于以上使用 cpolar 所创建的隧道使用的是随机公网地址,24 小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。

登录 cpolar 官网,点击左侧的预留,选择保留二级子域名,地区选择 china vip,然后设置一个二级子域名名称,填写备注信息,点击保留。

image.png
image.png

保留成功后复制保留的二级子域名地址:

image.png
image.png

登录 cpolar web UI 管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image.png
image.png

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China VIP

点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

image.png
image.png

最后,我们使用固定的公网地址访问 OpenHands 界面可以看到访问成功,一个永久不会变化的远程访问方式即设置好了。

image.png
image.png

通过本文的引导,你已经成功在本地环境中部署了 OpenHands,并学会了如何使用 Cpolar 内网穿透工具实现其公网访问。无论你在何处,都能够随时随地利用这个强大的开发助手提升你的工作效率。

OpenHands 不仅是一个工具,更是一种创新的开发方式。它能够帮助你自动化日常任务、提高代码质量,并让你有更多时间专注于核心业务逻辑。而 Cpolar 则确保了这些功能在任何网络环境下都能稳定运行。

希望本文的内容对你有所帮助,如果你有任何疑问或建议,欢迎在评论区留言交流。让我们共同探索更多的可能性,开创更加高效和智能的开发未来!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档