创作不易,如果你觉得有用,欢迎请橙子喝杯咖啡☕☕☕

1.前言

之前我们已经搭建过微信机器人版的chatgpt,无apikey的chatgpt(Nas搭建Pandora ChatGPT 无需魔法 免费丝滑使用chatgpt),虽然pandora也是网页版的随时随地访问,但是想用4.0还是依赖于你的账户去开通,今天部署的Lobe ChatGPT是基于api key的,用来满足更加丰富的需求,如果只是日常的低频使用,那么pandora是完全足够的

2. 项目展示

2.1 可视化模型支持


LobeChat 现在支持 OpenAI 最新的 gpt-4-vision 模型,具有视觉识别功能, 一种可以感知视觉效果的多模态智能。用户可以轻松地将图像上传或拖放到对话框中, 智能体将能够识别图像的内容,并在此基础上进行智能对话, 打造更智能、更多样化的聊天场景。

此功能开辟了新的交互方法,使交流超越了文本,并包含了丰富的视觉元素。 无论是在日常使用中共享图像,还是在特定行业内解释图像,座席都能提供出色的对话体验。

2.2 TTS 和 STT 语音


LobeChat 支持文本转语音 (TTS) 和语音转文本 (STT) 技术,使我们的应用程序能够将文本消息转换为清晰的语音输出, 允许用户与我们的对话代理进行交互,就好像他们正在与真人交谈一样。用户可以从多种声音中进行选择,以便与座席配对。

此外,TTS 为那些喜欢听觉学习或希望在忙碌时接收信息的人提供了极好的解决方案。 在LobeChat中,我们精心挑选了一系列高质量的语音选项(OpenAI Audio,Microsoft Edge Speech),以满足来自不同地区和文化背景的用户的需求。 用户可以根据自己的个人喜好或特定场景选择语音,从而获得个性化的通信体验。

2.3 函数调用插件系统


LobeChat 的插件生态是其核心功能的重要延伸,大大增强了 ChatGPT 的实用性和灵活性。 通过利用插件,ChatGPT 可以进行实时信息检索和处理, 例如自动获取最新的新闻头条,为用户提供即时和相关的信息。 而且,这些插件不仅限于新闻聚合,还可以扩展到其他实用功能,例如快速文档检索、 电子商务平台数据接入,以及各种第三方服务。

2.4 Progress Web 应用程序


我们深知在当今的多设备环境中为用户提供无缝体验的重要性。 因此,我们采用了渐进式 Web 应用程序 (PWA) 技术, 一种现代 Web 技术,可将 Web 应用程序提升到接近本机应用程序的体验。

通过 PWA,LobeChat 可以在桌面和移动设备上提供高度优化的用户体验,同时保持其轻量级和高性能特性。 在视觉和感觉方面,我们还精心设计了界面,以确保它与原生应用程序没有区别, 提供流畅的动画、响应式布局,并适应不同的设备屏幕分辨率。

2.5 移动设备适配


我们针对移动设备进行了一系列优化设计,以增强用户的移动体验。目前,我们正在迭代移动用户体验,以实现更流畅、更直观的交互。如果您有任何建议或想法,我们欢迎您通过 GitHub 问题或拉取请求提供反馈。

3. 相关地址

官方GitHub地址:https://github.com/lobehub/lobe-chat
官方docker镜像地址:lobehub/lobe-chat

4. 搭建环境

