Files
FileRelay/webapp/doc/config_specification.md
2026-01-28 20:44:34 +08:00

140 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FileRelay 配置项详细说明文档
本文档整理了 FileRelay 系统 `config.yaml` 配置文件中各字段的含义、类型及示例,供前端配置页面开发参考。
## 1. 站点设置 (site)
用于定义前端展示的站点基本信息。
| 字段名 | 类型 | 含义 | 示例 |
| :--- | :--- | :--- | :--- |
| `name` | string | 站点名称,显示在网页标题和页头 | `文件暂存柜` |
| `description` | string | 站点描述,显示在首页或元标签中 | `临时文件中转服务` |
| `logo` | string | 站点 Logo 的 URL 地址 | `/logo.png` |
| `base_url` | string | 站点外部访问地址。若配置则固定使用该地址拼接直链;若留空,系统将尝试从请求头(如 `X-Forwarded-Proto`, `:scheme`, `Forwarded` 等)或 `Referer` 中自动检测协议及主机名,以确保在 HTTPS 代理环境下链接正确。 | `https://file.example.com` |
| `port` | int | 后端服务监听端口 | `8080` |
## 2. 安全设置 (security)
涉及系统鉴权、取件保护相关的核心安全配置。
| 字段名 | 类型 | 含义 | 示例 |
| :--- | :--- | :--- | :--- |
| `admin_password_hash` | string | 管理员密码的 bcrypt 哈希值。可以通过更新配置接口修改,修改后立即生效,且不再依赖数据库存储。 | `$2a$10$...` |
| `pickup_code_length` | int | 自动生成的取件码长度。变更后系统将自动对存量取件码进行右侧补零或截取以适配新长度。 | `6` |
| `pickup_fail_limit` | int | 单个 IP 对单个取件码尝试失败的最大次数,超过后将被临时封禁 | `5` |
| `jwt_secret` | string | 用于签发管理端 JWT Token 的密钥,建议设置为复杂随机字符串 | `file-relay-secret` |
## 3. 上传设置 (upload)
控制文件上传的限制和策略。
| 字段名 | 类型 | 含义 | 示例 |
| :--- | :--- | :--- | :--- |
| `max_file_size_mb` | int64 | 单个文件的最大允许大小单位MB | `100` |
| `max_batch_files` | int | 一个取件批次中允许包含的最大文件数量 | `20` |
| `max_retention_days` | int | 文件在服务器上的最长保留天数(针对 time 类型的过期策略) | `30` |
| `require_token` | bool | 是否强制要求提供 API Token 才能进行上传操作 | `false` |
## 4. 存储设置 (storage)
定义文件的实际物理存储方式。系统支持多种存储后端。
| 字段名 | 类型 | 含义 | 示例 |
| :--- | :--- | :--- | :--- |
| `type` | string | 当前激活的存储类型。可选值:`local`, `webdav`, `s3` | `local` |
### 4.1 本地存储 (local)
`type``local` 时生效。
| 字段名 | 类型 | 含义 | 示例 |
| :--- | :--- | :--- | :--- |
| `path` | string | 文件存储在服务器本地的相对或绝对路径 | `storage_data` |
### 4.2 WebDAV 存储 (webdav)
`type``webdav` 时生效。
| 字段名 | 类型 | 含义 | 示例 |
| :--- | :--- | :--- | :--- |
| `url` | string | WebDAV 服务器的 API 地址 | `https://dav.example.com` |
| `username` | string | WebDAV 登录用户名 | `user` |
| `password` | string | WebDAV 登录密码 | `pass` |
| `root` | string | WebDAV 上的基础存储根目录 | `/file-relay` |
### 4.3 S3 存储 (s3)
`type``s3` 时生效。
| 字段名 | 类型 | 含义 | 示例 |
| :--- | :--- | :--- | :--- |
| `endpoint` | string | S3 服务端点 | `s3.amazonaws.com` |
| `region` | string | S3 区域 | `us-east-1` |
| `access_key` | string | S3 Access Key | `your-access-key` |
| `secret_key` | string | S3 Secret Key | `your-secret-key` |
| `bucket` | string | S3 存储桶名称 | `file-relay-bucket` |
| `use_ssl` | bool | 是否强制使用 SSL (HTTPS) 连接 | `false` |
## 5. API Token 设置 (api_token)
控制系统对外开放的 API Token 管理功能。
| 字段名 | 类型 | 含义 | 示例 |
| :--- | :--- | :--- | :--- |
| `enabled` | bool | 是否启用 API Token 功能模块 | `true` |
| `allow_admin_api` | bool | 是否允许具备 `admin` 权限的 API Token 访问管理接口 | `true` |
| `max_tokens` | int | 系统允许创建的 API Token 最大总数限制 | `20` |
### 5.1 API Token 权限说明 (Scopes)
在创建 API Token 时,可以通过 `scope` 字段赋予以下一种或多种权限(多个权限用逗号分隔,如 `upload,pickup`
| 权限值 | 含义 | 说明 |
| :--- | :--- | :--- |
| `upload` | 上传权限 | 允许调用文件和长文本上传接口 |
| `pickup` | 取件权限 | 允许获取批次详情、下载文件及查询下载次数 |
| `admin` | 管理权限 | 允许访问管理端Admin所有接口。需开启 `allow_admin_api` 且 Token 功能已启用 |
## 6. Web 前端设置 (web)
定义前端静态资源的加载方式。
| 字段名 | 类型 | 含义 | 示例 |
| :--- | :--- | :--- | :--- |
| `path` | string | 外部前端资源目录路径。若该路径存在且包含 `index.html`,系统将优先使用此目录;否则回退使用内置前端资源。 | `web` |
## 7. 数据库设置 (database)
系统元数据存储配置。支持 SQLite, MySQL 和 PostgreSQL。
| 字段名 | 类型 | 含义 | 示例 |
| :--- | :--- | :--- | :--- |
| `type` | string | 数据库类型。可选值:`sqlite`, `mysql`, `postgres` | `sqlite` |
| `path` | string | SQLite 数据库文件的路径 (仅在 `type``sqlite` 时生效) | `file_relay.db` |
| `host` | string | 数据库地址 (MySQL/PostgreSQL) | `127.0.0.1` |
| `port` | int | 数据库端口 (MySQL/PostgreSQL) | `3306``5432` |
| `user` | string | 数据库用户名 (MySQL/PostgreSQL) | `root` |
| `password` | string | 数据库密码 (MySQL/PostgreSQL) | `password` |
| `dbname` | string | 数据库名称 (MySQL/PostgreSQL) | `file_relay` |
| `config` | string | 额外 DSN 配置参数。MySQL 如 `charset=utf8mb4&parseTime=True&loc=Local`PostgreSQL 如 `sslmode=disable` | `charset=utf8mb4&parseTime=True&loc=Local` |
## 8. 日志设置 (log)
控制系统日志的输出级别和目的地。
| 字段名 | 类型 | 含义 | 示例 |
| :--- | :--- | :--- | :--- |
| `level` | string | 日志级别。可选值:`debug`, `info`, `warn`, `error` | `info` |
| `file_path` | string | 日志文件路径。如果设置,日志将同时输出到控制台和该文件;若为空则仅输出到控制台。 | `logs/app.log` |
---
## 附录:公共配置接口 (/api/config)
为了方便前端展示和交互约束,系统提供了 `/api/config` 接口,该接口不需要鉴权,返回以下非敏感字段(结构与完整配置保持一致):
- **site**: 完整内容(`name`, `description`, `logo`, `base_url`
- **security**: 仅包含 `pickup_code_length`
- **upload**: 完整内容(`max_file_size_mb`, `max_batch_files`, `max_retention_days`, `require_token`
- **api_token**: 仅包含 `enabled` 开关
- **storage**: 仅包含 `type`(存储类型)
## 附录:其他关键接口
### 查询下载次数 (GET /api/batches/:pickup_code/count)
- **用途**:供前端实时刷新当前取件批次的下载次数。
- **特性**:支持查询已过期的文件。
### 恢复 API Token (POST /api/admin/api-tokens/:id/recover)
- **权限**:需要管理员权限。
- **用途**:将状态为“已撤销”的 Token 重新恢复为有效状态。