Files
lobehub__lobehub/docs/self-hosting/advanced/s3.mdx
YuTengjing 191f3fe776 📝 docs: fix outdated content across the docs site (#16964)
* 📝 docs: fix outdated content across the docs site

Audited docs/ against the current codebase and fixed stale content that
drifted after major refactors (Clerk/NextAuth → Better Auth, src/server →
apps/server, src/{config,envs,locales} → packages/*, model-bank updates).

- self-hosting/auth: mark removed NextAuth/Clerk pages with deprecation
  warnings; fix microsoft/zitadel alias claims and the Logto callback path
- environment-variables & advanced: correct wrong defaults (S3_SET_ACL,
  AI_IMAGE_DEFAULT_IMAGE_NUM, index/proxy URLs), drop non-existent env vars
  and fictional feature flags, fix OIDC config guidance
- development: update refactored paths, Better Auth, .mjs configs, remove
  the MSW section (msw is not a dependency)
- providers & model examples: replace retired model ids with in-bank ones;
  fix comfyui frontmatter corruption
- usage: rename Moderator→Orchestrator, GTD→Task, correct shortcut keys,
  channel capability tables, Feishu/Lark WebSocket mode
- platform/migration: fix dead links, docker service name, npx/npm → bun

EN and zh-CN pairs updated together.

* 📝 docs: fix Logto callback path and AUTH_SECRET deprecation guidance

- Revert Logto/Sealos callback URLs to /api/auth/callback/logto to match
  the runtime SSO redirectURI override
- Narrow legacy auth Callout: AUTH_SECRET remains required for Better Auth;
  mark NEXT_AUTH_SECRET as deprecated in zh-CN

* 📝 docs: refresh agent skills for locales, env, auth, and agentRun paths

Align OSS agent guidance with post-refactor layout:
- packages/locales/src/default + bun run i18n
- packages/env/src for env schemas (@/envs alias)
- spa-auth shell + src/routes/auth segments
- chat agentRun/transports/hetero instead of aiChat

* 📝 docs: document APP_URL as required for Better Auth base URL

Self-hosted auth uses appEnv.APP_URL as baseURL, not request-header
auto-detection. NEXT_PUBLIC_AUTH_URL remains deprecated.

* 📝 docs: note self-host search provider setup for web search

Built-in lobe-web-browsing needs no client plugin, but self-hosted
servers still require SEARCH_PROVIDERS / SEARXNG_URL (default SearXNG).

* 📝 docs: point feature guide welcome UI at AgentHome

Opening message/questions on the agent chat page live in
src/features/AgentHome, not Onboarding WelcomeMessage.
2026-07-10 17:50:03 +08:00

84 lines
4.1 KiB
Plaintext

---
title: Configuring S3 Storage Service for AI - LobeHub
description: Learn how to configure S3 storage for LobeHub's multimodal AI conversations.
tags:
- S3 Storage
- LobeHub
- AI Conversations
- Cloud Storage
- Image Upload
---
# Configuring S3 Storage Service
LobeHub has supported multimodal AI conversations since [a long time ago](https://x.com/lobehub/status/1724289575672291782), which involves the function of uploading images to AI. In the client-side database solution, image files are stored as binary data directly in the browser's IndexedDB database. However, this solution is not feasible in the server-side database. Storing file-like data directly in Postgres would greatly waste database storage space and slow down computational performance.
The best practice in this area is to use a file storage service (S3) to store image files. S3 is also the storage solution on which the file upload/knowledge base function depends.
<Callout type={'info'}>
In this documentation, S3 refers to a compatible S3 storage solution, which supports the Amazon S3
API for object storage systems. Common examples include Cloudflare R2, Alibaba Cloud OSS, and
self-deployable RustFS, all of which support the S3 compatible API.
</Callout>
## Core Environment Variables
<Steps>
### `S3_ACCESS_KEY_ID` and `S3_SECRET_ACCESS_KEY`
These are the two keys required by all S3 compatible storage services to access the S3 storage service, not detailed here.
### `S3_ENDPOINT`
The request endpoint of the storage bucket. Note that this link should not contain the name of the storage bucket.
<Callout type={'warning'}>
`S3_ENDPOINT` must remove the suffix path, otherwise the uploaded files will not be accessible
</Callout>
For example, for Cloudflare:
```shell
S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
```
### `S3_BUCKET` and `S3_REGION`
The name and region of the storage bucket. `S3_BUCKET` is required to specify the name of the storage bucket. `S3_REGION` is optional and is used to specify the region of the storage bucket. Generally, it does not need to be added, but some service providers may require configuration.
### `S3_SET_ACL`
Whether to set the ACL to `public-read` when uploading files. This option is disabled by default; the ACL is only set when `S3_SET_ACL` is explicitly configured to `1`. If the service provider does not support setting individual ACLs for files (i.e., all files inherit the ACL of the storage bucket), enabling this option may cause request errors.
### `S3_ENABLE_PATH_STYLE`
Whether to enable the `path-style` access mode of S3. This option is disabled by default. If your S3 service provider uses `path-style`, set `S3_ENABLE_PATH_STYLE` to `1` to enable it.
<Callout type={'info'}>
`path-style` and `virtual-host` are different ways to access buckets and objects in S3, with different URL structures and domain name resolutions.
Assuming the domain name of the S3 service provider is s3.example.net, the bucket is mybucket, and the object is config.env, the specific differences are as follows:
- path-style: `s3.example.net/mybucket/config.env`
- virtual-host: `mybucket.s3.example.net/config.env`
</Callout>
<Callout type={'tip'}>
Common S3 cloud service providers often default to the `virtual-host` mode, while self-deployed services like RustFS default to using `path-style`. Therefore, if you use RustFS as the S3 service, you need to set `S3_ENABLE_PATH_STYLE=1`.
</Callout>
</Steps>
## S3 Configuration Guide
Currently, the S3 configuration tutorials included in the documentation are:
<Cards>
<Card href={'/docs/self-hosting/advanced/s3/cloudflare-r2'} title={'Cloudflare R2'} />
<Card href={'/docs/self-hosting/advanced/s3/tencent-cloud'} title={'Tencent Cloud COS'} />
<Card href={'/docs/self-hosting/advanced/s3/rustfs'} title={'RustFS'} />
</Cards>
Click to view the tutorial for the corresponding platform. If the above tutorials do not include the S3 service provider you are using, feel free to submit a Pull Request to collectively improve the guide on S3 object storage.