x
Skip to main content

Settings Changes from V1 to V2

This page documents all settings.yml changes between V1 and V2.


New Settings in V2

PDF Signature Validation

Entire new section added:

security:
validation: # NEW in V2
trust:
serverAsAnchor: true
useSystemTrust: true
useMozillaBundle: true
useAATL: false # Adobe Approved Trust List
useEUTL: false # EU Trusted List
allowAIA: false
aatl:
url: https://trustlist.adobe.com/tl.pdf
eutl:
lotlUrl: https://ec.europa.eu/tools/lotl/eu-lotl.xml
acceptTransitional: false
revocation:
mode: none # Options: none, ocsp, crl, ocsp+crl
hardFail: false

What it does: Comprehensive PDF signature validation with configurable trust chains.

Migration: No action needed, defaults are safe for most users.

Learn more: Certificate Signing | Security Configuration


Server Certificate Management

New section added:

system:
serverCertificate: # NEW in V2
enabled: true
organizationName: Stirling-PDF
validity: 365 # days
regenerateOnStartup: false

What it does: Auto-generates signing certificates for "Sign with Stirling-PDF" feature.

Migration: Works automatically with defaults.

Learn more: Certificate Signing | Certificate Configuration


Split Deployment Support

New settings added:

system:
corsAllowedOrigins: [] # NEW in V2
frontendUrl: '' # NEW in V2

What it does:

  • corsAllowedOrigins: Allow frontend from different origin
  • frontendUrl: Base URL for generating invite links

Migration: Leave empty for unified deployment (default).

Example split deployment:

system:
corsAllowedOrigins: ['https://pdf.example.com']
frontendUrl: 'https://pdf.example.com'

Learn more: Docker Installation - Split Mode


Enhanced JWT Configuration

Changed settings:

# V1 (OLD)
security:
jwt:
enabled: false
keyCleanup: false
secureCookie: true # REMOVED

# V2 (NEW)
security:
jwt:
persistence: true # replaces 'enabled'
enableKeyRotation: true # NEW
enableKeyCleanup: true # replaces 'keyCleanup'
keyRetentionDays: 7

Migration:

  • Replace jwt.enabled with jwt.persistence
  • Replace jwt.keyCleanup with jwt.enableKeyCleanup
  • Add jwt.enableKeyRotation: true
  • Remove jwt.secureCookie (no longer used)

Email Invites

New setting added:

mail:
enableInvites: false # NEW in V2

What it does: Enable email invitations for user registration.

Requirements:

  • mail.enabled: true
  • security.enableLogin: true

Migration: Set to true if you want invite functionality.


UI Logo Customization

New setting added:

ui:
logoStyle: classic # NEW in V2 - Options: 'classic' or 'modern'

What it does: Choose between classic S icon or modern minimalist logo.

Migration: Leave as classic (default) or set to modern for new look.


Removed Settings in V2

UI Settings Moved to In-App Configuration

V1 settings (REMOVED):

ui:
appName: '' # REMOVED
homeDescription: '' # REMOVED

Migration:

  1. Enable login: SECURITY_ENABLELOGIN=true
  2. Log in as admin
  3. Go to Settings in UI
  4. Configure app name and description there

Why: In-app settings are more user-friendly and apply immediately.

Learn more: UI Customisation


Google Drive Integration

V1 settings (REMOVED):

premium:
proFeatures:
googleDrive: # REMOVED in V2
enabled: false
clientId: ''
apiKey: ''
appId: ''

Migration: Remove this section from your settings.yml.

Why: Feature discontinued in V2.


Database Notifications

V1 settings (REMOVED):

premium:
enterpriseFeatures:
databaseNotifications: # REMOVED in V2
backups:
successful: false
failed: false
imports:
successful: false
failed: false

Migration: Remove this section from your settings.yml.

Why: Replaced with more comprehensive audit logging.


Calibre Custom Path

V1 setting (REMOVED):

system:
customPaths:
operations:
calibre: '' # REMOVED in V2

Migration: Remove this line.

Why: Path detection improved, no longer needs custom configuration.


Migration Checklist

Use this checklist when upgrading your settings.yml:

