参考链接:lobechat部署
结合以上官官文档和下文,注意:仅供参考
mkdir lobe-chat-db && cd lobe-chat-db
bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN

以上是官方最简单的部署方式,准备内容:
1、一台国外/国内vps
服务器预装wget(建议最新版)、docker、docker-compose(建议最新版)
对外开放3120、8000、9000端口
2、1个以上的模型key
关于知识库:
知识库向量化:
关于模型调用:国内可考虑zhipu embedding-3模型,国外默认openai
基础提问AI厂商注册链接:
zhipu(传送门): https://www.bigmodel.cn/invite?icode=joNcAuzH9S%2BeTG%2FPwpSTqv2gad6AKpjZefIo3dVEQyA%3D
硅基流动(传送门)::https://cloud.siliconflow.cn/i/iRYn4bxO
3、1个域名
域名可在阿里云或其他厂商上购买,后续做域名解析。
域名 反代端口 是否必选
lobe.example.com 3210 必选
auth.example.com 8000 必选
minio.example.com 9000 必选
minio-ui.example.com 9001

如果是考虑使用国外vps,基本准备多一个域名就可以。注意:如果使用外的debain系统基本一次过就能安装完毕。后续就是配置key
如果是使用国内vps或centos7要注意wget和docker-compose的版本,建议使用最新版本。避免出错,具体可通过ai询问或者www.google.com查看具体升级、安装教程。

部署架构:
lobechat + casdoor + minio-s3

lobechat部署其最大亮点是知识库,支持后续对文件的向量化并对文件的数据分析,目前支持的格式可参考下方的链接:
lobechat部署详细教程[最新版]-私人知识库-亲测已踩坑
以上功能主要采用了向量化模型 目前向量化默认是使用openai,若是国内机器可更改为zhipu的
lobechat部署详细教程[最新版]-私人知识库-亲测已踩坑

部署具体流程:
1、创建docker-compose.yml、.env 文件。可通过以下的代码

