Files
tamabox/README.zh-CN.md
T
2026-09-08 10:10:44 +08:00

5.4 KiB
Raw Blame History

NekoBox

匿名提问箱 / Anonymous Question Box

Go Report Card Sourcegraph DeepSource Go Report Card

简体中文 | English

Screenshot

安装

需求

  • Go (v1.19 或更高版本,go.mod 声明 go 1.25.0)
  • MySQL (v5.7 或更高版本)
  • Redis (v6.0 或更高版本)

编译依赖说明:chai2010/webp 需要 CGO 与系统 libwebp(Debian/Ubuntu:apt install libwebp-dev), 静态图片上传时会自动转换为 WebP。若安装失败,转换将自动回退为原始格式(不影响编译之外的功能)。 动画 GIF 转 WebP 需要系统安装 cwebp 命令行工具,未安装时回退为原始 GIF。

从源码编译

git clone https://github.com/NekoWheel/NekoBox.git

cd NekoBox

go build -o NekoBox

编辑配置文件

cp conf/app.sample.ini conf/app.ini

运行

./NekoBox web

常用命令

命令 用途
./NekoBox web 启动 Web 服务
./NekoBox censor 批量补审未审查的提问/回答(需配置文本审查服务)
./NekoBox uid 为历史用户补生成 UID
./NekoBox ban --email [email protected] 封禁用户并连带清理其提问、追问、私聊与消息(不可恢复,执行前二次确认)

功能特性

  • 匿名提问 / 私密提问:支持匿名或登录后提问,可标记私密(仅通过 token 链接可见)
  • 问题置顶 / 精选回答:提问箱主人在管理页置顶提问,公开主页置顶优先展示
  • 回答后追问:提问者凭 token 可对已回答的问题最多追问 3 次,主人可回复
  • Markdown 回答:回答支持 Markdown 排版(服务端渲染 + 白名单过滤防 XSS)
  • 分享图:提问箱主页分享图与单题分享图(含二维码,复用同一绘制模块)
  • 页面密码 / 提问密码:可选为提问箱页面设置访问密码、为提问设置密码
  • 同 IP 重复内容拦截:同一 IP 在 5 分钟内提交相同内容会被拒绝
  • 匿名 / 登录分级限流:登录用户享有更高请求额度(端点级滑动窗口限流)
  • IP 黑名单:支持精确 IP 与 CIDR,命中后跳转到指定 URL
  • 私聊:登录用户可向开启私聊的提问箱发起会话,支持图片、拉黑、每日上限
  • 提问箱统计看板:管理页展示总提问 / 已回答 / 未回答 / 私密 / 置顶 / 私聊统计
  • 全文搜索:管理页可按关键词搜索自己提问箱的提问与回答
  • 热门问题 / 标签榜:探索页展示热门标签与最新活跃的公开提问
  • 数据导出:支持 Excel 导出与 JSON 全量导出(含追问与私聊,可迁移备份)
  • 多语言:简体中文 / 繁體中文 / English / 日本語,支持按 cookie、用户配置与提问箱配置切换
  • 深色模式:全站一键切换深/浅色(cookie 持久化)
  • 内容审查:七牛 + 阿里云文本审查(可配置),结果带 30 天缓存

架构

Architecture Architecture

NekoBox 使用 GitHub Actions 进行持续集成和部署。

当用户访问 NekoBox 时,请求将会被发送至阿里云 CDN,CDN 的访问日志将会被实时推送到阿里云日志服务 (SLS)。日志数据将在 SLS 中存储 180 天,用于审计。

用户的信息、提问和回答将被存储在 MySQL 数据库中。

用户的会话、CSRF 令牌和电子邮件验证令牌将被暂时存储在 Redis 中。

用户的整个请求和响应链路将被上传到 Uptrace 用于调试。这些数据将被储存 30 天。管理员可以使用用户提供的 TraceID 来追踪查询指定的请求。

当用户提交提问时,问题的内容将被发送到七牛文本审查服务进行审查。如果提问内容存在问题,该内容将被发送到阿里云文本审查服务进行二次审查。 如果内容审查仍未通过,该提问将被拒绝发送。这是由于七牛文本审查服务不是很准确,一些非冒犯性的内容可能被七牛文本审查误报。

当用户收到新的提问时,阿里云邮件服务(DM)会向用户的邮箱发送一封邮件。

你可以在主页查看 NekoBox 的更新日志,也欢迎访问赞助页面来打钱支持 NekoBox。 更新日志和赞助商名单存储在独立部署的 Pocketbase 服务中。

开源协议

MIT License