skillhub/document/docs/05-reference/troubleshooting.md
XiaoSeS 9fa6c52a4d
docs(troubleshooting): broaden postgres volume permission guidance (#745)
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-08-24 14:25:28 +08:00

2.2 KiB
Raw Permalink Blame History

title sidebar_position description
故障排查 2 常见问题诊断和解决方案

故障排查

服务无法启动

检查清单

  1. 检查容器状态:docker compose ps
  2. 查看服务日志:docker compose logs <service>
  3. 验证环境变量:检查 .env.release 配置
  4. 检查端口占用:netstat -tlnp

常见原因

  • 端口被占用
  • 数据库连接失败
  • Redis 连接失败
  • 环境变量缺失

PostgreSQL 容器启动报 operation not permitted(写 postmaster.pid / pg_wal 失败)

SkillHub 默认的 Compose / runtime.sh 使用 Docker named volumepostgres_data),通常不需要手工处理宿主机目录权限。这个错误更多出现在你把 PostgreSQL 数据目录改成宿主机 bind mount 时,例如 /data/skillhub/postgres:/var/lib/postgresql/data

排查顺序:

  1. 优先恢复为 Docker named volume或直接使用官方 runtime.sh 部署脚本,避免手写 compose 时漏配权限。
  2. 如果必须使用 bind mount先确认当前镜像中的 postgres 用户 UID/GIDdocker run --rm postgres:16-alpine id postgres,再按实际 UID/GID 调整数据目录属主,例如 chown -R <uid>:<gid> <数据目录>。不要固定假设所有环境都是 999:999
  3. 在 RHEL/CentOS 上检查 SELinux在启用 AppArmor、rootless Docker、NFS/CIFS/NAS 等环境时,也要确认宿主文件系统是否允许 PostgreSQL 需要的写入、锁和权限变更。
  4. 不建议把 PostgreSQL PGDATA 放在不支持完整 POSIX 权限语义的网络文件系统上生产环境优先使用本地盘、Docker named volume、块存储或外部 PostgreSQL。

上传失败

技能包上传失败

  1. 检查文件大小
  2. 检查文件类型
  3. 检查 SKILL.md 格式
  4. 查看服务端日志

认证问题

无法登录

  1. 检查 OAuth 配置
  2. 检查回调地址配置
  3. 检查 SKILLHUB_PUBLIC_BASE_URL 配置

性能问题

搜索慢

  1. 检查 PostgreSQL 全文索引
  2. 考虑升级到 Elasticsearch后续版本

下载慢

  1. 检查对象存储配置
  2. 检查网络带宽

获取帮助

如以上方案无法解决问题:

  1. 查看日志
  2. 提交 Issue
  3. 联系技术支持

下一步