bash <(curl -fsSL https://lobe.li/setup.sh) -l zh_CN

获取,若无法获取,我这边贴出具体的代码:
docker-compose配置中增加S3_SET_ACL=0,主要解决在lobechat上无权限访问文件,让他以私有权限进行访问。也增加了
ZHIPU_API_KEY、SILICONCLOUD_API_KEY、DEFAULT_FILES_CONFIG。对应.env的配置
核心点在于.env的配置,默认的配置是默认openai进行向量化。若考虑使用默认的openai,可在这里拿免费的key。如果是使用国内服务器,无法出国可使用zhipu、硅基流动的作为默认向量化服务,目前是考虑使用zhipu的embedding-3进行向量化,会产生一定的费用。可通过上面我的zhipu链接自行注册获取免费的使用额度。lobechat部署详细教程[最新版]-私人知识库-亲测已踩坑

docker-compose.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:pg17
    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_API_CORS_ALLOW_ORIGIN=*'
    env_file:
      - .env
    restart: always
    entrypoint: >
      /bin/sh -c "
        minio server /etc/minio/data --address ':${MINIO_PORT}' --console-address ':9001' &
        MINIO_PID=\$!
        while ! curl -s http://localhost:${MINIO_PORT}/minio/health/live; do
          echo 'Waiting for MinIO to start...'
          sleep 1
        done
        sleep 5
        mc alias set myminio http://localhost:${MINIO_PORT} ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD}
        echo 'Creating bucket ${MINIO_LOBE_BUCKET}'
        mc mb myminio/${MINIO_LOBE_BUCKET}
        wait \$MINIO_PID
      "

  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'
      runmode: 'dev'
    volumes:
      - ./init_data.json:/init_data.json
    env_file:
      - .env

  lobe:
    image: lobehub/lobe-chat-database
    container_name: lobe-chat
    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:
      - 'NEXT_AUTH_SSO_PROVIDERS=casdoor'
      - 'KEY_VAULTS_SECRET=Kix2wc4CX51EUONd/ZPAd36BqM4wzJgKjPtz2sGztqQ='
      - 'NEXT_AUTH_SECRET=BL2U8e9oSre5RfoT7hgNX2kaPE923dt6'
      - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
      - 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
      - 'S3_ENABLE_PATH_STYLE=1'
      - 'S3_ACCESS_KEY=${MINIO_ROOT_USER}'
      - 'S3_ACCESS_KEY_ID=${MINIO_ROOT_USER}'
      - 'S3_SECRET_ACCESS_KEY=${MINIO_ROOT_PASSWORD}'
      - 'LLM_VISION_IMAGE_USE_BASE64=1'
      - 'S3_SET_ACL=0'
      - 'ZHIPU_API_KEY=${ZHIPU_API_KEY}'
      - 'SILICONCLOUD_API_KEY=${SILICONCLOUD_API_KEY}'
      - 'DEFAULT_FILES_CONFIG=${DEFAULT_FILES_CONFIG}'
    env_file:
      - .env
    restart: always
    entrypoint: >
      /bin/sh -c "
        /bin/node /app/startServer.js &
        LOBE_PID=\$!
        sleep 3
        if [ $(wget --timeout=5 --spider --server-response ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -c 'HTTP/1.1 200 OK') -eq 0 ]; then
          echo '⚠️Warining: Unable to fetch OIDC configuration from Casdoor'
          echo 'Request URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
          echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
        else
          if ! wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep 'issuer' | grep ${AUTH_CASDOOR_ISSUER}; then
            printf '❌Error: The Auth issuer is conflict, Issuer in OIDC configuration is: %s' \$(wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -E 'issuer.*' | awk -F '\"' '{print \$4}')
            echo ' , but the issuer in .env file is: ${AUTH_CASDOOR_ISSUER} '
            echo 'Request URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
            echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
          fi
        fi
        if [ $(wget --timeout=5 --spider --server-response ${S3_ENDPOINT}/minio/health/live 2>&1 | grep -c 'HTTP/1.1 200 OK') -eq 0 ]; then
          echo '⚠️Warining: Unable to fetch MinIO health status'
          echo 'Request URL: ${S3_ENDPOINT}/minio/health/live'
          echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
        fi
        wait \$LOBE_PID
      "

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

networks:
  lobe-network:
    driver: bridge

.env:

# Proxy,如果你需要的话(比如你使用 GitHub 作为鉴权服务提供商)
# HTTP_PROXY=https://localhost:7890
# HTTPS_PROXY=https://localhost:7890


# 其他环境变量,视需求而定,可以参照客户端版本的环境变量配置,注意不要有 ACCESS_CODE
# OPENAI_API_KEY=sk-xxxx
# OPENAI_PROXY_URL=https://api.openai.com/v1
# OPENAI_MODEL_LIST=...


# ===================
# === Zhipu AI 配置 ===
# ===================
ZHIPU_API_KEY=你的zhipu-key  # 请替换为真实密钥(需要申请)
DEFAULT_FILES_CONFIG=embedding_model=zhipu/embedding-3  # 推荐使用最新 embedding-3 模型



# ===================
# === siliconcloud AI 配置 ===
# ===================
#SILICONCLOUD_API_KEY=你的siliconcloud-key # 请替换为真实密钥(需要申请)
#DEFAULT_FILES_CONFIG=embedding_model=siliconcloud/BAAI/bge-m3  # 推荐使用最新 bge-m3 模型


# ===================
# ===== 预设配置 =====
# ===================
# 如没有特殊需要不用更改
LOBE_PORT=3210
CASDOOR_PORT=8000
MINIO_PORT=9000
APP_URL=https://lobe.google.com
AUTH_URL=https://lobe.google.com/api/auth

# Postgres 相关,也即 DB 必须的环境变量
LOBE_DB_NAME=lobechat
POSTGRES_PASSWORD=uWOPugjTsixf8dxC

AUTH_CASDOOR_ISSUER=https://lauth.google.com
# Casdoor secret
AUTH_CASDOOR_ID=a387a4892ee19b1a2249
AUTH_CASDOOR_SECRET=d3a9f1463fd36484eb4cfc39b4c32589

# MinIO S3 配置
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=eb812acd

# 在下方配置 minio 中添加的桶
S3_PUBLIC_DOMAIN=https://lminio.google.com
S3_ENDPOINT=https://lminio.google.com
MINIO_LOBE_BUCKET=lobe

# 为 casdoor 配置
origin=https://lauth.google.com

各位DEFAULT_FILES_CONFIG的配置只能默认开启一个,请各位根据个人需求进行选择,不设置请同时屏蔽docker-compose的配置,不配置默认使用openai进行文件向量化。

最后欢迎各位早点能给自己搭建私人的知识库。如果有什么问题可以跟帖,能帮忙解决的必定回复哈。