docs/self-hosting/platform/docker.zh-CN.mdx
以下是在 Linux 服务器上部署 LobeHub 的流程:
<Steps> ### 创建 Postgres 数据库实例请按照你自己的诉求创建一个 Postgres 数据库实例,例如:
docker network create pg
docker run --name my-postgres --network pg -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d paradedb/paradedb:latest-pg17
上述指令会创建一个名为 my-postgres,并且网络为 pg 的 PG 实例,其中 paradedb/paradedb:latest-pg17 是一个 Postgres 17 的镜像,且默认安装了 pgvector 和 pg_search 插件。
lobehub.env 文件用于存放环境变量:点击下方按钮生成所需密钥:
<GenerateSecret envName="KEY_VAULTS_SECRET" /> <GenerateSecret envName="AUTH_SECRET" />点击下方按钮一键生成 JWKS_KEY(用于签名和验证 JWT):
# 网站域名
APP_URL=https://your-prod-domain.com
# DB 必须的环境变量
# 用于加密敏感信息的密钥,可以使用 openssl rand -base64 32 生成
KEY_VAULTS_SECRET='jgwsK28dspyVQoIf8/M3IIHl1h6LYYceSYNXeLpy6uk='
# Postgres 数据库连接字符串
# 格式:postgres://username:password@host:port/dbname,如果你的 pg 实例为 Docker 容器,请使用容器名
DATABASE_URL=postgres://postgres:mysecretpassword@my-postgres:5432/postgres
# 身份验证(Better Auth)
# 会话加密密钥(使用以下命令生成:openssl rand -base64 32)
AUTH_SECRET=jgwsK28dspyVQoIf8/M3IIHl1h6LYYceSYNXeLpy6uk=
# JWKS 密钥,用于签名和验证 JWT
JWKS_KEY='{"keys":[...]}'
# S3 相关
S3_ACCESS_KEY_ID=xxxxxxxxxx
S3_SECRET_ACCESS_KEY=xxxxxxxxxx
# 用于 S3 API 访问的域名
S3_ENDPOINT=https://xxxxxxxxxx.r2.cloudflarestorage.com
S3_BUCKET=LobeHub
# S3_REGION=ap-chengdu # 如果需要指定地域
docker run -it -d -p 3210:3210 --network pg --env-file lobehub.env --name lobehub lobehub/lobehub
你可以使用下述指令检查日志:
docker logs -f lobehub
如果你在容器中看到了以下日志,则说明已经启动成功:
[Database] Start to migration...
✅ database migration pass.
-------------------------------------
▲ Next.js 14.x.x
- Local: http://localhost:3210
- Network: http://0.0.0.0:3210
✓ Starting...
✓ Ready in 95ms
LobeHub 也支持直接在本地的 Mac/Windows 本地使用。
在此我们已假设你的本地有一个 5432 端口可用,账号为 postgres ,密码是 mysecretpassword 的 pg 实例,它在 localhost:5432 可用。
那么你需要执行的脚本指令为:
$ docker run -it -d --name lobehub -p 3210:3210 \
-e DATABASE_URL=postgres://postgres:[email protected]:5432/postgres \
-e KEY_VAULTS_SECRET=jgwsK28dspyVQoIf8/M3IIHl1h6LYYceSYNXeLpy6uk= \
-e AUTH_SECRET=jgwsK28dspyVQoIf8/M3IIHl1h6LYYceSYNXeLpy6uk= \
-e JWKS_KEY='{"keys":[...]}' \
-e APP_URL=http://localhost:3210 \
-e S3_ACCESS_KEY_ID=xxxxxxxxxx \
-e S3_SECRET_ACCESS_KEY=xxxxxxxxxx \
-e S3_ENDPOINT=https://xxxxxxxxxx.r2.cloudflarestorage.com \
-e S3_BUCKET=LobeHub \
lobehub/lobehub