云边日落 欲把西湖比西子,淡妆浓抹总相宜。 (宋·苏轼·饮湖上初晴后雨)
博主 云边日落
渝ICP备2021002886号-1渝公网安备50022502000591号博主 11月5日 在线自豪地使用 Typecho 建站搭配使用 🌻Sunny 主题当前在线 1 人
歌曲封面 未知作品
  • 歌曲封面“魔女の宅急便”~ルージュの伝言松任谷由実

渝ICP备2021002886号-1

渝公网安备50022502000591号

网站已运行 4 年 152 天 15 小时 11 分

Powered by Typecho & Sunny

2 online · 43 ms

Title

LobeChat服务端数据库版本部署指南

酒笙

·

·

770次阅读
其他
Article

LobeChat本地数据库Clerk版本部署指南

本指南详细介绍如何自定义构建并部署LobeChat服务端数据库版本,同时集成Clerk身份验证服务和Cloudflare R2存储服务。

前期准备

在开始之前,请确保您具备以下条件:

  • Linux服务器(本例使用CentOS)
  • 安装Git、Docker和Docker Compose
  • GitHub账号
  • Docker Hub账号
  • Cloudflare账号(用于R2存储服务)
  • Clerk账号
  • 域名

配置Clerk身份验证服务

步骤1:创建Clerk应用

  1. 前往Clerk官网注册并创建新应用。

步骤2:获取环境变量

2.1 添加公、私钥环境变量

  1. 在Clerk控制面板的"API Keys"页面获取以下密钥:
♾️ text 代码:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
CLERK_SECRET_KEY
在 Clerk 中找到对应的公私钥环境变量
  1. 将这些值添加到环境变量中。

2.2 在Clerk中创建并配置Webhook

  1. 在Clerk控制面板中添加新的Webhook端点。
Clerk 添加 Webhooks 端点
  1. 设置endpoint URL为:https://your-project.com/api/webhooks/clerk
  2. 订阅以下用户事件:

    • user.created
    • user.updated
    • user.deleted
添加 Clerk Webhooks 时,配置 URL 和用户事件

2.3 将Webhook秘钥添加到环境变量

  1. 在Webhook详情页面获取秘钥。
查看 Clerk Webhooks 秘钥
  1. 添加到环境变量:CLERK_WEBHOOK_SECRET

环境变量总览

完成以上步骤后,您已经成功配置了Clerk身份验证服务,并获取了所有必要的环境变量:

♾️ text 代码:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_live_xxxxxxxxxxx CLERK_SECRET_KEY=sk_live_xxxxxxxxxxxxxxxxxxxxxx CLERK_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxxxx

配置Cloudflare R2存储服务

配置并获取S3存储桶

  1. 登录Cloudflare账户,进入R2存储服务界面。
Cloudflare R2 存储界面
  1. 创建新的存储桶。
R2 创建存储桶

获取存储桶相关环境变量

  1. 在R2存储桶的设置中,找到桶配置信息。
查看存储桶的相关信息
  1. 记录以下环境变量:
♾️ shell 代码:
S3_BUCKET=lobechat
S3_ENDPOINT=https://xxxxx.r2.cloudflarestorage.com
S3_PUBLIC_DOMAIN=https://s3-for-lobechat.your-domain.com

获取S3密钥环境变量

  1. 在R2控制面板中创建API令牌。
查看存储桶的访问秘钥创建对应 API token配置 API token 权限
  1. 记录Access Key ID和Secret Access Key。
复制 API token

配置跨域

  1. 在R2存储桶设置中配置CORS规则。
Cloudflare R2 的跨域设置
  1. 允许您的应用域名的请求。
♾️ text 代码:
[
  {
    "AllowedOrigins": ["https://your-project.vercel.app"],
    "AllowedMethods": ["GET", "PUT", "HEAD", "POST", "DELETE"],
    "AllowedHeaders": ["*"]
  }
]
配置允许你的站点域名

环境变量总览

完成上述步骤后,您应该有以下环境变量:

♾️ shell 代码:
# S3 秘钥
S3_ACCESS_KEY_ID=9998d6757e276cf9f1edbd325b7083a6
S3_SECRET_ACCESS_KEY=55af75d8eb6b99f189f6a35f855336ea62cd9c4751a5cf4337c53c1d3f497ac2