Required Changes

  • JWT Settings:

    • Replace jwt.enabled with jwt.persistence
    • Replace jwt.keyCleanup with jwt.enableKeyCleanup
    • Add jwt.enableKeyRotation: true
    • Remove jwt.secureCookie line
  • Remove Deprecated Sections:

    • Remove premium.proFeatures.googleDrive section
    • Remove premium.enterpriseFeatures.databaseNotifications section
    • Remove system.customPaths.operations.calibre line
  • UI Settings:

    • Remove ui.appName (use in-app settings)
    • Remove ui.homeDescription (use in-app settings)

Optional Additions

  • Add ui.logoStyle: classic if you want to explicitly set logo
  • Configure security.validation if you need custom signature validation
  • Set system.serverCertificate options if needed
  • Add system.corsAllowedOrigins if using split deployment
  • Set system.frontendUrl if using split deployment
  • Enable mail.enableInvites if you want email invitations

Environment Variable Changes

New Environment Variables in V2

# Signature validation
SECURITY_VALIDATION_TRUST_SERVERASANCHOR=true
SECURITY_VALIDATION_TRUST_USESYSTEMTRUST=true
SECURITY_VALIDATION_TRUST_USEMOZILLABUNDLE=true
SECURITY_VALIDATION_TRUST_USEAATL=false
SECURITY_VALIDATION_TRUST_USEEUTL=false
SECURITY_VALIDATION_REVOCATION_MODE=none

# Server certificates
SYSTEM_SERVERCERTIFICATE_ENABLED=true
SYSTEM_SERVERCERTIFICATE_ORGANIZATIONNAME="My Company"
SYSTEM_SERVERCERTIFICATE_VALIDITY=365

# Split deployment
SYSTEM_CORSALLOWEDORIGINS=https://pdf.example.com
SYSTEM_FRONTENDURL=https://pdf.example.com

# JWT
SECURITY_JWT_PERSISTENCE=true
SECURITY_JWT_ENABLEKEYROTATION=true
SECURITY_JWT_ENABLEKEYCLEANUP=true

# Email invites
MAIL_ENABLEINVITES=true

# Logo
UI_LOGOSTYLE=modern

Deprecated Environment Variables

# These no longer work in V2
SECURITY_JWT_ENABLED # Use SECURITY_JWT_PERSISTENCE
SECURITY_JWT_KEYCLEANUP # Use SECURITY_JWT_ENABLEKEYCLEANUP
SECURITY_JWT_SECURECOOKIE # Removed
UI_APPNAME # Use in-app settings
UI_HOMEDESCRIPTION # Use in-app settings

Configuration Examples

Minimal V2 Configuration (Works Out of Box)

security:
enableLogin: false

system:
defaultLocale: en-US

ui:
appNameNavbar: ''

All new V2 features use sensible defaults.


V1 to V2 Configuration Diff

V1 Configuration:

security:
jwt:
enabled: false
keyCleanup: false
secureCookie: true

ui:
appName: 'My PDF Tool'
homeDescription: 'Welcome!'
appNameNavbar: 'PDF Tool'

premium:
proFeatures:
googleDrive:
enabled: false

V2 Configuration:

security:
jwt:
persistence: true # Changed
enableKeyRotation: true # NEW
enableKeyCleanup: true # Changed
keyRetentionDays: 7
validation: # NEW section
trust:
serverAsAnchor: true
useSystemTrust: true

system:
serverCertificate: # NEW section
enabled: true
organizationName: Stirling-PDF

ui:
appNameNavbar: 'PDF Tool'
logoStyle: classic # NEW
# appName and homeDescription removed - use in-app settings

Troubleshooting

"Unknown configuration key" warnings

Symptom: Warnings about unrecognized settings on startup.

Cause: Old V1 settings still in your settings.yml.

Solution: Remove deprecated settings listed in this guide.


JWT tokens invalid after upgrade

Symptom: Users logged out, need to re-login.

Cause: JWT key format changed.

Solution: Expected behavior, users just need to log in again once.


Custom app name not showing

Symptom: App name doesn't appear after setting ui.appName.

Cause: Setting moved to in-app configuration.

Solution:

  1. Log in as admin
  2. Go to Settings → UI
  3. Configure there


Summary

Key Takeaways:

  • ✅ Most settings remain the same
  • 🔄 JWT settings have new names
  • ➕ Many new optional features
  • ➖ Google Drive and database notifications removed
  • 🎨 UI settings moved to in-app configuration

Action Required:

  • Update JWT setting names
  • Remove deprecated sections
  • Optionally configure new features

Your existing configuration will work in V2 with minimal changes!