Task Keeper 3.112 配置参数详解
Task Keeper 3.112 配置参数详解:application.conf 全部键值、HOCON 环境变量覆盖、生产配置模板与 JVM 限堆验证。
Task Keeper 3.112 配置参数详解
目标:逐项讲清 Task Keeper(PiGa)v3.112 的全部运行配置——主配置文件
application.conf每个键的含义、默认值与修改方式,并给出经过实测的生产配置模板。基于 Ubuntu 22.04 + MariaDB 10.6 裸机部署形态实测整理,配置项在容器形态下同样适用(见文中环境变量覆盖说明)。
一、环境信息
- 应用版本:Task Keeper v3.112(Play Framework 2.8.20 / Scala 2.12 / Slick 3.3)
- 配置文件:
/opt/task-keeper/conf/application.conf(HOCON 格式) - 参考环境:Ubuntu 22.04.5 LTS、OpenJDK 11.0.32.1、MariaDB 10.6.23
- 演示账号:admin / q1w2e3r4
二、前置条件
本文所有示例假设已按本专栏《Ubuntu 22.04 安装 Task Keeper 3.112 指南》完成安装,服务由 systemd 托管(systemctl status task-keeper 可查)。容器部署形态下配置文件的修改方式不同,见 3.2。
三、参数查看与修改方式
3.1 裸机/systemd 形态:直接编辑文件
配置文件位于安装目录下 conf/application.conf。修改后重启生效:
vim /opt/task-keeper/conf/application.conf # 或 sed 批量替换
systemctl restart task-keeper
验证配置是否被加载(应用启动日志会打印数据库连接信息):
journalctl -u task-keeper --no-pager | grep -iE "secret|database|initialized" | tail -5
3.2 容器形态:环境变量覆盖 + 文件挂载
application.conf 中带 ${?XXX} 的键(play.http.secret.key、db.default.url)可通过环境变量覆盖;其余键需要把自定义文件挂载到容器内 /app/conf/application.conf(只读)。具体操作见《Task Keeper 3.112 Docker Compose 部署指南》第七节。
四、参数总览
v3.112 的 application.conf 默认内容(实测自 release 包):
# Note: Error logs can be found in /tmp/piga-logs
# Secret key
# ~~~~~
play.http.secret.key="changeme"
# The application languages
# ~~~~~
play.i18n.langs = ["en"]
akka.http.parsing.max-uri-length = 16k
# Session configuration
# ~~~~~
play.http.session.maxAge = 60d
# Database configuration
# ~~~~~
# MySQL database:
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/piga?user=mysqluser&password=mysqlpassword"
db.default.slick.profile = "slick.jdbc.MySQLProfile$"
# Application-specific configuration
# ~~~~~
app.setup.defaultPassword = "changeme"
按功能分为四组:安全密钥、国际化与 HTTP、会话、数据库与应用专属。逐组详解如下。
五、核心参数分类详解
5.1 安全密钥组
| 参数 | 默认值 | 实测建议 | 说明 |
|---|---|---|---|
play.http.secret.key | changeme | 32 位随机串 | Play 会话 Cookie 签名密钥,同时用作 External API 的 appSecret |
app.setup.defaultPassword | changeme | 自定义强密码 | 仅用于 bin/server -DcreateAdminUser 首次创建 admin 时的初始密码 |
play.http.secret.key 是全系统唯一根密钥:既签发会话 Cookie,又作为 External API 的共享密钥(详见《Task Keeper 3.112 API 使用详解》)。生产环境必须改成随机值,生成方式:
head -c 32 /dev/urandom | base64 | tr -dc 'a-zA-Z0-9' | head -c 32
实测输出示例:
OQnYaBOXBc6lLC4IFudvdoG46XLm9f8I
app.setup.defaultPassword 只在初始化时读取一次,之后 admin 密码以哈希存库。实测:若 admin 已存在,再次执行 -DcreateAdminUser 会用当前配置里的密码重建账号(可用于密码重置,需先停服,见《Ubuntu 22.04 安装 Task Keeper 3.112 指南》7.3)。
5.2 国际化与 HTTP 组
| 参数 | 默认值 | 说明 |
|---|---|---|
play.i18n.langs | ["en"] | 界面语言列表,release 包内仅附带 messages(en)、messages.nl、messages.nl-months(荷兰语)。无官方中文语言包,改 ["nl"] 可切换荷兰语 |
akka.http.parsing.max-uri-length | 16k | HTTP 请求 URI 最大长度。默认 8k,官方提到 16k 是为了容纳较长的 External API URL(如 inserttask 的 base64 内容) |
实测当前值:
grep -E "i18n.langs|max-uri-length" /opt/task-keeper/conf/application.conf
输出:
play.i18n.langs = ["en"]
akka.http.parsing.max-uri-length = 16k
max-uri-length 默认已 16k,一般无需再调;如果你的 External API 报 414 URI Too Long,可进一步提到 32k。
5.3 会话组
| 参数 | 默认值 | 说明 |
|---|---|---|
play.http.session.maxAge | 60d | 会话 Cookie 有效期(60 天)。浏览器关闭后会话仍有效,直到过期 |
改为更短会话(如 7 天):
play.http.session.maxAge = 7d
修改后重启服务生效。所有已签发的 Cookie 会在到期后失效,用户需重新登录。
5.4 数据库组
| 参数 | 默认值 | 说明 |
|---|---|---|
db.default.driver | com.mysql.jdbc.Driver | JDBC 驱动类。release 包 classpath 内含 MySQL Connector/J 5.1.36,兼容 MariaDB |
db.default.url | jdbc:mysql://localhost/piga?user=mysqluser&password=mysqlpassword | JDBC 连接串,含库名、账号、密码 |
db.default.slick.profile | slick.jdbc.MySQLProfile$ | Slick 方言。MariaDB/MySQL 用 MySQLProfile;H2 用 H2Profile$、SQLite 用 SQLiteProfile$ |
MariaDB 实测连接串(对应 4.2 创建的库与账号):
db.default.url="jdbc:mysql://localhost/piga?user=root&password=q1w2e3r4"
💡 技术拓展:JDBC 驱动选型。release 包
lib/目录内含三种数据库驱动——
数据库 驱动 jar slick profile 适用场景 MariaDB / MySQL mysql-connector-java-5.1.36.jarMySQLProfile$生产(官方推荐) H2 h2-1.4.195.jarH2Profile$嵌入式试用 SQLite sqlite-jdbc-3.8.11.2.jarSQLiteProfile$嵌入式试用 本文按官方推荐采用 MariaDB;试用场景可切换 H2/SQLite 免去独立数据库。
六、生产配置模板
以下模板适用于 2GB 内存、单机部署、生产使用 的场景,已通过 systemd 托管 + JVM 限堆实测:
/opt/task-keeper/conf/application.conf:
# Note: Error logs can be found in /tmp/piga-logs
# Secret key
play.http.secret.key="OQnYaBOXBc6lLC4IFudvdoG46XLm9f8I"
# The application languages
play.i18n.langs = ["en"]
akka.http.parsing.max-uri-length = 16k
# Session configuration
play.http.session.maxAge = 7d
# Database configuration
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/piga?user=root&password=q1w2e3r4"
db.default.slick.profile = "slick.jdbc.MySQLProfile$"
# Application-specific configuration
app.setup.defaultPassword = "q1w2e3r4"
配套 systemd 单元 /etc/systemd/system/task-keeper.service(含 JVM 限堆 256–512MB):
[Unit]
Description=Task Keeper (PiGa) list editor server
After=network.target mariadb.service
Requires=mariadb.service
[Service]
Type=simple
WorkingDirectory=/opt/task-keeper
ExecStart=/opt/task-keeper/bin/server
Environment=JAVA_OPTS="-Xms256m -Xmx512m"
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
部署后验证 JVM 参数生效:
jps -lv | grep -v Jps
实测输出:
4969 play.core.server.ProdServerStart -Xms256m -Xmx512m -Duser.dir=/opt/task-keeper-3.112
七、常见问题
7.1 修改配置后没生效
Task Keeper 只在启动时读取 application.conf,改完必须重启:
systemctl restart task-keeper
systemctl is-active task-keeper
实测输出 active。若仍未生效,检查配置文件的 HOCON 语法(常见错误:字符串忘了加双引号、= 两侧空格不一致不会报错但建议统一风格)。
7.2 容器形态下如何覆盖 app.setup.defaultPassword
该键没有 ${?XXX} 环境变量占位,必须挂载自定义 application.conf 文件到容器 /app/conf/application.conf(只读),详见《Task Keeper 3.112 Docker Compose 部署指南》4.1。
7.3 界面语言能改成中文吗
官方 release 包仅提供英语(默认)与荷兰语(messages.nl、messages.nl-months)语言文件,无中文语言包。如需中文界面,需自行翻译 conf/messages 系列文件并重启服务。
7.4 如何查看当前生效的连接池/线程数
Task Keeper 使用 Play 默认 HikariCP 配置(连接池默认 10 连接),未在 application.conf 中暴露,通常无需调整。若需修改可在 application.conf 追加 db.default.hikaricp.maximumPoolSize=20 等 HOCON 键,重启后生效。
八、参考链接
- 官方默认配置(release 包内):
conf/application.conf - Play Framework 配置文档:https://www.playframework.com/documentation/2.8.x/Configuration
- 本专栏《Ubuntu 22.04 安装 Task Keeper 3.112 指南》
- 本专栏《Task Keeper 3.112 Docker Compose 部署指南》
- 本专栏《Task Keeper 3.112 API 使用详解》