常见问题
安装部署
Q: 首次启动后如何获取管理员密码?
A: 首次启动时,系统会在控制台输出默认管理员密码,请妥善保存。默认管理员用户名为 admin。
Q: 如何修改默认端口?
A: 编辑 config.toml 文件,修改 [server] 部分的 port 配置项。
Q: 支持哪些数据库?
A: 目前支持 SQLite 和 MySQL。SQLite 适合小型部署,MySQL 适合生产环境。
Q: 如何启用 HTTPS?
A: 在 config.toml 中配置 [server] 部分:
[server]
ssl = true
ssl_cert = "/path/to/cert.pem"
ssl_key = "/path/to/key.pem"功能使用
Q: 如何上传大文件?
A: MyObj 支持大文件分片上传,默认阈值为 1GB。超过阈值的文件会自动分片上传,支持断点续传。
Q: 秒传功能如何工作?
A: 系统使用 BLAKE3 哈希算法计算文件哈希值。如果服务器已存在相同哈希的文件,会直接创建文件引用,无需重新上传。
Q: 如何创建分享链接?
A: 在文件列表中,选择要分享的文件,点击"分享"按钮,设置有效期和密码(可选),即可生成分享链接。
Q: 如何配置 WebDAV?
A: 在 config.toml 中配置 [webdav] 部分,启用 WebDAV 服务。详细配置请查看 WebDAV 使用指南。
Q: 如何启用 S3 服务?
A: 在 config.toml 中配置 [s3] 部分:
[s3]
enable = true
region = "us-east-1"
share_port = false
port = 9000详细配置请查看 S3 协议使用指南。
Q: MyObj 会自动创建存储桶吗?
A: 是的,MyObj 支持自动创建存储桶。首次上传文件到指定的 Bucket 时,如果 Bucket 不存在,系统会自动创建,无需手动创建。
S3 协议使用
Q: 如何获取 S3 访问凭证?
A:
- 登录 Web 界面
- 进入"设置" → "API Key"
- 创建新的 API Key
- Access Key ID 和 Secret Access Key 即为 S3 访问凭证
Q: S3 服务支持哪些功能?
A: MyObj S3 服务完全兼容 AWS S3 协议,支持:
- Bucket 和 Object 操作
- Multipart Upload(大文件分片上传)
- 版本控制
- 预签名 URL
- CORS 配置
- 对象标签
- ACL(访问控制列表)
- Bucket 策略
- 生命周期管理
- 服务端加密(SSE-S3)
详细功能请查看 S3 协议使用指南。
Q: S3 服务端口如何配置?
A: 在 config.toml 中配置:
share_port = true:与主服务共用 8080 端口share_port = false:使用独立端口(默认 9000)
Q: 如何配置 S3 路径风格访问?
A: MyObj S3 默认使用路径风格访问(http://endpoint/bucket/key),这是自动配置的,无需手动设置。使用 AWS SDK 时,需要设置 forcePathStyle(true)。
Q: S3 签名验证失败怎么办?
A:
- 检查 Access Key 和 Secret Key 是否正确
- 确认系统时间同步(签名计算依赖时间戳)
- 检查 API Key 是否有效
- 查看日志获取详细错误信息
Q: Bucket 名称有什么限制?
A: Bucket 名称需符合 S3 命名规范:
- 长度:3-63 个字符
- 只能包含:小写字母、数字、点(.)和连字符(-)
- 必须以字母或数字开头和结尾
- 不能包含连续的点
- 不能是 IP 地址格式
Q: 支持哪些 ACL 类型?
A: MyObj 支持标准的 S3 Canned ACL:
private- 私有访问public-read- 公开读public-read-write- 公开读写authenticated-read- 认证用户读bucket-owner-read- Bucket 所有者读bucket-owner-full-control- Bucket 所有者完全控制
框架集成
Q: 如何在 RuoYi-Plus 框架中集成 MyObj S3?
A:
- 修改
OssClient.java,取消注释 ACL 相关代码(第 151 行和第 202 行) - 在 RuoYi-Plus 管理后台配置 OSS 存储
- 填写 MyObj S3 的配置信息(endpoint、accessKey、secretKey 等)
详细步骤请查看 RuoYi-Plus 框架集成指南。
Q: RuoYi-Plus 中的权限类型如何映射到 S3 ACL?
A: RuoYi-Plus 框架将权限类型映射如下:
0(PRIVATE) → S3private1(PUBLIC_READ_WRITE) → S3public-read-write2(PUBLIC_READ) → S3public-read
Q: 如何在 Java 项目中使用 MyObj S3?
A: 使用 AWS SDK for Java:
- 添加 Maven 依赖(
software.amazon.awssdk:s3和software.amazon.awssdk:netty-nio-client) - 创建 S3Client,设置 endpoint 和凭证
- 使用 S3Client 进行文件操作
详细示例请查看 S3 协议使用指南。
Q: 如何在 Spring Boot 项目中集成?
A: 创建 S3Client 配置类,从配置文件读取参数并创建 Bean。详细示例请查看 S3 协议使用指南。
故障排查
Q: 上传文件失败怎么办?
A:
- 检查磁盘空间是否充足
- 检查文件存储目录权限
- 查看日志文件获取详细错误信息
- 检查网络连接
- 确认文件大小未超过限制
Q: 无法访问 WebDAV?
A:
- 确认 WebDAV 服务已启用
- 检查防火墙设置
- 确认端口未被占用
- 检查用户权限
- 查看 WebDAV 使用指南
Q: 数据库连接失败?
A:
- 检查数据库服务是否运行
- 验证数据库连接信息是否正确
- 确认数据库用户权限
- 检查网络连接
- 查看数据库日志
Q: S3 服务连接失败?
A:
- 检查 MyObj S3 服务是否启动
- 检查
config.toml中 S3 配置是否正确 - 检查 endpoint 配置是否正确
- 检查网络连接和防火墙设置
- 查看日志文件获取详细错误信息
Q: 存储桶不存在错误?
A:
- MyObj 支持自动创建存储桶,首次上传时会自动创建
- 如果仍然报错,检查桶名称是否符合 S3 命名规范
- 确认 API Key 有创建存储桶的权限
- 检查配置中的 bucketName 是否正确
Q: 文件预览失败?
A:
- 检查文件格式是否支持预览
- 检查文件是否损坏
- 检查浏览器是否支持该格式
- 查看浏览器控制台错误信息
- 查看 文件预览指南
性能优化
Q: 如何提高上传速度?
A:
- 调整
big_chunk_size配置项,增大分片大小 - 使用 SSD 存储文件
- 确保网络带宽充足
- 启用多线程上传(如果支持)
Q: 如何减少存储空间占用?
A:
- 启用文件去重(秒传功能)
- 定期清理临时文件
- 压缩存储大文件
- 清理回收站中的过期文件
- 删除不需要的文件
Q: 如何优化 S3 访问性能?
A:
- 使用 CDN 加速(配置自定义域名)
- 启用 HTTP/2
- 使用连接池
- 配置合适的超时时间
- 使用异步客户端(如 AWS SDK 的异步客户端)
安全相关
Q: 如何保护数据安全?
A:
- 启用文件加密存储
- 使用强密码
- 定期备份数据
- 启用 SSL/TLS
- 限制 API Key 权限
- 配置访问控制列表(ACL)
- 使用私有权限存储敏感文件
Q: 如何重置用户密码?
A: 使用 CLI 工具重置密码:
./myobj-cli user reset-password <username> <new-password>Q: API Key 泄露了怎么办?
A:
- 立即删除泄露的 API Key
- 创建新的 API Key
- 更新所有使用该 API Key 的配置
- 检查是否有异常访问记录
- 必要时更换所有相关凭证
Q: 如何配置 ACL 权限?
A:
- 上传文件时设置 ACL(通过
x-amz-aclheader 或 SDK 的 ACL 参数) - 使用 Bucket 策略控制访问
- 在 RuoYi-Plus 中通过
accessPolicy配置项设置 - 详细说明请查看 S3 协议使用指南
其他问题
Q: 如何贡献代码?
A: 查看项目的 贡献指南。
Q: 如何报告 Bug?
A: 在 Gitee Issues 创建 Issue,提供详细的问题描述和复现步骤。
Q: 如何获取技术支持?
A:
- 查看文档和 FAQ
- 在 Gitee Issues 提问
- 在 讨论区 交流
Q: 支持哪些编程语言?
A: MyObj S3 服务兼容所有支持 AWS S3 协议的 SDK,包括:
- Go(MinIO SDK、AWS SDK)
- Java(AWS SDK)
- Python(boto3)
- JavaScript/TypeScript(AWS SDK)
- .NET(AWS SDK)
- 其他语言的 S3 兼容 SDK
Q: 如何备份数据?
A:
- 定期备份数据库文件
- 备份
obj_data目录中的文件 - 使用 S3 兼容的备份工具(如 rclone)备份到其他存储
- 配置自动备份任务
Q: 如何迁移数据?
A:
- 备份数据库和文件数据
- 在新服务器上安装 MyObj
- 恢复数据库
- 复制文件数据到新服务器的
obj_data目录 - 更新配置文件
- 启动服务并验证
