deer-flow icon indicating copy to clipboard operation
deer-flow copied to clipboard

内网部署

Open Cherry2410 opened this issue 7 months ago • 29 comments

1.现有一台Linux服务器和一台安装Win10系统的PC机。Linux服务器没有图形界面,但可以连接外网,并已安装Docker。PC机可以通过内网远程连接linux服务器,但无法连接外网。目前通过Docker,已在Linux服务器上配置好了运行环境,可以正常运行uv run main.py。运行./bootstrap.sh -d可正常启动,并通过HTTP网络连接到PC端打开界面。但是在界面端提问问题时,没有收到任何回应,请问有可能是什么问题? 2.回答问题时是否会重新安装额外的依赖包?

Cherry2410 avatar May 13 '25 10:05 Cherry2410

你这个不对吧。./bootstrap.sh -d 不是启动的项目自己的后端和前端么,你的后端现在应该是linux上的地址。你试过修改 web 目录下的.env中的 NEXT_PUBLIC_API_URL 为你linux后端地址了,再启动前端项目使用吗?

Abeautifulsnow avatar May 13 '25 13:05 Abeautifulsnow

你这个不对吧。./bootstrap.sh -d 不是启动的项目自己的后端和前端么,你的后端现在应该是linux上的地址。你试过修改 web 目录下的.env中的 NEXT_PUBLIC_API_URL 为你linux后端地址了,再启动前端项目使用吗?

已修改web目录下.env中的 NEXT_PUBLIC_API_URL 为linux后端地址了,前端仍然出现不明确的错误提示,请问下还有可能修改哪些配置吗? Image Image

Cherry2410 avatar May 14 '25 01:05 Cherry2410

我和你遇到了一样的报错,按照文档在linux源码部署了,页面同样出现An error occurred while generating the response. Please try again.报错,求解

xia02 avatar May 14 '25 03:05 xia02

你这个不对吧。./bootstrap.sh -d 不是启动的项目自己的后端和前端么,你的后端现在应该是linux上的地址。你试过修改 web 目录下的.env中的 NEXT_PUBLIC_API_URL 为你linux后端地址了,再启动前端项目使用吗?

已修改web目录下.env中的 NEXT_PUBLIC_API_URL 为linux后端地址了,前端仍然出现不明确的错误提示,请问下还有可能修改哪些配置吗? Image Image

建议你打开前端控制台看看网络请求是否正确。以及linux终端看看服务端是否有报错。我本地自测linux部署后端服务,本机windows跑的纯前端,配置NEXT_PUBLIC_API_URL正确,是可以互相通信的。

Abeautifulsnow avatar May 14 '25 06:05 Abeautifulsnow

