Scoold 1.70 配置参数详解
Scoold 1.70 与 Para 1.57 全量配置参数逐项详解:配置体系三层优先级、Core/Posts/Security/Emails/声望/Para 侧/品牌七大分类核心参数表、管理面板在线修改与配置文件的优先级关系、autoinit 回写机制与实测审计日志。
Scoold 1.70 配置参数详解
一、配置体系总览
Scoold 与 Para 各自持有一份 Typesafe Config(HOCON)格式的 application.conf,配置读取顺序从高到低为:系统属性(-D 参数)→ 环境变量 → application.conf → 内置默认值。这意味着同一个参数有三种注入方式,例如设置站点名:
# 方式一:配置文件(scoold-application.conf)
scoold.app_name = "My Team Q&A"
# 方式二:JVM 系统属性(部署篇 Compose 中 JAVA_OPTS 追加)
-Dscoold.app_name="My Team Q&A"
# 方式三:环境变量(点号转下划线)
export scoold_app_name="My Team Q&A"
文件位置取决于部署形态。按《Scoold 1.70 Docker Compose 部署指南》的编排:Scoold 侧挂载到 /scoold/application.conf,Para 侧挂载到 /para/application.conf,宿主机对应部署目录下的两个 conf 文件。裸机形态下通过 -Dconfig.file=/path/to/application.conf 指定。
配置的动态性:Scoold 管理面板(Admin → Configuration)在线修改的参数即时生效并持久化到 Para 应用设置中,日志会留下审计记录;但标注 requires restart 的参数(端口、后端地址等底层项)必须重启进程。实测记录——在线保存 scoold.security.allow_unverified_emails 后无需重启即生效:
2026-10-30 09:24:49 [INFO ] Configuration property 'scoold.security.allow_unverified_emails' was modified by user 2026970748815413248.
autoinit 回写:首次启动时 Scoold 把自动生成的接入密钥回写到挂载的 scoold-application.conf(详见部署篇 2.4 节),此后这份文件就是「文件态配置」的事实标准;管理面板的在线修改则存于 Para 侧。两者同名时管理面板的在线值优先——排查配置不生效问题时先对比这两处。
二、核心参数(Core)
| 参数 | 默认值 | 说明 |
|---|---|---|
scoold.app_name | Scoold | 站点名称,显示在页面标题、邮件签名等处 |
scoold.para_endpoint | http://localhost:8080 | Para 后端地址。容器编排下为 http://para:8080;托管 Para 用 https://paraio.com。requires restart |
scoold.para_access_key | app:scoold | 接入的 Para 应用标识,多站点共享 Para 时各站点用不同值。requires restart |
scoold.para_secret_key | x | Para 应用密钥,autoinit 首启时自动生成并回写配置文件。requires restart |
scoold.app_secret_key | (空) | Scoold 自身密钥,用于签发 API Token(JWT)与免密登录令牌,须与 Para 密钥不同,长度不少于 32 字符 |
scoold.host_url | http://localhost:8000 | 对外访问地址,影响邮件内链接与 OAuth 回调。生产必须改为对外真实地址(如 https://qa.example.com) |
scoold.port | 8000 | Scoold 监听端口。requires restart |
scoold.admins | (空) | 管理员名单,逗号分隔邮箱或 Para 用户 ID。初始化向导创建的管理员会自动写入 |
scoold.env | development | 运行环境标识,生产置 production。requires restart |
scoold.context_path | / | 子路径部署(如 https://example.com/qa/ 下运行)。requires restart |
scoold.is_default_space_public | true | 默认空间是否匿名可读。改为 false 即整站私有化——登录后才能看内容 |
scoold.onboarding_enabled | true | 初始化向导开关,向导完成或管理员创建后自动关闭(实测日志见 onboarding_enabled was modified) |
💡 技术拓展:
host_url与port的区别——port是进程实际监听的套接字端口(容器内 8000),host_url是用户浏览器可达的对外地址(经反代/端口映射后可能是 443)。证书校验、OAuth 回调、邮件链接全部基于host_url,两者不一致是「登录后跳转异常」「邮件链接 404」类问题的第一排查点。
三、内容与社区治理参数(Posts / Spaces)
| 参数 | 默认值 | 说明 |
|---|---|---|
scoold.posts_need_approval | false | 新帖是否需版主审核后可见 |
scoold.answers_approved_by | default | 谁能采纳回答:default(提问者+版主)/ admins / moderators |
scoold.new_users_can_comment | true | 声望低于 100 的新用户能否评论 |
scoold.rate_limited_posting_enabled | true | 发帖限速:问题 2 次/分钟、30 次/小时、50 次/天;回答 2 次/分钟、50 次/小时、100 次/天 |
scoold.max_post_length | 20000 | 帖子正文最大长度(字符) |
scoold.max_tags_per_post | 5 | 单问题标签数上限 |
scoold.min_tags_per_post | 0 | 标签数下限,0 表示可用默认标签 |
scoold.default_question_tag | (空) | 无标签时自动附加的默认标签 |
scoold.tag_creation_allowed | true | 普通用户能否新建标签,关闭后仅管理员/版主可建 |
scoold.max_replies_per_post | 500 | 单问题回答数上限 |
scoold.max_comments_per_id | 1000 | 单帖评论数上限 |
scoold.max_comment_length | 600 | 评论最大长度 |
scoold.delete_protection_enabled | true | 已有回答与互动的问题,作者不可自行删除 |
scoold.merge_question_bodies | true | 合并重复问题时是否合并正文 |
scoold.max_similar_posts | 7 | 提问页侧栏相似问题展示数 |
scoold.nearme_feature_enabled | false | 地理定位与「附近问题」功能开关 |
Spaces 相关:scoold.is_default_space_public(见上表)决定默认空间的可见性;空间的新建与成员管理在管理面板 Admin → Spaces 操作,成员归属变更会即时影响该用户可见的问题范围(实测新注册用户默认加入 scooldspace:default 空间)。
四、安全参数(Security)
| 参数 | 默认值 | 说明 |
|---|---|---|
scoold.security.allow_unverified_emails | false | 注册后是否跳过邮箱验证直接激活。true 适合无 SMTP 的内部试点,实测开关后新用户注册即登录成功;公开站点保持 false |
scoold.approved_domains_for_signups | (空) | 允许注册的邮箱域名白名单,逗号分隔,空=不限制 |
scoold.session_timeout | 86400 | 会话 Cookie 有效期(秒),默认 24h |
scoold.jwt_expires_after | 86400 | 会话 JWT 有效期(秒),默认 24h |
scoold.personal_token_expires_after | 604800 | 个人 API Token 默认有效期(秒),默认 168h;设为 0 时由用户在界面上自选有效期 |
scoold.security.one_session_per_user | true | 单点会话:新登录踢掉旧会话;关闭则允许多设备同时在线 |
scoold.min_password_length | 8 | 密码最小长度 |
scoold.min_password_strength | 2 | 密码强度档位:1 弱 / 2 强 / 3 很强。实测默认值下 q1w2e3r4 类键盘序列密码注册被拒(报 Password is not strong enough.),内部试点可降为 1,详见部署篇排障实录 |
scoold.pass_reset_timeout | 1800 | 密码重置令牌有效期(秒),默认 30 分钟 |
scoold.signup_captcha_site_key / ..._secret_key | (空) | reCAPTCHA v3 密钥对,配置后注册与找回密码页启用人机校验 |
scoold.profile_anonimity_enabled | false | 是否允许用户匿名化自己的资料(隐藏姓名头像) |
安全响应头组(均默认开启,实测响应头与配置一致):scoold.csp_header_enabled(CSP,支持 {{nonce}} 占位符)、scoold.hsts_header_enabled(HSTS)、scoold.framing_header_enabled(X-Frame-Options)、scoold.xss_header_enabled(X-XSS-Protection)、scoold.contenttype_header_enabled(X-Content-Type-Options)、scoold.referrer_header_enabled(Referrer-Policy)、scoold.permissions_header_enabled(Permissions-Policy)。反代接入第三方脚本时用 scoold.csp_connect_sources / csp_frame_sources / csp_font_sources 追加 CSP 白名单,避免整段覆盖默认 CSP。
五、邮件参数(Emails)
| 参数 | 默认值 | 说明 |
|---|---|---|
scoold.mail.host | (空) | SMTP 服务器地址,空则邮件功能整体禁用 |
scoold.mail.port | 587 | SMTP 端口 |
scoold.mail.username / scoold.mail.password | (空) | SMTP 认证凭据 |
scoold.mail.tls / scoold.mail.ssl | true / false | 加密方式(STARTTLS 与隐式 SSL 二选一) |
scoold.support_email | contact@scoold.com | 发件与联系地址,务必改为自己的域名邮箱 |
scoold.reply_emails_enabled | false | 用户级默认值:是否接收回答通知 |
scoold.comment_emails_enabled | false | 用户级默认值:是否接收评论通知 |
scoold.favtags_emails_enabled | false | 用户级默认值:是否接收收藏标签的新内容通知 |
scoold.notification_emails_allowed | true | 站级总开关:关闭后所有通知邮件停发 |
scoold.newpost_emails_allowed | true | 站级开关:每个新问题都通知(小站点可开,大站点慎用) |
scoold.summary_email_items | 25 | 内容摘要邮件包含的条目数 |
邮件配置的正确性可用初始化向导第 4 步的 Test Connection 按钮验证,或管理面板 SMTP 设置页重测。未配置 SMTP 时注册类邮件发不出去——这是「注册后无法登录」排障的高频根因(见部署篇 6.3 节)。
六、声望与激励参数(Reputation and Rewards)
| 参数 | 默认值 | 说明 |
|---|---|---|
scoold.rep_for_accepted_answer | 15 | 回答被采纳的声望值 |
scoold.rep_for_accepted_question | 2 | 提问被采纳后提问者获得值 |
scoold.rep_for_upvote | 10 | 被投赞同票 |
scoold.rep_for_downvote | 2 | 被投反对票(扣分) |
scoold.rep_for_favorites | 5 | 被收藏 |
scoold.rep_for_deleting_post | -10? | 以管理面板实际展示为准,删除帖子类惩罚值 |
scoold.rep_required_for_voteup | 60 | 投票所需最低声望 |
scoold.rep_required_for_flagit | 20 | 举报所需最低声望 |
scoold.rep_required_for_comment | 100 | 评论所需最低声望(配合 new_users_can_comment 生效) |
实测行为印证声望规则:管理员对注册用户的回答投赞同票、采纳回答后,该用户声望即时累加;作者给自己帖子投票被端点拒绝(返回 false),自投票不产生声望。
七、Para 侧参数
Para 的配置文件 /para/application.conf 前缀为 para.,首次部署保持空模板即使用内嵌 H2 + Lucene。需要关注的Para 参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
para.root_access_key / para.root_secret_key | 首启自动生成 | Para 超级管理员密钥(autoinit 会把生成值回写到挂载文件),可调用 Para 全部管理 API |
para.environment | development | Para 运行环境,生产置 production |
para.storage | H2DAO | 存储实现,可切换 RDAO(Redis)/SQLDAO(PostgreSQL 等) |
para.search | LuceneSearch | 搜索实现,可切换 ElasticSearch 等 |
para.port | 8080 | Para 监听端口 |
Para 的全部配置项可通过免签名端点在线查阅(返回各参数默认值与说明,实测节选):
curl -sS http://localhost:8132/v1/_config/options
实测回显(节选):
{"Core":{"para.app_name":{"defaultValue":"para","description":"The formal name of the web application.","type":"String","tags":""},"para.root_secret_override":{"defaultValue":"","description":"Overrides the secret key for the root Para app `app:para` once, upo...
存储切换要点:从内嵌 H2 切换到 PostgreSQL 时,除改 para.storage 外还需补充 JDBC 连接参数并在 Para 库目录初始化表结构;切换属数据迁移操作,先做备份(部署篇 5.2 节),并注意 Scoold 与 Para 的版本配套关系不变。
八、自定义品牌参数(Customization)
| 参数 | 默认值 | 说明 |
|---|---|---|
scoold.default_theme | light | 界面主题,向导第 3 步的暗色开关即写此项 |
scoold.default_language_code | en | 默认界面语言(两位语言码) |
scoold.application_stylesheet | (空) | 全站自定义 CSS,注入位置在 head 尾部 |
scoold.custom_js / scoold.custom_head_tags | (空) | 自定义脚本 / 自定义 head 标签(如统计代码、favicon) |
scoold.logo_url / scoold.favicon_url | 内置 | 品牌图与收藏图标地址 |
scoold.nav_links | 内置 | 导航栏自定义链接配置 |
scoold.privacy_policy_url / scoold.terms_conditions_url | 内置 | 隐私政策与条款自定义链接 |
九、参数速查与在线管理
- 管理面板在线改:Admin → Configuration 按
scoold.*全量列出可编辑参数(含类型标注与说明),保存即生效并留审计日志;Boolean 型参数直接用开关控件。 - API 查询默认值:Para 侧
GET /v1/_config/options返回完整参数目录(2.4 免签名端点之一),适合脚本比对当前值与默认值。 - 两处配置的优先级:管理面板在线值 > 配置文件值。改配置文件后若未见效,先检查管理面板是否存过同名参数。
配套阅读:部署全流程见 《Scoold 1.70 Docker Compose 部署指南》,组件选型背景见 《Scoold 1.70 介绍与选型指南》,接口级操作见 《Scoold 1.70 REST API 使用详解》。