From f4d6e383ce87f392927c0734059fd28531aa32bc Mon Sep 17 00:00:00 2001 From: LIlGG <1103069291@qq.com> Date: Fri, 26 Sep 2025 18:49:06 +0800 Subject: [PATCH] docs: add upage usage instructions document --- .env.example | 9 - .../actions/docker-buildx-push/action.yaml | 2 +- app/lib/modules/llm/providers/lmstudio.ts | 2 +- app/lib/modules/llm/providers/ollama.ts | 4 - .../api.system.$action/git-info.server.ts | 2 +- docker-compose-dev.yaml | 2 - docker-compose-prod.yaml | 2 - docs/content/configuration.md | 320 ++++++++++++++---- docs/content/deployment/docker-compose.md | 6 +- docs/content/deployment/logto.md | 5 + docs/content/deployment/source.md | 6 + docs/sidebars.js | 15 +- 12 files changed, 273 insertions(+), 102 deletions(-) diff --git a/.env.example b/.env.example index 29cad77..749c1e0 100644 --- a/.env.example +++ b/.env.example @@ -55,7 +55,6 @@ TOGETHER_API_KEY= #Get your Hyperbolics API Key at https://app.hyperbolic.xyz/settings #baseURL="https://api.hyperbolic.xyz/v1/chat/completions" HYPERBOLIC_API_KEY= -HYPERBOLIC_API_BASE_URL= # Get your Mistral API Key by following these instructions - # https://console.mistral.ai/api-keys/ @@ -99,14 +98,6 @@ USAGE_LOG_FILE=false # Include this environment variable if you want more logging for debugging locally LOG_LEVEL=debug -# Example Context Values for qwen2.5-coder:32b -# -# DEFAULT_NUM_CTX=32768 # Consumes 36GB of VRAM -# DEFAULT_NUM_CTX=24576 # Consumes 32GB of VRAM -# DEFAULT_NUM_CTX=12288 # Consumes 26GB of VRAM -# DEFAULT_NUM_CTX=6144 # Consumes 24GB of VRAM -DEFAULT_NUM_CTX= - # Get your Serper API Key https://serper.dev/ SERPER_API_KEY= diff --git a/.github/actions/docker-buildx-push/action.yaml b/.github/actions/docker-buildx-push/action.yaml index 681afa7..f18731a 100644 --- a/.github/actions/docker-buildx-push/action.yaml +++ b/.github/actions/docker-buildx-push/action.yaml @@ -46,7 +46,7 @@ runs: type=semver,pattern={{ version }} type=sha,enabled=${{ github.event_name == 'push' }} flavor: | - latest=false + latest=${{ github.event_name == 'release' }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx diff --git a/app/lib/modules/llm/providers/lmstudio.ts b/app/lib/modules/llm/providers/lmstudio.ts index cecc10f..312ecbb 100644 --- a/app/lib/modules/llm/providers/lmstudio.ts +++ b/app/lib/modules/llm/providers/lmstudio.ts @@ -13,7 +13,7 @@ export default class LMStudioProvider extends BaseProvider { config = { baseUrlKey: 'LMSTUDIO_API_BASE_URL', - baseUrl: 'http://localhost:1234/', + baseUrl: 'http://127.0.0.1:1234/', }; staticModels: ModelInfo[] = []; diff --git a/app/lib/modules/llm/providers/ollama.ts b/app/lib/modules/llm/providers/ollama.ts index 63888c8..4c33ec7 100644 --- a/app/lib/modules/llm/providers/ollama.ts +++ b/app/lib/modules/llm/providers/ollama.ts @@ -39,10 +39,6 @@ export default class OllamaProvider extends BaseProvider { staticModels: ModelInfo[] = []; - getDefaultNumCtx(): number { - return process.env.DEFAULT_NUM_CTX ? parseInt(process.env.DEFAULT_NUM_CTX, 10) : 32768; - } - async getDynamicModels(apiKeys?: Record, settings?: IProviderSetting): Promise { let { baseUrl } = this.getProviderBaseUrlAndKey({ apiKeys, diff --git a/app/routes/api.system.$action/git-info.server.ts b/app/routes/api.system.$action/git-info.server.ts index f4a70be..6a13fef 100644 --- a/app/routes/api.system.$action/git-info.server.ts +++ b/app/routes/api.system.$action/git-info.server.ts @@ -86,7 +86,7 @@ export const gitInfoLoader: LoaderFunction = async ({ if (action === 'getUser' || action === 'getRepos' || action === 'getOrgs' || action === 'getActivity') { // Use server-side token instead of client-side token - const serverGithubToken = process.env.GITHUB_ACCESS_TOKEN || context.env?.GITHUB_ACCESS_TOKEN; + const serverGithubToken = context.env?.GITHUB_ACCESS_TOKEN; const cookieToken = request.headers .get('Cookie') ?.split(';') diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml index dc55e18..b67e78c 100644 --- a/docker-compose-dev.yaml +++ b/docker-compose-dev.yaml @@ -21,7 +21,6 @@ services: - OPENAI_LIKE_API_KEY=${OPENAI_LIKE_API_KEY} - TOGETHER_API_KEY=${TOGETHER_API_KEY} - HYPERBOLIC_API_KEY=${HYPERBOLIC_API_KEY} - - HYPERBOLIC_API_BASE_URL=${HYPERBOLIC_API_BASE_URL} - MISTRAL_API_KEY=${MISTRAL_API_KEY} - COHERE_API_KEY=${COHERE_API_KEY} - LMSTUDIO_API_BASE_URL=${LMSTUDIO_API_BASE_URL} @@ -29,7 +28,6 @@ services: - PERPLEXITY_API_KEY=${PERPLEXITY_API_KEY} - AWS_BEDROCK_CONFIG=${AWS_BEDROCK_CONFIG} - LOG_LEVEL=${LOG_LEVEL:-debug} - - DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX:-32768} - SERPER_API_KEY=${SERPER_API_KEY} - WEATHER_API_KEY=${WEATHER_API_KEY} - LLM_DEFAULT_PROVIDER=${LLM_DEFAULT_PROVIDER} diff --git a/docker-compose-prod.yaml b/docker-compose-prod.yaml index 3bcef2c..58a42a5 100644 --- a/docker-compose-prod.yaml +++ b/docker-compose-prod.yaml @@ -21,7 +21,6 @@ services: - OPENAI_LIKE_API_KEY=${OPENAI_LIKE_API_KEY} - TOGETHER_API_KEY=${TOGETHER_API_KEY} - HYPERBOLIC_API_KEY=${HYPERBOLIC_API_KEY} - - HYPERBOLIC_API_BASE_URL=${HYPERBOLIC_API_BASE_URL} - MISTRAL_API_KEY=${MISTRAL_API_KEY} - COHERE_API_KEY=${COHERE_API_KEY} - LMSTUDIO_API_BASE_URL=${LMSTUDIO_API_BASE_URL} @@ -29,7 +28,6 @@ services: - PERPLEXITY_API_KEY=${PERPLEXITY_API_KEY} - AWS_BEDROCK_CONFIG=${AWS_BEDROCK_CONFIG} - LOG_LEVEL=${LOG_LEVEL:-debug} - - DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX:-32768} - SERPER_API_KEY=${SERPER_API_KEY} - WEATHER_API_KEY=${WEATHER_API_KEY} - LLM_DEFAULT_PROVIDER=${LLM_DEFAULT_PROVIDER} diff --git a/docs/content/configuration.md b/docs/content/configuration.md index 67abec1..9d65111 100644 --- a/docs/content/configuration.md +++ b/docs/content/configuration.md @@ -27,6 +27,8 @@ UPage 使用环境变量进行配置。您可以通过以下方式设置环境 ## AI 提供商配置 +UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用页面生成功能。 + ### AI 基础配置 | 环境变量 | 描述 | 默认值 | 必填 | @@ -36,6 +38,52 @@ UPage 使用环境变量进行配置。您可以通过以下方式设置环境 | `LLM_MINOR_MODEL` | 辅助页面生成所使用的模型 | - | 是 | | `LLM_ENABLED_PROVIDERS` | 启用的 LLM 提供商列表(逗号分隔) | 所有支持的提供商 | 否 | +### Amazon Bedrock + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Amazon Bedrock 提供商名称 | AmazonBedrock | 是 | +| `AWS_BEDROCK_CONFIG` | Amazon Bedrock 配置 | - | 是(如果使用 Amazon Bedrock) | + +:::info +前往 [Amazon Bedrock](https://console.aws.amazon.com/iam/home) 中获取配置。 +`AWS_BEDROCK_CONFIG` 应为 JSON 格式,例如: +```json +{ + // Bedrock 可用的 AWS 区域 + "region": "us-east-1", + // 你的 AWS 访问密钥 ID + "accessKeyId": "your-access-key-id", + // 你的 AWS 访问密钥令牌 + "secretAccessKey": "your-secret-access-key", + // AWS 会话令牌(可选),如果使用 IAM 角色或临时凭据,则为临时会话令牌 + "sessionToken": "your-session-token" +} +``` +::: + +### Anthropic Claude + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Anthropic 提供商 | Anthropic | 是 | +| `ANTHROPIC_API_KEY` | Anthropic API 密钥 | - | 是(如果使用 Anthropic) | + +:::info +前往 [Anthropic](https://console.anthropic.com/settings/keys) 获取 API 密钥。 +::: + +### Cohere + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Cohere 提供商名称 | Cohere | 是 | +| `COHERE_API_KEY` | Cohere API 密钥 | - | 是(如果使用 Cohere) | + +:::info +前往 [Cohere](https://dashboard.cohere.com/api-keys) 获取 API 密钥。 +::: + ### DeepSeek | 环境变量 | 描述 | 默认值 | 必填 | @@ -43,6 +91,117 @@ UPage 使用环境变量进行配置。您可以通过以下方式设置环境 | `LLM_DEFAULT_PROVIDER` | DeepSeek 提供商名称 | Deepseek | 是 | | `DEEPSEEK_API_KEY` | DeepSeek API 密钥 | - | 是(如果使用 DeepSeek) | +:::info +前往 [DeepSeek](https://platform.deepseek.com/api_keys) 获取 API 密钥。 +::: + +### Github + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Github 提供商名称 | Github | 是 | +| `GITHUB_API_KEY` | Github API 密钥 | - | 是(如果使用 Github) | + +:::info +前往 [Github](https://github.com/settings/personal-access-tokens) 获取 API 密钥。 +::: + +### Google + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Google 提供商名称 | Google | 是 | +| `GOOGLE_GENERATIVE_AI_API_KEY` | Google 生成式 AI API 密钥 | - | 是(如果使用 Google) | + +:::info +前往 [Google](https://console.cloud.google.com/apis/credentials) 获取 API 密钥。 +::: + +### Groq + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Groq 提供商名称 | Groq | 是 | +| `GROQ_API_KEY` | Groq API 密钥 | - | 是(如果使用 Groq) | + +:::info +前往 [Groq](https://console.groq.com/keys) 获取 API 密钥。 +::: + +### HuggingFace + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | HuggingFace 提供商名称 | HuggingFace | 是 | +| `HuggingFace_API_KEY` | HuggingFace API 密钥 | - | 是(如果使用 HuggingFace) | + +:::info +前往 [HuggingFace](https://huggingface.co/settings/tokens) 获取 API 密钥。 +::: + +### Hyperbolic + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Hyperbolic 提供商名称 | Hyperbolic | 是 | +| `HYPERBOLIC_API_KEY` | Hyperbolic API 密钥 | - | 是(如果使用 Hyperbolic) | + +:::info +前往 [Hyperbolic](https://hyperbolic.ai/dashboard/api-keys) 获取 API 密钥。 +::: + +### LMStudio + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | LMStudio 提供商名称 | LMStudio | 是 | +| `LMSTUDIO_API_BASE_URL` | LMStudio API URL | `http://127.0.0.1:1234` | 是(如果使用 LMStudio) | + +:::warning +由于可能存在的 IPV6 的问题,所以不要使用 http://localhost:1234 而应该使用类似于 http://127.0.0.1:1234 的地址 +::: + +### Mistral + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Mistral 提供商名称 | Mistral | 是 | +| `MISTRAL_API_KEY` | Mistral API 密钥 | - | 是(如果使用 Mistral) | + +:::info +前往 [Mistral](https://console.mistral.ai/api-keys/) 获取 API 密钥。 +::: + +### Ollama + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Ollama 提供商名称 | Ollama | 是 | +| `OLLAMA_API_BASE_URL` | Ollama API URL | `http://127.0.0.1:11434` | 是(如果使用 Ollama) | + +:::warning +由于可能存在的 IPV6 的问题,所以不要使用 http://localhost:11434 而应该使用类似于 http://127.0.0.1:11434 的地址 +::: + +### OpenRouter + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | OpenRouter 提供商名称 | OpenRouter | 是 | +| `OPEN_ROUTER_API_KEY` | OpenRouter API 密钥 | - | 是(如果使用 OpenRouter) | + +:::info +前往 [OpenRouter](https://openrouter.ai/settings/keys) 获取 API 密钥。 +::: + +### 兼容 OpenAI 接口的服务 + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | OpenAILike 提供商名称 | OpenAILike | 是 | +| `OPENAI_LIKE_API_BASE_URL` | API 基础 URL | - | 是(如果使用 OpenAILike) | +| `OPENAI_LIKE_API_KEY` | API 密钥 | - | 是(如果使用 OpenAILike) | + ### OpenAI | 环境变量 | 描述 | 默认值 | 必填 | @@ -50,60 +209,81 @@ UPage 使用环境变量进行配置。您可以通过以下方式设置环境 | `LLM_DEFAULT_PROVIDER` | OpenAI 提供商名称 | OpenAI | 是 | | `OPENAI_API_KEY` | OpenAI API 密钥 | - | 是(如果使用 OpenAI) | -### Anthropic Claude +:::info +前往 [OpenAI](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key) 获取 API 密钥。 +::: + +### Perplexity | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Anthropic 提供商 | Anthropic | 是 | -| `ANTHROPIC_API_KEY` | Anthropic API 密钥 | - | 是(如果使用 Anthropic) | -| `ANTHROPIC_API_BASE_URL` | Anthropic API 基础 URL | `https://api.anthropic.com` | 否 | +| `LLM_DEFAULT_PROVIDER` | Perplexity 提供商名称 | Perplexity | 是 | +| `PERPLEXITY_API_KEY` | Perplexity API 密钥 | - | 是(如果使用 Perplexity) | -### 兼容 OpenAI 接口的服务 +:::info +前往 [Perplexity](https://www.perplexity.ai/settings/api) 获取 API 密钥。 +::: + +### Together | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `OPENAI_LIKE_API_KEY` | API 密钥 | - | 是(如果使用 OpenAILike) | -| `OPENAI_LIKE_API_BASE_URL` | API 基础 URL | - | 是(如果使用 OpenAILike) | -| `OPENAI_LIKE_ORGANIZATION_ID` | 组织 ID | - | 否 | +| `LLM_DEFAULT_PROVIDER` | Together 提供商名称 | Together | 是 | +| `TOGETHER_API_BASE_URL` | Together API 基础 URL | - | 是(如果使用 Together) | +| `TOGETHER_API_KEY` | Together API 密钥 | - | 是(如果使用 Together) | -### Ollama +:::info +前往 [Together](https://api.together.xyz/settings/api-keys) 获取 API 密钥。 +::: + +### xAI | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `OLLAMA_API_BASE_URL` | Ollama API 基础 URL | `http://localhost:11434` | 是(如果使用 Ollama) | +| `LLM_DEFAULT_PROVIDER` | xAI 提供商名称 | xAI | 是 | +| `XAI_API_KEY` | xAI API 密钥 | - | 是(如果使用 xAI) | -### Groq +:::info +前往 [xAI](https://x.ai/api) 获取 API 密钥。 +::: + +## AI 工具配置 + +UPage 支持集成部分 AI 工具调用,用于为 UPage 提供服务,您可以根据需要配置。 + +### Serper(网络搜索工具) + +UPage 集成了 [Serper](https://serper.dev) 的搜索服务,您可以通过配置 `SERPER_API_KEY` 来使用 Serper 的搜索服务。 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `GROQ_API_KEY` | Groq API 密钥 | - | 是(如果使用 Groq) | +| `SERPER_API_KEY` | Serper API 密钥 | - | 是(如果使用 Serper) | -### HuggingFace +:::info +前往 [Serper](https://serper.dev/api-keys) 获取 API 密钥。 +::: + +### Weather(天气工具) + +UPage 集成了 [Weather](https://weatherapi.com) 的天气服务,您可以通过配置 `WEATHER_API_KEY` 来使用 Weather 的天气服务。 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `HuggingFace_API_KEY` | HuggingFace API 密钥 | - | 是(如果使用 HuggingFace) | +| `WEATHER_API_KEY` | Weather API 密钥 | - | 是(如果使用 Weather) | -### OpenRouter - -| 环境变量 | 描述 | 默认值 | 必填 | -| --- | --- | --- | --- | -| `OPEN_ROUTER_API_KEY` | OpenRouter API 密钥 | - | 是(如果使用 OpenRouter) | - -### Google Gemini - -| 环境变量 | 描述 | 默认值 | 必填 | -| --- | --- | --- | --- | -| `GOOGLE_API_KEY` | Google API 密钥 | - | 是(如果使用 Google) | -| `GOOGLE_API_BASE_URL` | Google API 基础 URL | `https://generativelanguage.googleapis.com` | 否 | +:::info +前往 [Weather](https://www.weatherapi.com/my/) 获取 API 密钥。 +::: ## 认证配置 ### Logto 认证 +UPage 默认仅支持单一的匿名用户访问,您可以通过集成 Logto 后配置 `LOGTO_ENABLE` 来启用 Logto 认证,支持多用户登录。 + | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LOGTO_ENABLE` | 是否启用 Logto 认证 | `false` | 否 | +| `LOGTO_ENABLE` | 是否启用 Logto 认证 | `false` | 是 | | `LOGTO_ENDPOINT` | Logto 服务的 URL | - | 是(如果使用 Logto) | | `LOGTO_APP_ID` | Logto 应用程序 ID | - | 是(如果使用 Logto) | | `LOGTO_APP_SECRET` | Logto 应用程序密钥 | - | 是(如果使用 Logto) | @@ -116,28 +296,13 @@ Logto 集成请参阅 [Logto 认证集成](./deployment/logto)文档。 ## 配置示例 -### 基本配置示例 - -```bash -# 基础配置 -PORT=3000 -NODE_ENV=production -LOG_LEVEL=info - -# AI 提供商配置 -LLM_DEFAULT_PROVIDER=OpenAI -OPENAI_API_KEY=your-openai-api-key -LLM_DEFAULT_MODEL=gpt-4-turbo -LLM_MINOR_MODEL=gpt-3.5-turbo -``` - -### 完整的 Docker Compose 配置示例 +以下内容以使用 Docker Compose 作为示例,用于展示 UPage 的完整配置。 ```yaml version: "3.9" services: upage: - image: ghcr.io/halo-dev/upage:latest + image: halo-dev/upage:latest container_name: upage restart: unless-stopped ports: @@ -152,11 +317,16 @@ services: - MAX_UPLOAD_SIZE_MB=10 - STORAGE_DIR=/app/storage - # AI 提供商配置 - - LLM_DEFAULT_PROVIDER=OpenAI - - OPENAI_API_KEY=your-openai-api-key - - LLM_DEFAULT_MODEL=gpt-4-turbo - - LLM_MINOR_MODEL=gpt-3.5-turbo + # 使用 DeepSeek 提供商配置 + - LLM_DEFAULT_PROVIDER=DeepSeek + # 这里使用 DEEPSEEK_API_KEY + - DEEPSEEK_API_KEY=your-deepseek-api-key + - LLM_DEFAULT_MODEL=deepseek-chat + - LLM_MINOR_MODEL=deepseek-chat + + # AI 工具配置 + - SERPER_API_KEY=your-serper-api-key + - WEATHER_API_KEY=your-weather-api-key # Logto 认证配置 - LOGTO_ENABLE=true @@ -164,38 +334,40 @@ services: - LOGTO_APP_ID=your-app-id - LOGTO_APP_SECRET=your-app-secret - LOGTO_COOKIE_SECRET=your-cookie-secret - - LOGTO_BASE_URL=https://api.upage.io + - LOGTO_BASE_URL=http://localhost:3000 volumes: - ./data:/app/data - ./logs:/app/logs - ./storage:/app/storage ``` -## 多环境配置 +如果你要切换使用其他 AI 提供商,则只需要修改 `LLM_DEFAULT_PROVIDER` 和相应的 API 密钥、Model 即可,例如: -### 开发环境 +```yaml +version: "3.9" +services: + upage: + image: halo-dev/upage:latest + container_name: upage + restart: unless-stopped + ports: + - "3000:3000" + environment: + # 使用 OpenAI 提供商配置 + - LLM_DEFAULT_PROVIDER=OpenAI + # 这里注意需要改为 OPENAI_API_KEY + - OPENAI_API_KEY=your-openai-api-key + - LLM_DEFAULT_MODEL=gpt-4.1 + - LLM_MINOR_MODEL=gpt-4.1-mini -```bash -NODE_ENV=development -OPERATING_ENV=development -LOG_LEVEL=debug -PORT=3000 -``` + # ...其他配置 + volumes: + - ./data:/app/data + - ./logs:/app/logs + - ./storage:/app/storage +``` -### 测试环境 +## 下一步 -```bash -NODE_ENV=production -OPERATING_ENV=testing -LOG_LEVEL=info -PORT=3000 -``` - -### 生产环境 - -```bash -NODE_ENV=production -OPERATING_ENV=production -LOG_LEVEL=warn -PORT=3000 -``` +- 阅读[用户指南](./user-guide/basics)学习如何使用 UPage 创建网页 +- 阅读[贡献指南](./contributing)了解如何贡献 UPage diff --git a/docs/content/deployment/docker-compose.md b/docs/content/deployment/docker-compose.md index 510c7f9..8893400 100644 --- a/docs/content/deployment/docker-compose.md +++ b/docs/content/deployment/docker-compose.md @@ -139,6 +139,6 @@ docker-compose up -d ## 下一步 -- 阅读[用户指南](user-guide/basics)学习如何使用 UPage 创建网页 -- 探索[配置参考](configuration)了解所有可用的配置选项 -- 探索[Logto 认证集成](logto)了解如何集成 Logto 实现用户认证 +- 阅读[用户指南](../user-guide/basics)学习如何使用 UPage 创建网页 +- 探索[配置参考](../configuration)了解所有可用的配置选项 +- 探索[Logto 认证集成](./logto)了解如何集成 Logto 实现用户认证 diff --git a/docs/content/deployment/logto.md b/docs/content/deployment/logto.md index 2a5a58f..bd0486e 100644 --- a/docs/content/deployment/logto.md +++ b/docs/content/deployment/logto.md @@ -136,3 +136,8 @@ Logto 支持多种社交登录方式: 1. 在 Logto 管理控制台中,导航到"安全" 2. 启用多因素认证 3. 配置多因素认证方式(如 TOTP、短信等) + +## 下一步 + +- 阅读[用户指南](../user-guide/basics)学习如何使用 UPage 创建网页 +- 探索[配置参考](../configuration)了解所有可用的配置选项 diff --git a/docs/content/deployment/source.md b/docs/content/deployment/source.md index 7cf6f58..ec49978 100644 --- a/docs/content/deployment/source.md +++ b/docs/content/deployment/source.md @@ -227,3 +227,9 @@ pnpm prisma migrate reset cat logs/combined-*.log cat logs/error-*.log ``` + +## 下一步 + +- 阅读[用户指南](../user-guide/basics)学习如何使用 UPage 创建网页 +- 探索[配置参考](../configuration)了解所有可用的配置选项 +- 探索[Logto 认证集成](./logto)了解如何集成 Logto 实现用户认证 diff --git a/docs/sidebars.js b/docs/sidebars.js index b356b45..92f42e8 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -46,12 +46,22 @@ const sidebars = { { type: 'category', label: '用户指南', + link: { + type: 'generated-index', + title: '用户指南', + slug: 'user-guide', + }, items: [ 'user-guide/basics', 'user-guide/ai-page-generation', 'user-guide/page-management', ], }, + { + type: 'doc', + id: 'contributing', + label: '贡献指南', + }, { type: 'doc', id: 'faq', @@ -62,11 +72,6 @@ const sidebars = { id: 'changelog', label: '更新日志', }, - { - type: 'doc', - id: 'contributing', - label: '贡献指南', - }, ], };