I encountered the same error (#124).

jcl2023 avatar May 14 '25 06:05 jcl2023

请问这种问题怎么回事呀

Image

xia02 avatar May 14 '25 07:05 xia02

你这个不对吧。./bootstrap.sh -d 不是启动的项目自己的后端和前端么,你的后端现在应该是linux上的地址。你试过修改 web 目录下的.env中的 NEXT_PUBLIC_API_URL 为你linux后端地址了,再启动前端项目使用吗?

已修改web目录下.env中的 NEXT_PUBLIC_API_URL 为linux后端地址了,前端仍然出现不明确的错误提示,请问下还有可能修改哪些配置吗? Image Image

建议你打开前端控制台看看网络请求是否正确。以及linux终端看看服务端是否有报错。我本地自测linux部署后端服务,本机windows跑的纯前端,配置NEXT_PUBLIC_API_URL正确,是可以互相通信的。

NEXT_PUBLIC_API_URL配置为linux服务器的ip吗?NEXT_PUBLIC_API_URL=http://服务器ip:8000/api

xia02 avatar May 14 '25 12:05 xia02

可以发一下后端打印的报错信息吗

laundry2 avatar May 14 '25 17:05 laundry2

同样遇到,明确修改NEXT_PUBLIC_API_URL为后端地址后,依然报错

beat4ocean2 avatar May 15 '25 00:05 beat4ocean2

你这个不对吧。./bootstrap.sh -d 不是启动的项目自己的后端和前端么,你的后端现在应该是linux上的地址。你试过修改 web 目录下的.env中的 NEXT_PUBLIC_API_URL 为你linux后端地址了,再启动前端项目使用吗?

已修改web目录下.env中的 NEXT_PUBLIC_API_URL 为linux后端地址了,前端仍然出现不明确的错误提示,请问下还有可能修改哪些配置吗? Image Image

建议你打开前端控制台看看网络请求是否正确。以及linux终端看看服务端是否有报错。我本地自测linux部署后端服务,本机windows跑的纯前端,配置NEXT_PUBLIC_API_URL正确,是可以互相通信的。

NEXT_PUBLIC_API_URL配置为linux服务器的ip吗?NEXT_PUBLIC_API_URL=http://服务器ip:8000/api

是的啊。就是把原本默认的localhost改为服务端ip地址。同时,你服务端如果docker部署要把8000端口expose出来,如果还是报错,那就一同看一下前端的f12和后端的服务日志,看看是不是网络不通还是别的什么错误

Abeautifulsnow avatar May 15 '25 00:05 Abeautifulsnow

可以发一下后端打印的报错信息吗 顺利输出几行后,就会报错 Image 这是报错信息: | await self.app(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in call | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app | raise exc | File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app | await app(scope, receive, sender) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 714, in call | await self.middleware_stack(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 734, in app | await route.handle(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle | await self.app(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 76, in app | await wrap_app_handling_exceptions(app, request)(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app | raise exc | File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app | await app(scope, receive, sender) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 74, in app | await response(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 262, in call | with collapse_excgroups(): | ^^^^^^^^^^^^^^^^^^^^ | File "/root/miniconda3/lib/python3.12/contextlib.py", line 158, in exit | self.gen.throw(value) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups | raise exc | File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 266, in wrap | await func() | File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 246, in stream_response | async for chunk in self.body_iterator: | File "/root/deer-flow/src/server/app.py", line 153, in _astream_workflow_generator | elif message_chunk.tool_call_chunks: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/root/miniconda3/lib/python3.12/site-packages/pydantic/main.py", line 989, in getattr | raise AttributeError(f'{type(self).name!r} object has no attribute {item!r}') | AttributeError: 'AIMessage' object has no attribute 'tool_call_chunks' +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/root/miniconda3/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/root/miniconda3/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/root/miniconda3/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in call await super().call(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/applications.py", line 112, in call await self.middleware_stack(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in call raise exc File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in call await self.app(scope, receive, _send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/cors.py", line 93, in call await self.simple_response(scope, receive, send, request_headers=headers) File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/cors.py", line 144, in simple_response await self.app(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 714, in call await self.middleware_stack(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 734, in app await route.handle(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 74, in app await response(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 262, in call with collapse_excgroups(): ^^^^^^^^^^^^^^^^^^^^ File "/root/miniconda3/lib/python3.12/contextlib.py", line 158, in exit self.gen.throw(value) File "/root/miniconda3/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups raise exc File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 266, in wrap await func() File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 246, in stream_response async for chunk in self.body_iterator: File "/root/deer-flow/src/server/app.py", line 153, in _astream_workflow_generator elif message_chunk.tool_call_chunks: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/root/miniconda3/lib/python3.12/site-packages/pydantic/main.py", line 989, in getattr raise AttributeError(f'{type(self).name!r} object has no attribute {item!r}') AttributeError: 'AIMessage' object has no attribute 'tool_call_chunks'

xia02 avatar May 15 '25 02:05 xia02

@xia02 最新的代码中已修复,更新代码后执行 uv sync

foreleven avatar May 15 '25 02:05 foreleven

可以发一下后端打印的报错信息吗 顺利输出几行后,就会报错 Image 这是报错信息: | await self.app(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in call | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app | raise exc | File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app | await app(scope, receive, sender) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 714, in call | await self.middleware_stack(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 734, in app | await route.handle(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle | await self.app(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 76, in app | await wrap_app_handling_exceptions(app, request)(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app | raise exc | File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app | await app(scope, receive, sender) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 74, in app | await response(scope, receive, send) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 262, in call | with collapse_excgroups(): | ^^^^^^^^^^^^^^^^^^^^ | File "/root/miniconda3/lib/python3.12/contextlib.py", line 158, in exit | self.gen.throw(value) | File "/root/miniconda3/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups | raise exc | File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 266, in wrap | await func() | File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 246, in stream_response | async for chunk in self.body_iterator: | File "/root/deer-flow/src/server/app.py", line 153, in _astream_workflow_generator | elif message_chunk.tool_call_chunks: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/root/miniconda3/lib/python3.12/site-packages/pydantic/main.py", line 989, in getattr | raise AttributeError(f'{type(self).name!r} object has no attribute {item!r}') | AttributeError: 'AIMessage' object has no attribute 'tool_call_chunks' +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/root/miniconda3/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/root/miniconda3/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/root/miniconda3/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in call await super().call(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/applications.py", line 112, in call await self.middleware_stack(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in call raise exc File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in call await self.app(scope, receive, _send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/cors.py", line 93, in call await self.simple_response(scope, receive, send, request_headers=headers) File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/cors.py", line 144, in simple_response await self.app(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 714, in call await self.middleware_stack(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 734, in app await route.handle(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/root/miniconda3/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/root/miniconda3/lib/python3.12/site-packages/starlette/routing.py", line 74, in app await response(scope, receive, send) File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 262, in call with collapse_excgroups(): ^^^^^^^^^^^^^^^^^^^^ File "/root/miniconda3/lib/python3.12/contextlib.py", line 158, in exit self.gen.throw(value) File "/root/miniconda3/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups raise exc File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 266, in wrap await func() File "/root/miniconda3/lib/python3.12/site-packages/starlette/responses.py", line 246, in stream_response async for chunk in self.body_iterator: File "/root/deer-flow/src/server/app.py", line 153, in _astream_workflow_generator elif message_chunk.tool_call_chunks: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/root/miniconda3/lib/python3.12/site-packages/pydantic/main.py", line 989, in getattr raise AttributeError(f'{type(self).name!r} object has no attribute {item!r}') AttributeError: 'AIMessage' object has no attribute 'tool_call_chunks'

这个已知问题我们已经修复了,你可以拉一下最新的代码再试试

laundry2 avatar May 15 '25 02:05 laundry2

拉完最新的代码后,需要重新uv sync一下,安装一下依赖

laundry2 avatar May 15 '25 02:05 laundry2

一样问题,更新之后就可以了。

Image

ihainan avatar May 15 '25 03:05 ihainan

@xia02 最新的代码中已修复,更新代码后执行 uv sync

收到,谢谢,我试试

xia02 avatar May 15 '25 04:05 xia02

拉完最新的代码后,需要重新uv sync一下,安装一下依赖

收到,谢谢,我试试

xia02 avatar May 15 '25 04:05 xia02

一样问题,更新之后就可以了。

Image

拉完最新的代码吗

xia02 avatar May 15 '25 04:05 xia02

拉完最新的代码后,需要重新uv sync一下,安装一下依赖

您好,我拉了最新的代码,依然控制台报错,我是linux服务器内网部署,并且NEXT_PUBLIC_API_URL=http://localhost:8000/api中的localhost已修改为服务器ip,配置的deepseek-chat大模型,tavlily搜索,不知道为何依然在生成过程中报错,求解?

Image

xia02 avatar May 15 '25 06:05 xia02

一样问题,更新之后就可以了。

Image

你用 tavlily吗,TAVILY_API_KEY=tvly-xxx这个不需要修改吗

xia02 avatar May 15 '25 06:05 xia02

你用 tavlily吗,TAVILY_API_KEY=tvly-xxx这个不需要修改吗 需要修改为正确的tavlily api key,可以去tavlily官网获取

laundry2 avatar May 16 '25 02:05 laundry2

异常从(failed)net::ERR_CONNECTION_REFUSED 变成 (failed)net::ERR_CONNECTION_RESET了

sail0755 avatar May 16 '25 03:05 sail0755

拉完最新的代码后,需要重新uv sync一下,安装一下依赖

您好,我拉了最新的代码,依然控制台报错,我是linux服务器内网部署,并且NEXT_PUBLIC_API_URL=http://localhost:8000/api中的localhost已修改为服务器ip,配置的deepseek-chat大模型,tavlily搜索,不知道为何依然在生成过程中报错,求解?

![Image](https://github.com/user-attachments/assets/2a46b2c4-9d68-44a8-bea8-9c1cd6c2a70

你这个不对吧。./bootstrap.sh -d 不是启动的项目自己的后端和前端么,你的后端现在应该是linux上的地址。你试过修改 web 目录下的.env中的 NEXT_PUBLIC_API_URL 为你linux后端地址了,再启动前端项目使用吗?

已修改web目录下.env中的 NEXT_PUBLIC_API_URL 为linux后端地址了,前端仍然出现不明确的错误提示,请问下还有可能修改哪些配置吗? Image Image

建议你打开前端控制台看看网络请求是否正确。以及linux终端看看服务端是否有报错。我本地自测linux部署后端服务,本机windows跑的纯前端,配置NEXT_PUBLIC_API_URL正确,是可以互相通信的。

NEXT_PUBLIC_API_URL配置为linux服务器的ip吗?NEXT_PUBLIC_API_URL=http://服务器ip:8000/api

是的啊。就是把原本默认的localhost改为服务端ip地址。同时,你服务端如果docker部署要把8000端口expose出来,如果还是报错,那就一同看一下前端的f12和后端的服务日志,看看是不是网络不通还是别的什么错误

我更新了代码,运行了uv sync,前端还是不成功,不过我的linux终端不能科学上网,在起容器的时候用了--net=host

Cherry2410 avatar May 16 '25 11:05 Cherry2410

@sail0755 @Cherry2410 两位可以单独运行下 uv run server.py, 确保后端正常工作。 访问过程中出现任何报错, 请提供详细的后端日志,便于排查。

leohxj avatar May 16 '25 23:05 leohxj

内网部署,后端没有显示任何错误。前端是这样现实的,出现的实际与上方一致。

Image

stanely158831384 avatar Jun 20 '25 08:06 stanely158831384

内网部署,后端没有显示任何错误。前端是这样现实的,出现的实际与上方一致。

Image

相同的错误,请问是什么原因导致的报错呢?

pd162 avatar Jun 20 '25 08:06 pd162

我也出现相同问题 NEXT_PUBLIC_API_URL配置为linux服务器的ip 还是不行

cckamiya avatar Jun 30 '25 02:06 cckamiya

大家用的是什么版本? 最近前端端配置代码没有做什么修改。

WillemJiang avatar Jul 13 '25 06:07 WillemJiang

一样的问题,NEXT_PUBLIC_API_URL配置为linux服务器的ip 还是不行

dtMndas avatar Nov 06 '25 01:11 dtMndas