想自建一套类似问卷星的收集系统,又不想把答卷交给第三方平台?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 往往没写这一步——以本机实际跳转和官方部署说明为准。

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

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

验收闭环:建问卷 → 填写 → 报表
- 新建一份测试问卷,至少放几种题型(单选/多选/填空等)
- 用编辑器里的移动端预览看一眼排版
- 发布后打开答题页,自己填一份答卷
- 回到管理端看答卷分析/报表
到这里,自托管问卷的主路径就算跑通了。考试编辑器或题库练习若好奇,至多点开看一眼即可,不必当成验收必选项。





说明:AI 创建问卷、微信登录/答题、高德地图题、Google OAuth 等能力需要额外配置或第三方密钥;基础问卷流程不依赖这些 API Key。截图请绕开未配置入口,或在文中标明「未配置」。
实测踩坑
- 第一次必过 /setup
只docker run打开站点后若一直停在初始化页,选 Embedded H2 并提交即可;不要误以为镜像坏了。 - 改密规则较严
新密码 8–16 位且须含大小写 + 数字,否则保存失败。 - 端口冲突只改宿主映射
-p 8080:1991这类写法即可;容器内仍监听 1991。 - 务必挂载数据目录
不挂/app/config、/app/db、/app/files时,删容器重建会变成全新系统,问卷与答卷一起丢。 - 本机若无 Docker 网桥
可用--network=host临时跑通(仍访问 1991);常规 Linux/macOS 按上文-p 1991:1991即可,不必折腾 host 网络。 - H2 只适合演示与小规模自用
要长期挂机或对外提供服务,请改 Docker Compose + MySQL 8,且不要把 3306 暴露公网。
安全与合规提醒
- 默认弱口令:截图请打码;切勿原样把管理端口裸奔公网
- 生产或公网场景:强密码、反代 + HTTPS、限制来源 IP/仅内网,并评估是否换 MySQL
- 协议为 MIT:自用与写教程通常没问题;再分发请保留原许可与版权声明
- 本帖不提供完整前后端源码包(公开仓前端不在主仓);按官方镜像部署即可复现
- 本帖截图均来自本机
http://127.0.0.1:1991/,不是演示站页面
按上文起容器 → /setup 选 H2 → 改密 → 建一份问卷并自己答一遍,就能得到一套可自托管的问卷收集环境。需要「考试/题库」主线时,请回到站内那篇在线考试系统;本篇到问卷闭环为止。














暂无评论内容