草稿 LobeChat知识库版本部署

LobeChat知识库版本

先占坑,新版本修复了minio上传问题,但是后面版本又改出问题了,目前知识库还有些问题,再等等 是我的问题,已经完美支持。

docker compose文件

services:

  postgresql:
    image: ccr.ccs.tencentyun.com/k7scn/pgvector:pg16
    container_name: postgresql
    # ports:
    #   - '5432:5432'
    volumes:
      - 'postgresql_data:/var/lib/postgresql/data'
    environment:
      - 'POSTGRES_DB=lobe'
      - 'POSTGRES_PASSWORD=lobepassw0rd'

  minio:
    image: ccr.ccs.tencentyun.com/k7scn/minio:2024
    container_name: minio
    ports:
      - '9000:9000'
      - '9001:9001'
    volumes:
      - 'minio_data:/bitnami/minio/data'
    environment:
      - 'MINIO_ROOT_USER=lobe'
      - 'MINIO_ROOT_PASSWORD=lobepassw0rd'
      - 'MINIO_DEFAULT_BUCKETS=lobe'

  lobe:
    image: ccr.ccs.tencentyun.com/k7scn/lobe-chat-database
    container_name: lobe
    ports:
      - '3210:3210'
    depends_on:
      - postgresql
      - minio
    environment:
      - 'KEY_VAULTS_SECRET=Px/trSNqJMIQ0SbOIDhIpDiNv2eUdNFf8ZUoh76g9+c=' # openssl rand -base64 32
      - 'DATABASE_URL=postgres://postgres:lobepassw0rd@postgresql:5432/lobe'
      - NEXT_AUTH_SECRET=q5JdZ9lgcOZ79vuJSYAFyOIudCX1CDlMzpnKcGN21 # openssl rand -base64 32
      - ACCESS_CODE=hhhhhh # 后续版本可能去掉
      - NEXT_AUTH_SSO_PROVIDERS=github
      - GITHUB_CLIENT_ID=xxxx # 你的github app client id
      - GITHUB_CLIENT_SECRET=xxxxx # 你的github app client secret
      - NEXTAUTH_URL=http://100.90.80.25:3210/api/auth # 不用域名访问,一定要配置,具体改成你的ip
      - S3_ACCESS_KEY_ID=lobe
      - S3_SECRET_ACCESS_KEY=lobepassw0rd
      - S3_ENDPOINT=http://100.90.80.25:9000
      - S3_BUCKET=lobe
      - S3_PUBLIC_DOMAIN=http://你的公网ip:19000/lobe # 新版本可能不需要
      - APP_URL=http://100.90.80.25:3210 

volumes:
  postgresql_data:
    driver: local
  minio_data:
    driver: local

新版本新增了知识库的支持,需要调整数据库开启向量的扩展。比较麻烦。由于我的数据不太重要,重建是最简单。

docker compose -f lobe.yaml down -v
docker compose -f lobe.yaml pull
docker compose -f lobe.yaml up -d
# sleep 等待一会儿, 正常不需要,但是我测试的时候遇到了几次
docker compose -f lobe.yaml restart lobe

目前有个比较坑的地方就是自建minio,这个配置S3_PUBLIC_DOMAINNEXT_PUBLIC_S3_DOMAIN, 需要配置minio能公网访问的地址。

minio 公网访问

这里我简单操作一下了,将minio转发到香港的某台机器(1.1.1.1)上,如使用realm

[log]
level = "info"

[network]
no_tcp = false
use_udp = true
tcp_timeout = 300
udp_timeout = 30
send_proxy = false
send_proxy_version = 2
accept_proxy = false
accept_proxy_timeout = 5

# cos
[[endpoints]]
listen = "0.0.0.0:19000"
remote = "192.168.94.17:9000"

长传图片

知识库分块

上传文件

使用知识库

Sponsor

Like this article? $1 reward

Comments

caoih ·v1 加利福尼亚 Reply

@ysicing 试了一下本地可以。就是聊天窗口中上传还是不行。是跨域问题吗

caoih ·v1 加利福尼亚 Reply

lobe的环境变量,这个是minio的用户名密码吗?不是minio生成的accessid和key吗 - S3_ACCESS_KEY_ID=lobe - S3_SECRET_ACCESS_KEY=lobepassw0rd 还有。。我好像一直都上传不成功。lobe的log是 Error in tRPC handler (edge) on path: upload.createS3PreSignedUrl [TRPCError: UNAUTHORIZED] { code: 'UNAUTHORIZED', name: 'TRPCError' } 好奇怪啊。

ysicing 👨‍💻 ·v1 Reply

@caoih 用户名这个权限比较高。可以单独开个access,这个需要你授权相关bucket读写权限,你可以先本地用mc测试一下能否读写

caoih ·v1 加利福尼亚 Reply

@ysicing 看了一下控制台。METHOD_NOT_SUPPORTED这个错误。搞不懂了。。本地都能上传。就是lobe那边文件上传不了。。 ``` [{"error":{"json":{"message":"Unsupported GET-request to mutation procedure at path \"upload.createS3PreSignedUrl\"","code":-32005,"data":{"code":"METHOD_NOT_SUPPORTED","httpStatus":405,"path":"upload.createS3PreSignedUrl"}}}}] ```

ysicing 👨‍💻 ·v1 Reply

@caoih 你先试试minio的用户名密码试试看🤔