User configuration: location, levels and activation
Distinguish three configuration layers
| Layer | Where to edit | Activation |
|---|---|---|
| Platform startup settings | IJOB_HOME/application.properties | Use this instance’s ijob.sh / ijob.cmd restart; the Docker instance launcher recreates its containers |
| Host/container settings | Environment variables and this home's compose.yaml | Restart the process or recreate containers |
| Tasks/jobs/resources/schedules | Management pages | Save/publish/enable as documented; usually no platform restart |
The external file overrides bundled defaults, but command-line arguments, JVM properties and applicable environment variables may override it. Maintain each key in one place. Prefer / for Windows paths in properties; backslashes require properties escaping. Replace placeholder paths before use.
Read by risk and purpose
| Level | Recommendation | Entry point |
|---|---|---|
| A Common | Users may adjust for their workload | Common, routing, plugins |
| B Advanced | Adjust after understanding capacity and dependencies | Scheduling/retention, capacity, deployment/Agent |
| C Controlled | Change through backup, implementation and verification | Controlled settings and operations workflows |
| D Internal | Not recommended as ordinary user settings | Internal appendix |
The complete catalog retains 254 entries with sources, defaults and levels; users do not need to fill every entry. Setup overrides some source defaults, including native port 18080, group default and enabled scheduling. Source YAML is not the installed configuration.
Change one setting safely
- Identify the node, program version and IJOB_HOME; back up private configuration.
- Read scope/dependencies and edit only the required keys without duplicates.
- Run the checker below from the bundle directory, then restart as documented for the platform.
- Verify the effect using the dashboard or a small task; restore the old config and restart if necessary.
java -jar ijob-setup-tool-1.0.0.jar settings --lang en
java -jar ijob-setup-tool-1.0.0.jar check-settings --home /absolute/ijob-home --lang en
Use your absolute Windows path when applicable. The checker lists/checks formats, duplicate keys and selected bounds for the following 54 settings without printing secrets. It does not establish database connectivity, valid role coverage, routing eligibility, directory permissions or validation of all 254 entries. Other advanced settings still require startup validation and actual exercises. See each chapter for empty-list semantics.
| Setting | Type | Fresh-install default | Description |
|---|---|---|---|
server.address |
text | 127.0.0.1 | Native listen address; Docker keeps 0.0.0.0 inside the container. |
server.port |
port | 18080 | Native HTTP port; Docker keeps 8080 and changes the published host port. |
spring.datasource.url |
text | generated | Database URL created during setup. Changing database products requires a migration plan. |
spring.datasource.username |
text | generated | Database account; not used for SQLite. Never put credentials in a URL. |
spring.datasource.password |
secret | generated | Edit only in the private application.properties; never pass on the command line. |
spring.datasource.hikari.maximum-pool-size |
positive-int | 4 | Connection pool size; coordinate with the database connection budget. |
app.schedule.enabled |
boolean | true | Global schedule scanner; individual schedules still need to be enabled in the UI. |
app.plugin.etl.enabled |
boolean | true | Enable ETL tasks. |
app.plugin.batch-etl.enabled |
boolean | true | Enable batch ETL tasks. |
app.plugin.local-jar.enabled |
boolean | false | Enable trusted Local JAR plugins only after preparing their directory and dependencies. |
app.plugin.local-jar.root-directory |
text | empty | Absolute plugin directory on the executing node; Docker requires an explicit mount. |
app.resource-browser.local-roots |
text | empty | Comma-separated absolute roots allowed for browsing LOCAL resource drafts. |
app.http.connect-timeout |
duration | 5s | Connection timeout for the shared HTTP client, not every external plugin. |
app.http.read-timeout |
duration | 30s | Read timeout for the shared HTTP client. |
app.notification.locale |
notification-locale | en | Default notification language; notification-specific choices can override it. |
app.event.ingress.enabled |
boolean | false | Enable event ingress; authentication and EVENT_PUBLISH permission still apply. |
app.retention.enabled |
boolean | false | Enable history retention only after reviewing the retention rules. |
app.retention.dry-run |
boolean | true | Keep true for a dry run; false permits deletion when retention is enabled. |
ijob.logging.max-file-size |
size | 10MB | Native log rotation size; Docker logging is configured in Compose. |
ijob.logging.max-history |
positive-int | 14 | Native log archive retention in days. |
ijob.logging.total-size-cap |
size | 200MB | Native archive size cap; may remove archives before the day limit. |
spring.web.locale |
locale | en | Server fallback locale; Accept-Language and frontend preference also apply. |
app.scheduling.pool-size |
positive-int | 8 | Internal scheduled-scanner threads; not the maximum business-task concurrency. |
app.runtime.instance-name |
text | generated | Node identity; use distinct names in a cluster for traceability. |
app.runtime.roles |
roles | API,SCHEDULER,WORKER,MAINTENANCE | API/SCHEDULER/WORKER/MAINTENANCE responsibilities; retain coverage of required roles. |
app.runtime.groups |
groups | default | Worker groups match published definitions; empty worker groups do not mean all groups. |
app.runtime.allowed-task-ids |
ids | empty | Task IDs eligible as root trigger targets; jointly restrict scope with the job allowlist. |
app.runtime.allowed-job-ids |
ids | empty | Job IDs eligible as root trigger targets; not an individual authorization list for every descendant task. |
app.runtime.work-queue.max-inflight-roots |
positive-int | 20 | In-flight root-run limit per node; size with executors, concurrency controls and capacity. |
app.schedule.zone-id |
zone | Asia/Shanghai | Default scheduling time zone; distinct from display time zone. Check individual schedules. |
app.schedule.misfire-policy |
misfire | FIRE_ONCE | Default missed-fire policy SKIP/FIRE_ONCE/CATCH_UP_BOUNDED; may create real catch-up runs. |
app.schedule.misfire-grace |
nonnegative-duration | 60s | Grace period for missed fires; verify alongside catch-up policy. |
app.schedule.max-catchup-window |
duration | 24h | Maximum catch-up lookback; bounds recovery bursts. |
app.schedule.max-catchup-count |
positive-int | 10 | Maximum catch-up count; applies with the lookback window. |
app.retention.interval |
duration | 1h | History cleanup: Run interval. Validate against load, recovery or cleanup policy before tuning. |
app.retention.batch-size |
positive-int | 500 | History cleanup: Batch size. Validate against load, recovery or cleanup policy before tuning. |
app.retention.max-batches-per-run |
positive-int | 10 | History cleanup: Maximum batches per run. Validate against load, recovery or cleanup policy before tuning. |
app.retention.execution |
duration | 90d | Execution history retention duration; applies with cleanup enabled and dry-run settings. |
app.retention.notification |
duration | 90d | Notification history retention duration; applies with cleanup enabled and dry-run settings. |
app.retention.event |
duration | 180d | Event history retention duration; applies with cleanup enabled and dry-run settings. |
app.retention.app-run |
duration | 30d | Node-run history retention duration; applies with cleanup enabled and dry-run settings. |
app.retention.audit |
duration | 90d | Audit history retention duration; applies with cleanup enabled and dry-run settings. |
app.execution.shutdown-timeout |
duration | 30s | Executor shutdown wait; coordinate with container grace and Spring shutdown limits. |
app.plugin.event.enabled |
boolean | true | event plugin switch on this node; review published tasks and active work before disabling. |
app.plugin.script.enabled |
boolean | true | script plugin switch on this node; review published tasks and active work before disabling. |
app.plugin.sql.enabled |
boolean | true | sql plugin switch on this node; review published tasks and active work before disabling. |
app.plugin.file-transfer.enabled |
boolean | true | file-transfer plugin switch on this node; review published tasks and active work before disabling. |
app.plugin.api-call.enabled |
boolean | true | api-call plugin switch on this node; review published tasks and active work before disabling. |
app.plugin.push.enabled |
boolean | true | push plugin switch on this node; review published tasks and active work before disabling. |
app.plugin.data-check.enabled |
boolean | true | data-check plugin switch on this node; review published tasks and active work before disabling. |
app.plugin.server-monitor.enabled |
boolean | true | server-monitor plugin switch on this node; review published tasks and active work before disabling. |
sa-token.timeout |
session-seconds | 1800 | Total session token lifetime in seconds; tune to session policy. |
sa-token.active-timeout |
session-seconds | 300 | Idle session timeout in seconds; distinct from total lifetime. |
app.notify.email.enabled |
boolean | true | Email channel implementation switch, enabled when absent; SMTP and credentials belong in mail-channel UI. |
Launch settings and database connections
Program/data paths and launch language belong in instance.conf, separate from application.properties. Platform DB properties apply to standalone and cluster nodes; plugin business DBs are configured as resources. See Platform database.