服务器:橙子这边用的Racknerd的高性价比服务器,美国洛杉矶的DC02机房的机子

  • 系统:Ubuntu 20.4 (也可以用Debian)

  • 安装好 Docker、Docker-compose(相关脚本

  • 【非必需但建议】域名一枚,并做好解析到服务器上(域名如何选择和购买

  • 【非必需】提前安装好宝塔面板,海外版本 aapanel,并安装好 Nginx环境

  • 【非必需本教程选用】安装好 Nginx Proxy Manager(相关教程

服务器建议:1C1G,能搭建docker即可

NAS搭建:群晖或者绿联NAS,支持Docker

5. 搭建视频

5.1 YouTube
视频地址:后续补充…

5.2 哔哩哔哩
哔哩哔哩:后续补充…

6. 搭建方式

NAS搭建直接跳到6.4

6.1 安装 Docker 与 Nginx Proxy Manager

可以直接参考这篇内容:

https://vlightsky.com/nginx-proxy-manager/

6.2 创建安装目录

创建一下安装的目录:

sudo -i

mkdir -p /root/data/docker_data/lobe

cd /root/data/docker_data/lobe

vim docker-compose.yml

英文输入法下,按 i

version: "3"
services:
    lobe-chat:
        ports:
            - 3210:3210
        environment:
            - OPENAI_API_KEY=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 # 你的API Key
            - ACCESS_CODE=password # 设置一个密码
        image: lobehub/lobe-chat

简单说一下:
这里的api key是官方的,默认走的代理地址是https://api.openai.com/v1 
这里推荐一个比官方价格更低的平台chatanywhere,据其他购买使用的小伙伴反馈,¥30额度的中度使用可以使用1年,同时他们提供免费的key,当然速度和体验比不上付费的
如果用chatanywhere的api key需要在environment中添加一个变量,指定代理地址
“- OPENAI_PROXY_URL=https://api.chatanywhere.tech”

切换成英文输入法,修改好之后,按一下 esc,然后 :wq 保存退出

然后执行以下命令来启动容器

docker-compose up -d

6.3 打开服务器防火墙(非必需)并访问网页

打开防火墙的端口 3120

国内的,腾讯云阿里云在实例里面的安全组,添加放行端口即可(部分服务商没有自带的面板防火墙,就不用这步操作了):

查看端口是否被占用(以 8080 为例),输入:

lsof -i:8080  #查看 8080 端口是否被占用,如果被占用,重新自定义一个端口

如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~

如果出现:

-bash: lsof: command not found

运行:

apt install lsof  #安装 lsof

如果端口没有被占用(被占用了就修改一下端口,比如改成 8381,注意 docker 命令行里和防火墙都要改)

理论上我们就可以输入 http://ip:3120 访问了。

但是这边我们必须先搞一下反向代理!

做反向代理前,你需要一个域名!

如果想要长期使用,还是建议买 com 后缀的域名,域名选购和购买参考这篇:
https://vlightsky.com/choose_domain_name/

6.4 nas搭建过程

拉取的镜像是一样的,网络选择桥接,不用创建存储映射,环境变量重要的还是那3个,用官方的key,代理地址就不用配置了,说明可以看下6.2,其余的按照图中去配置就行






nas搭建完成就已经可以通过你的nasip:3120访问了,如果不需要域名访问直接跳转到 8.使用教程,当然完美的模式是如果你想外网使用的话需要外网穿透(用NPS搭建内网穿透 比frp更好用),然后拥有一个自己的域名(摆脱IP 如何挑选购买域名),为了隐藏我们的端口还需要nginx做反向代理,nas也是可以安装Nginx Proxy Manager的(Nginx Proxy Manager安装搭建 反向代理神器),这样你在外面外网环境也能和朋友输入预先设置的密码就能和你一起畅玩属于你们的chatgpt服务了

7. 反向代理

7.1 利用 Nginx Proxy Manager

在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)

之后,登陆 Nginx Proxy Manager(不会的看这个:安装 Nginx Proxy Manager(相关教程))添加反向代理,按下面的操作
2023-11-28_202453

2023-11-28_202524

注意:

Nginx Proxy Manager(以下简称 NPM)会用到 80、443 端口,所以本机不能占用(比如原来就有 Nginx,如果你装了宝塔并且安装了nginx是不行的)

IP 填写:

如果 Nginx Proxy Manager 和 Lobe 在同一台服务器上,可以在终端输入:

ip addr show docker0

查看对应的 Docker 容器内部 IP。

否则直接填服务器 IP 就行。

7.2 利用宝塔面板

发现还是有不少小伙伴习惯用宝塔面板,这边也贴一个宝塔面板的反代配置:

直接新建一个站点,不要数据库,不要 php,纯静态即可。

然后打开下面的配置,修改 Nginx 的配置。

2023-11-28_202054

代码如下:

location / {
      proxy_pass http://127.0.0.1:8090/;       # 注意改成你实际使用的端口
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }

此方法对 90% 的反向代理都能生效,然后就可以用域名来安装访问了。

8. 使用教程

输入上面的反向代理域名就能访问Lobe了,进入后我们点击立即开始

如果是自己用的话,因为我们在docker的环境变量中已经配置了api key,所以我们只需要在设置里输入密码就可以使用了,同样,你的朋友输入密码也能够使用,如果想用自己的api key也可以在设置中进行配置,代理地址是需要输入的,如果是官方的就输入灰色的提示文字,模型支持自己切换,发现也内置了很多的角色应对不同的场景需求,如果要识别图片需要将模型切换为gpt-4-vision-preview




都设置完成了就能愉快的使用啦

8.1 更新 Lobe Chat

cd /root/data/docker_data/lobe

docker-compose pull

docker-compose up -d    # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune  # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

提示:

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] 

输入 y

利用 Docker 搭建的应用,更新非常容易~

8.2 卸载 Lobe Chat

同样进入安装页面,先停止所有容器。

cd /root/data/docker_data/lobe

docker-compose down

cd ..

rm -rf /root/data/docker_data/lobe  # 完全删除

可以卸载得很干净。

9. 常见问题及注意点

使用自己的key和代理,记得点一下检查,如果报错看下提示信息,有时额度用完也是不通过的。

10. 结尾

祝大家搭建成功用的开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。

同时,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目!

创作不易,如果你觉得有用,欢迎请橙子喝杯咖啡☕☕☕

参考资料
https://github.com/lobehub/lobe-chat