Scoold 1.70 配置参数详解

Scoold 1.70 与 Para 1.57 全量配置参数逐项详解:配置体系三层优先级、Core/Posts/Security/Emails/声望/Para 侧/品牌七大分类核心参数表、管理面板在线修改与配置文件的优先级关系、autoinit 回写机制与实测审计日志。

Scoold自托管Java2026/10/30

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_nameScoold站点名称,显示在页面标题、邮件签名等处
scoold.para_endpointhttp://localhost:8080Para 后端地址。容器编排下为 http://para:8080;托管 Para 用 https://paraio.com。requires restart
scoold.para_access_keyapp:scoold接入的 Para 应用标识,多站点共享 Para 时各站点用不同值。requires restart
scoold.para_secret_keyxPara 应用密钥,autoinit 首启时自动生成并回写配置文件。requires restart
scoold.app_secret_key(空)Scoold 自身密钥,用于签发 API Token(JWT)与免密登录令牌,须与 Para 密钥不同,长度不少于 32 字符
scoold.host_urlhttp://localhost:8000对外访问地址,影响邮件内链接与 OAuth 回调。生产必须改为对外真实地址(如 https://qa.example.com)
scoold.port8000Scoold 监听端口。requires restart
scoold.admins(空)管理员名单,逗号分隔邮箱或 Para 用户 ID。初始化向导创建的管理员会自动写入
scoold.envdevelopment运行环境标识,生产置 production。requires restart
scoold.context_path/子路径部署(如 https://example.com/qa/ 下运行)。requires restart
scoold.is_default_space_publictrue默认空间是否匿名可读。改为 false 即整站私有化——登录后才能看内容
scoold.onboarding_enabledtrue初始化向导开关,向导完成或管理员创建后自动关闭(实测日志见 onboarding_enabled was modified)

💡 技术拓展:host_url 与 port 的区别——port 是进程实际监听的套接字端口(容器内 8000),host_url 是用户浏览器可达的对外地址(经反代/端口映射后可能是 443)。证书校验、OAuth 回调、邮件链接全部基于 host_url,两者不一致是「登录后跳转异常」「邮件链接 404」类问题的第一排查点。

三、内容与社区治理参数(Posts / Spaces)

参数默认值说明
scoold.posts_need_approvalfalse新帖是否需版主审核后可见
scoold.answers_approved_bydefault谁能采纳回答:default(提问者+版主)/ admins / moderators
scoold.new_users_can_commenttrue声望低于 100 的新用户能否评论
scoold.rate_limited_posting_enabledtrue发帖限速:问题 2 次/分钟、30 次/小时、50 次/天;回答 2 次/分钟、50 次/小时、100 次/天
scoold.max_post_length20000帖子正文最大长度(字符)
scoold.max_tags_per_post5单问题标签数上限
scoold.min_tags_per_post0标签数下限,0 表示可用默认标签
scoold.default_question_tag(空)无标签时自动附加的默认标签
scoold.tag_creation_allowedtrue普通用户能否新建标签,关闭后仅管理员/版主可建
scoold.max_replies_per_post500单问题回答数上限
scoold.max_comments_per_id1000单帖评论数上限
scoold.max_comment_length600评论最大长度
scoold.delete_protection_enabledtrue已有回答与互动的问题,作者不可自行删除
scoold.merge_question_bodiestrue合并重复问题时是否合并正文
scoold.max_similar_posts7提问页侧栏相似问题展示数
scoold.nearme_feature_enabledfalse地理定位与「附近问题」功能开关

Spaces 相关:scoold.is_default_space_public(见上表)决定默认空间的可见性;空间的新建与成员管理在管理面板 Admin → Spaces 操作,成员归属变更会即时影响该用户可见的问题范围(实测新注册用户默认加入 scooldspace:default 空间)。

四、安全参数(Security)

参数默认值说明
scoold.security.allow_unverified_emailsfalse注册后是否跳过邮箱验证直接激活。true 适合无 SMTP 的内部试点,实测开关后新用户注册即登录成功;公开站点保持 false
scoold.approved_domains_for_signups(空)允许注册的邮箱域名白名单,逗号分隔,空=不限制
scoold.session_timeout86400会话 Cookie 有效期(秒),默认 24h
scoold.jwt_expires_after86400会话 JWT 有效期(秒),默认 24h
scoold.personal_token_expires_after604800个人 API Token 默认有效期(秒),默认 168h;设为 0 时由用户在界面上自选有效期
scoold.security.one_session_per_usertrue单点会话:新登录踢掉旧会话;关闭则允许多设备同时在线
scoold.min_password_length8密码最小长度
scoold.min_password_strength2密码强度档位:1 弱 / 2 强 / 3 很强。实测默认值下 q1w2e3r4 类键盘序列密码注册被拒(报 Password is not strong enough.),内部试点可降为 1,详见部署篇排障实录
scoold.pass_reset_timeout1800密码重置令牌有效期(秒),默认 30 分钟
scoold.signup_captcha_site_key / ..._secret_key(空)reCAPTCHA v3 密钥对,配置后注册与找回密码页启用人机校验
scoold.profile_anonimity_enabledfalse是否允许用户匿名化自己的资料(隐藏姓名头像)

安全响应头组(均默认开启,实测响应头与配置一致):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.port587SMTP 端口
scoold.mail.username / scoold.mail.password(空)SMTP 认证凭据
scoold.mail.tls / scoold.mail.ssltrue / false加密方式(STARTTLS 与隐式 SSL 二选一)
scoold.support_emailcontact@scoold.com发件与联系地址,务必改为自己的域名邮箱
scoold.reply_emails_enabledfalse用户级默认值:是否接收回答通知
scoold.comment_emails_enabledfalse用户级默认值:是否接收评论通知
scoold.favtags_emails_enabledfalse用户级默认值:是否接收收藏标签的新内容通知
scoold.notification_emails_allowedtrue站级总开关:关闭后所有通知邮件停发
scoold.newpost_emails_allowedtrue站级开关:每个新问题都通知(小站点可开,大站点慎用)
scoold.summary_email_items25内容摘要邮件包含的条目数

邮件配置的正确性可用初始化向导第 4 步的 Test Connection 按钮验证,或管理面板 SMTP 设置页重测。未配置 SMTP 时注册类邮件发不出去——这是「注册后无法登录」排障的高频根因(见部署篇 6.3 节)。

六、声望与激励参数(Reputation and Rewards)

参数默认值说明
scoold.rep_for_accepted_answer15回答被采纳的声望值
scoold.rep_for_accepted_question2提问被采纳后提问者获得值
scoold.rep_for_upvote10被投赞同票
scoold.rep_for_downvote2被投反对票(扣分)
scoold.rep_for_favorites5被收藏
scoold.rep_for_deleting_post-10?以管理面板实际展示为准,删除帖子类惩罚值
scoold.rep_required_for_voteup60投票所需最低声望
scoold.rep_required_for_flagit20举报所需最低声望
scoold.rep_required_for_comment100评论所需最低声望(配合 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.environmentdevelopmentPara 运行环境,生产置 production
para.storageH2DAO存储实现,可切换 RDAO(Redis)/SQLDAO(PostgreSQL 等)
para.searchLuceneSearch搜索实现,可切换 ElasticSearch 等
para.port8080Para 监听端口

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_themelight界面主题,向导第 3 步的暗色开关即写此项
scoold.default_language_codeen默认界面语言(两位语言码)
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 使用详解》。