工具部署|SurveyKing 开源问卷系统|Spring Boot + React · Docker

想自建一套类似问卷星的收集系统,又不想把答卷交给第三方平台?SurveyKing(卷王问卷)把问卷设计、发布收集、答卷分析,以及可选的考试自动判分、题库练习收进一套可自托管系统。本机用官方 Docker 镜像 + 内置 H2 即可跑起来:第一次打开会进入 /setup 选库并填系统信息,之后用管理员登录、改密、建一份测试问卷并看报表。本帖免费。

站内已有「在线考试系统」另见 spring-boot-online-exam;本篇聚焦自托管问卷/表单收集,考试与刷题只作附加能力一笔带过,避免写成又一篇考试系统。

能做什么

  • 问卷设计:可视化编辑器,单选/多选/填空等常见题型,支持移动端预览
  • 发布与收集:一键发布答题页,受访者打开链接即可填写
  • 答卷分析:回收后看统计报表,走通「设计 → 发布 → 填写 → 分析」闭环
  • 用户与权限:管理员账号体系,适合小团队内部分发问卷
  • 附加能力(本篇不展开):考试自动判分、题库练习等——需要考试系统请优先看站内那篇

技术栈一览

层级 技术
运行方式 官方 Docker 单容器(本机验收用 Embedded H2)
后端 Spring Boot 2.7、Spring Security、MyBatis-Plus
前端 React、Ant Design(镜像内已打包;公开仓前端不在主仓)
数据 H2(演示/小规模自用);可选 MySQL 8(长期/公网)
本机实跑版本 镜像 surveyking/surveyking:latest,应用 1.13.2,端口 1991

本机部署(已跑通)

建议内存 ≥ 2GB。先建持久化目录,再起单容器:

mkdir -p surveyking/{config,db,files,logs}
cd surveyking
docker run -d \
  --name surveyking \
  --restart unless-stopped \
  -p 1991:1991 \
  -e SERVER_PORT=1991 \
  -e JAVA_OPTS='-Xms256m -Xmx1g -Dfile.encoding=UTF-8' \
  -v "$PWD/config:/app/config" \
  -v "$PWD/db:/app/db" \
  -v "$PWD/files:/app/files" \
  -v "$PWD/logs:/app/logs" \
  surveyking/surveyking:latest

拉不下 Docker Hub 时,把最后一行换成国内镜像:

registry.cn-hangzhou.aliyuncs.com/surveyking/surveyking:latest

看日志确认启动完成:

docker logs -f surveyking

浏览器打开 http://localhost:1991(或 http://服务器IP:1991)。

1991 被占用时只改宿主映射,例如 -p 8080:1991,不要改容器内部端口与 SERVER_PORT。

首次初始化:/setup

第一次打开会进入 /setup。选 Embedded H2(内置数据库),填写系统信息完成初始化。官方 README 的一行 docker run 往往没写这一步——以本机实际跳转和官方部署说明为准。

首次 /setup 选择 Embedded H2
首次 /setup:选 Embedded H2 完成初始化

初始化完成后才会进入登录页。

登录页
登录页(截图不含明文口令)

登录与改密

默认管理员为 admin/弱口令(文档常见为 123456)。登录后立刻改密:新密码须 8–16 位,且同时包含大写字母、小写字母和数字。正文与截图请勿暴露明文口令。

工作台问卷列表
登录后工作台/项目列表

验收闭环:建问卷 → 填写 → 报表

  1. 新建一份测试问卷,至少放几种题型(单选/多选/填空等)
  2. 用编辑器里的移动端预览看一眼排版
  3. 发布后打开答题页,自己填一份答卷
  4. 回到管理端看答卷分析/报表

到这里,自托管问卷的主路径就算跑通了。考试编辑器或题库练习若好奇,至多点开看一眼即可,不必当成验收必选项。

可视化问卷编辑器
可视化编辑器:单选/多选/填空
移动端预览
移动端预览
发布后的答题页
发布后的答题页(本机自填一份)
答卷分析报表
答卷分析/报表
用户与权限
附加镜头:系统用户管理

说明:AI 创建问卷、微信登录/答题、高德地图题、Google OAuth 等能力需要额外配置或第三方密钥;基础问卷流程不依赖这些 API Key。截图请绕开未配置入口,或在文中标明「未配置」。

实测踩坑

  1. 第一次必过 /setup
    只 docker run 打开站点后若一直停在初始化页,选 Embedded H2 并提交即可;不要误以为镜像坏了。
  2. 改密规则较严
    新密码 8–16 位且须含大小写 + 数字,否则保存失败。
  3. 端口冲突只改宿主映射
    -p 8080:1991 这类写法即可;容器内仍监听 1991。
  4. 务必挂载数据目录
    不挂 /app/config、/app/db、/app/files 时,删容器重建会变成全新系统,问卷与答卷一起丢。
  5. 本机若无 Docker 网桥
    可用 --network=host 临时跑通(仍访问 1991);常规 Linux/macOS 按上文 -p 1991:1991 即可,不必折腾 host 网络。
  6. H2 只适合演示与小规模自用
    要长期挂机或对外提供服务,请改 Docker Compose + MySQL 8,且不要把 3306 暴露公网。

安全与合规提醒

  • 默认弱口令:截图请打码;切勿原样把管理端口裸奔公网
  • 生产或公网场景:强密码、反代 + HTTPS、限制来源 IP/仅内网,并评估是否换 MySQL
  • 协议为 MIT:自用与写教程通常没问题;再分发请保留原许可与版权声明
  • 本帖不提供完整前后端源码包(公开仓前端不在主仓);按官方镜像部署即可复现
  • 本帖截图均来自本机 http://127.0.0.1:1991/,不是演示站页面

按上文起容器 → /setup 选 H2 → 改密 → 建一份问卷并自己答一遍,就能得到一套可自托管的问卷收集环境。需要「考试/题库」主线时,请回到站内那篇在线考试系统;本篇到问卷闭环为止。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容