# 存储桶的名称
S3_BUCKET=lobechat
# 存储桶的请求端点
S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
# 存储桶对外的访问域名
S3_PUBLIC_DOMAIN=https://s3-dev.your-domain.com

# 桶的区域,如 us-west-1,一般来说不需要添加,但某些服务商则需要配置
# S3_REGION=us-west-1

部署LobeChat服务

步骤1:克隆LobeChat仓库

♾️ bash 代码:
git clone https://github.com/lobehub/lobe-chat.git
cd lobe-chat

步骤2:修改Dockerfile

  1. 重命名Dockerfile.databaseDockerfile
♾️ shell 代码:
rm -rf Dockerfile
mv Dockerfile.database Dockerfile
vim Dockerfile
  1. 添加必要的clear环境变量。
♾️ shell 代码:
# Sentry
ENV NEXT_PUBLIC_SENTRY_DSN="" \
    SENTRY_ORG="" \
    SENTRY_PROJECT=""
#添加在这个位置即可

# clear
ENV NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_Z3Jvd24tdHVuYS03MC5jbGVyay5hY2NvdW50cy5kZXYk
ENV CLERK_WEBHOOK_SECRET=whsec_eF8VfCRwiGvz8mGD2roYQ8GgxYzVnqFs

步骤3:构建自定义Docker镜像

♾️ bash 代码:
docker build -t your-dockerhub-username/lobe-chat-database:custom .

步骤4:准备Docker Compose文件

创建docker-compose.yml文件,包含PostgreSQL和LobeChat服务配置。

这里我们可以新建一个文件夹,后续可以方便的迁移整个服务。

cd / && mkdir lobe-chat-datebase && cd lobe-chat-datebase && vim docker-compose.yml

♾️ yaml 代码:
version: '3.3'

services:
  postgres:
    image: pgvector/pgvector:pg16
    container_name: lobe-postgres
    environment:
      POSTGRES_PASSWORD: mysecretpassword
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    networks:
      - lobe-network
    ports:
      - "5432:5432"

  lobe-chat:
    image: your-dockerhub-username/lobe-chat-database:custom  #你构建的镜像名称
    container_name: lobe-chat
    environment:
      - APP_URL=https://your-app-url.com
      - DATABASE_URL=postgres://postgres:mysecretpassword@postgres:5432/postgres
      - NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_live_xxxxxxxxxxx
      - CLERK_SECRET_KEY=sk_live_xxxxxxxxxxxxxxxxxxxxxx
      - CLERK_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxxxx
      - KEY_VAULTS_SECRET=xxxx
      - S3_SECRET_ACCESS_KEY=xxxxx
      - S3_ACCESS_KEY_ID=xxxxx
      - S3_PUBLIC_DOMAIN=xxxxx
      - S3_ENDPOINT=xxxxxxx
      - S3_BUCKET=xxxxxxx
      - DATABASE_DRIVER=node
      - NEXT_PUBLIC_SERVICE_MODE=xxxxxxx
    networks:
      - lobe-network
    ports:
      - "3212:3210"
    depends_on:
      - postgres

networks:
  lobe-network:
    driver: bridge

步骤5:启动服务

♾️ bash 代码:
docker-compose up -d

注意事项

  • 确保服务器防火墙设置正确。
  • 使用安全的方式管理敏感信息。
  • 定期备份数据库。
  • 代码修改后需要重新构建镜像。

结论

通过本指南,您已经成功部署了LobeChat服务端数据库版本,并集成了Clerk身份验证和Cloudflare R2存储服务。这种部署方式虽然需要更多手动配置,但提供了更大的灵活性和控制力。

如果在部署过程中遇到任何问题,欢迎查阅LobeChat的官方文档或在社区中寻求帮助。祝您部署顺利!

现在已有 0 条评论,7 人点赞
酒笙
Author:酒笙
作者
LobeChat服务端数据库版本部署指南
当前文章累计共 5834 字,阅读大概需要 2 分钟。
阿里云——内容分发CDN
2021年7月15日 · 0评论
Kubernetes可视化图像安装教程
2022年8月20日 · 0评论
python错误处理
2022年8月19日 · 0评论
Comment:共0条
发表
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 不再显示
博主