【实用Docker推荐】搭建LobeChat—开源语言模型UI框架

感谢UniApi对本博客的的大力赞助。 创作不易,如果您觉得有帮助,请 支持LIncol29! 为了让我能够继续创作更好的内容,你也可以选择订阅博客的 VIP ,包年VIP仅需10元/年,所有VIP内容免费观看

前言

谈一谈为什么我推荐LobeChat?

1、个性化助手和助手市场,灵活定制或分享AI助手

2、thub的start数量非常多,更新很活跃。

3、有较多的插件可支持使用

4、支持服务端数据库部署,可以多端同步,并且可以多人使用。

https://github.com/lobehub/lobe-chat在Github非常受欢迎,Star在64.5K。有本地版部署以及服务

image.png

PixPin_2025-08-15_08-40-25

如果想部署 nextchat,可以看【实用Docker推荐】搭建NextChat—好用的AI聊天服务

准备工作

  1. 拥有Open API key。如果没有官网的,可以使用代理商:UniAPI(目前 lincol29正在使用,注册即送一美金的使用资格。小伙伴可以先试试,如果觉得性价比好,可以通过lincol29推广链接进行注册。注册链接
  2. 域名(可选,如使用服务端数据库部署最好使用域名)
  3. 服务器或者NAS
  4. docker

OpenAI-API代理 – 第三方API供应商 UniAPI

  • UNIAPI 为您提供全面的 AI 模型接口代理服务,以支持您的软件和应用程序,助您轻松应用领先的 AI 技术。
  • 提供反向代理的 API 接口,无需境外网络环境即可便捷访问 OpenAIClaudeMidjourney等AI模型,在自然语言处理、图像识别、智能推荐和自动问答等不同场景中发挥作用。
  • 高度自由的 API 管理,可根据您需求轻松创建 API key 并管理使用金额,仅需修改接口地址为https://api.UNIAPI.io(国外)/https://api.UNIAPI.one(国内)即可快速使用。
  • 多种渠道来源*,官方/Azure/逆向等渠道,不同渠道享受不同折扣,可随时在令牌页面切换,详情请查看价格页面

UniAPI(目前 lincol29正在使用,注册即送一美金的使用资格。小伙伴可以先试试,如果觉得性价比好,可以通过lincol29推广链接进行注册。注册链接

UNIAPI拥有颜值非常顶的仪表盘

image-20240916145450433

UNIAPI的模型价格表

image-20240916145334762

可以通过日志查看模型使用情况,能了解每次对话产生的token以及费用。

image-20240916145751310

如果你是小白,不想动手。可直接使用UNIAPI 已经安装好的三个服务进行使用。(新手推荐)

NextChatLobeChatMidjourneyProxy

直接点击playground ,选择服务商。

image-20240916145910409

部署本地版LobeChat

Docker 版本需要在 20 及其以上,否则会提示找不到镜像。

⚠️ 注意:docker 版本在大多数时间都会落后最新的版本 1 到 2 天,所以部署后会持续出现“存在更新”的提示,属于正常现象。

如果你已经拥有第三方API代理,请直接跳转docker部署

如果不会使用docker-compose,请查看[Docker-Compose安装、使用、更新](https://www.lincol29.cn/setdocker-compose)

防火墙放行端口

ufw allow 3210/tcp

创建工作目录

work=/docker/lobechat && mkdir -p $work && cd $work

创建docker-compose.yml文件

vim docker-compose.yml

将以下代码复制进 yml 中

version: '3.8'

services:
  lobe-chat:
    image: lobehub/lobe-chat
    container_name: lobe-chat
    restart: always
    ports:
      - '3210:3210'
    environment:
      OPENAI_API_KEY: sk-mUjlPor95D8ADA1DA8WD1AD3 #API秘钥
      # OPENAI_PROXY_URL: https://api.uniapi.me
      ACCESS_CODE: lincol29  #进入lobechat的密码

上线容器即可,使用ip+端口访问 或者使用nginx反向代理,使用域名访问。

docker-compose up -d

部署服务端版LobeChat

准备五个域名

首先,我们要准备5个域名并在DNS提供商的后台设置好DNS解析:

  • lobe.lincol29.com:用于访问LobeHub Server
  • lobes3ui.lincol29.com; lobes3api.lincol29.com:分别用于访问MinIO S3(存储管理)的WebUI和API调用
  • lobeauthapi.lincol29.com; lobeauthui.lincol29.com:分别用于访Logto(用户管理)的WebUI和API调用

目前 身份认证 logto问题很多,已放弃。改用casdoor

使用Yml,复制粘贴一下内容,按需修改

name: lobe-chat-database
services:
  network-service:
    image: alpine
    container_name: lobe-network
    ports:
      - '${MINIO_PORT}:${MINIO_PORT}' # MinIO API
      - '9001:9001' # MinIO Console
      - '${CASDOOR_PORT}:${CASDOOR_PORT}' # Casdoor
      - '${LOBE_PORT}:3210' # LobeChat
    command: tail -f /dev/null
    networks:
      - lobe-network

  postgresql:
    image: pgvector/pgvector:pg16
    container_name: lobe-postgres
    ports:
      - '5432:5432'
    volumes:
      - './data:/var/lib/postgresql/data'
    environment:
      - 'POSTGRES_DB=${LOBE_DB_NAME}'
      - 'POSTGRES_PASSWORD=${POSTGRES_PASSWORD}'
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U postgres']
      interval: 5s
      timeout: 5s
      retries: 5
    restart: always
    networks:
      - lobe-network

  minio:
    image: minio/minio
    container_name: lobe-minio
    network_mode: 'service:network-service'
    volumes:
      - './s3_data:/etc/minio/data'
    environment:
      - 'MINIO_ROOT_USER=${MINIO_ROOT_USER}'
      - 'MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}'
      # - 'MINIO_API_CORS_ALLOW_ORIGIN=http://localhost:${LOBE_PORT}'
      - 'MINIO_API_CORS_ALLOW_ORIGIN=https://lobes3ui.lincol29.com' # 修改为自己的minio ui域名
    restart: always
    command: >
      server /etc/minio/data --address ":${MINIO_PORT}" --console-address ":9001"


  casdoor:
    image: casbin/casdoor
    container_name: lobe-casdoor
    entrypoint: /bin/sh -c './server --createDatabase=true'
    network_mode: 'service:network-service'
    depends_on:
      postgresql:
        condition: service_healthy
    environment:
      RUNNING_IN_DOCKER: 'true'
      driverName: 'postgres'
      dataSourceName: 'user=postgres password=${POSTGRES_PASSWORD} host=postgresql port=5432 sslmode=disable dbname=casdoor'
      # origin: 'http://localhost:${CASDOOR_PORT}'
      origin: 'https://lobeauthui.lincol29.com' # 修改为自己的casdoor ui域名
      runmode: 'dev'
    volumes:
      - ./init_data.json:/init_data.json

  lobe:
    image: lobehub/lobe-chat-database
    container_name: lobe-chat-database
    network_mode: 'service:network-service'
    depends_on:
      postgresql:
        condition: service_healthy
      network-service:
        condition: service_started
      minio:
        condition: service_started
      casdoor:
        condition: service_started

    environment:
      # - 'APP_URL=http://localhost:3210'
      - 'APP_URL=https://lobe.lincol29.com' # 修改为自己的lobe server域名

      - 'NEXT_AUTH_SSO_PROVIDERS=casdoor'
      - 'KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ='
      - 'NEXT_AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg'
      # - 'AUTH_URL=http://localhost:${LOBE_PORT}/api/auth'
      - 'AUTH_URL=https://lobe.lincol29.com/api/auth' # 修改为自己的lobe server域名,后面的路径不要改

      # - 'AUTH_CASDOOR_ISSUER=http://localhost:${CASDOOR_PORT}'
      - 'AUTH_CASDOOR_ISSUER=https://lobeauthui.lincol29.com' # 修改为自己的casdoor ui域名

      - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
      # - 'S3_ENDPOINT=http://localhost:${MINIO_PORT}'
      - 'S3_ENDPOINT=https://lobes3ui.lincol29.com' # 修改为自己的minio ui域名

      - 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
      # - 'S3_PUBLIC_DOMAIN=http://localhost:${MINIO_PORT}'
      - 'S3_PUBLIC_DOMAIN=https://lobes3ui.lincol29.com'  # 修改为自己的minio ui域名

      - 'S3_ENABLE_PATH_STYLE=1'
      - 'LLM_VISION_IMAGE_USE_BASE64=1'
    env_file:
      - .env
    restart: always

volumes:
  data:
    driver: local
  s3_data:
    driver: local

networks:
  lobe-network:
    driver: bridge

在yml文件同目录下新建 .env文件

# Proxy, if you need it
# HTTP_PROXY=http://localhost:7890
# HTTPS_PROXY=http://localhost:7890

# Other environment variables, as needed. You can refer to the environment variables configuration for the client version, making sure not to have ACCESS_CODE.
# OPENAI_API_KEY=sk-xxxx
# OPENAI_PROXY_URL=https://api.openai.com/v1
# OPENAI_MODEL_LIST=...

# ===========================
# ====== Preset config ======
# ===========================
# if no special requirements, no need to change
LOBE_PORT=3210
CASDOOR_PORT=8000
MINIO_PORT=9000

# Postgres related, which are the necessary environment variables for DB
LOBE_DB_NAME=lobechat
POSTGRES_PASSWORD=abcde

# Casdoor secret
AUTH_CASDOOR_ID=1d4a186835d99dad8ad1ad6ad
AUTH_CASDOOR_SECRET=de3defabddf5ff257a03daiwiadnadi

# MinIO S3 configuration
MINIO_ROOT_USER=lincol
MINIO_ROOT_PASSWORD=99851768

# Configure the bucket information of MinIO
MINIO_LOBE_BUCKET=lobe
S3_ACCESS_KEY_ID=dB6Uq9CYdawdad
S3_SECRET_ACCESS_KEY=aPBW8CVULkh8wdadwadawdada85

登录Casdoor进行身份认证

首先访问 WebUI 来进行配置:

  • 如果你按照前文配置了反向代理,打开 https://lobeauthui.lincol29.com
  • 否则,请在进行端口映射后,打开 http://localhost:8000

账户:admin

密码:123

img

登入后执行如下操作

  1. 用户管理 -> 组织 中,添加一个新的组织。名称与显示名称为 Lobe Users。其余保持默认即可。
  2. 身份认证 -> 应用 中,添加一个新的应用。
  3. 名称与显示名称为 LobeChat
  4. 组织为 Lobe Users
  5. 重定向 URLS 中添加一行 为 https://lobe.example.com/api/auth/callback/casdoor
  6. 关闭除密码外的登录方式 。
  7. 将客户端 ID 和客户端密钥分别填入 .env中的 AUTH_CASDOOR_IDAUTH_CASDOOR_SECRET 中。
  8. (可选) 仿照built-in应用的配置,来设计登录和注册的页面外观。
  9. 保存并退出。

需要自己在组织 Lobe Users 下添加账户,以便于使用lobechat的时候登录鉴权。

img

LobeChat使用

登录LobeChat

当第一次登录输入问题时,会让你输入密码。

输入在 docker-compose.yml 文件中ACCESS_CODE 的值

img

更新模型

点击右上角设置——语言模型——依据四个步骤分别填写 api key 以及第三方 api 代理。

lincol 这里推荐使用 UniAPI,网站更新迭代很快,并且在线客服响应非常及时

img

使用 nginx 进行反代,绑定域名,使用域名访问

如果你想节省token,请调节历史消息数。

PixPin_2025-08-15_09-31-32

参考资料

Lobechat:lobechat 的官网

https://hub.docker.com/r/lobehub/lobe-chat:lobe-chat 的 docker 镜像地址:

https://lobehub.com/zh/docs/self-hosting/server-database:lobe-chat 的官方文档:

UNIAPI : lincol29 目前在用的第三方API供应商。

【实用Docker推荐】搭建NextChat—好用的AI聊天服务: 使用Nextchat

网站地图 – Lincol29 : 在这个网站地图中,你可以找到关于C#、常用生产力工具、面试面经、Docker、WordPress、RSS、等各类技术主题的教程和分享,以及对本站内容快速导航。

创作不易,如果您觉得有帮助,请支持LIncol29!
如有需要,请至网站地图学习本博客的教程
博客订阅:通过RSS或关注公众号[Lincol的编程世界] | 广告招租与合作请留言
本文链接:https://www.lincol29.cn/deploy-lobechat
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0协议转载请注明文章地址及作者哦~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