Studio’s Configuration Overrides
Crafter Studio comes with pre-configured settings that you may want to override. To view the pre-configured settings in Crafter Studio, in your Authoring installation, go to CRAFTER_HOME/bin/apache-tomcat/webapps/studio/WEB-INF/classes/crafter/studio
and open the file studio-config.yaml
.
To override any of the pre-configured settings, in your Authoring installation, go to CRAFTER_HOME/bin/apache-tomcat/shared/classes/crafter/studio/extension
and add the settings you would like to configure in the file studio-config-override.yaml
. The override file have some settings already listed that you may want to override in Crafter Studio:
Content Repository Configuration
The following section of Studio’s configuration overrides allows you to do the following:
studio.repo.basePath
allows you to set your repository basestudio.repo.siteSandboxBranch
allows you to set the default branch to be used by sandboxstudio.repo.published.live
andstudio.repo.published.staging
allows you to set the branch for your publishing targets
1##################################################
2## Content Repository ##
3##################################################
4# Absolute or relative path to repository base (all actual repositories will be under this)
5studio.repo.basePath: ../data/repos
6# Sandbox Git repository branch for every site
7# studio.repo.siteSandboxBranch: master
8# Git repository branch for publishing targets are configured here
9# Git repository branch for the `live` publishing target, default "live"
10# studio.repo.published.live: live
11# Git repository branch for the `staging` publishing target, default "staging"
12# studio.repo.published.staging: staging
Site Configuration
The following section of Studio’s configuration overrides allows you to setup your site configuration
1############################################################
2## Site Configuration ##
3############################################################
4# Destroy site context url for preview engine
5studio.configuration.site.preview.destroy.context.url: ${env:ENGINE_URL}/api/1/site/context/destroy.json?crafterSite={siteName}&token=${studio.configuration.management.previewAuthorizationToken}
6# Default preview URL
7studio.configuration.site.defaultPreviewUrl: ^https?://localhost:8080/?
8# Default authoring URL
9studio.configuration.site.defaultAuthoringUrl: ^https?://localhost:8080/studio/?
10# Default GraphQL server URL
11studio.configuration.site.defaultGraphqlServerUrl: ^https?://localhost:8080/?
12# Studio management authorization token.
13studio.configuration.management.authorizationToken: ${env:STUDIO_MANAGEMENT_TOKEN}
14# Preview engine management authorization token.
15studio.configuration.management.previewAuthorizationToken: ${env:ENGINE_MANAGEMENT_TOKEN}
16# Protected URLs with preview engine management authorization token.
17# Coma separated list of preview engine urls
18studio.configuration.management.previewProtectedUrls: >-
19 /api/1/monitoring/log.json,
20 /api/1/monitoring/memory.json,
21 /api/1/monitoring/status.json,
22 /api/1/monitoring/version.json,
23 /api/1/site/context/id,
24 /api/1/site/context/destroy,
25 /api/1/site/context/rebuild,
26 /api/1/site/context/graphql/rebuild,
27 /api/1/site/cache/clear,
28 /api/1/site/cache/statistics
Preview Deployer Configuration
The following section of Studio’s configuration overrides allows you to setup your deployer urls
1############################################################
2## Preview Deployer ##
3############################################################
4
5# Default preview deployer URL (can be overridden per site)
6studio.preview.defaultPreviewDeployerUrl: ${env:DEPLOYER_URL}/api/1/target/deploy/{siteEnv}/{siteName}
7# Default preview create target URL (can be overridden per site)
8studio.preview.createTargetUrl: ${env:DEPLOYER_URL}/api/1/target/create_if_not_exists
9# Default preview create target URL (can be overridden per site)
10studio.preview.deleteTargetUrl: ${env:DEPLOYER_URL}/api/1/target/delete-if-exists/{siteEnv}/{siteName}
11# URL to the preview repository (aka Sandbox) where authors save work-in-progress
12studio.preview.repoUrl: ${env:CRAFTER_DATA_DIR}/repos/sites/{siteName}/sandbox
Preview Search Configuration
The following section of Studio’s configuration overrides allows you to setup urls for search in preview
1############################################################
2## Preview Search ##
3############################################################
4
5studio.preview.search.createUrl: ${env:SEARCH_URL}/api/2/admin/index/create
6studio.preview.search.deleteUrl: ${env:SEARCH_URL}/api/2/admin/index/delete/{siteName}
Database Configuration
The following section of Studio’s configuration overrides allows you to setup the database url, port number, connection string to initialize the database and path
1##################################################
2## Database ##
3##################################################
4# Crafter Studio uses an embedded MariaDB by default
5# Crafter DB schema name
6studio.db.schema: ${env:MARIADB_SCHEMA}
7# Crafter DB connection string
8studio.db.url: jdbc:mariadb://${env:MARIADB_HOST}:${env:MARIADB_PORT}/${env:MARIADB_SCHEMA}?user=${env:MARIADB_USER}&password=${env:MARIADB_PASSWD}&socketTimeout=${env:MARIADB_SOCKET_TIMEOUT}
9# Connection string used to initialize database. This creates the `crafter` schema, the `crafter` user and/or upgrades the database
10studio.db.initializer.url: jdbc:mariadb://${env:MARIADB_HOST}:${env:MARIADB_PORT}?user=${env:MARIADB_ROOT_USER}&password=${env:MARIADB_ROOT_PASSWD}
11# Connection string if using a database with an already created schema and user (like AWS RDS)
12# studio.db.initializer.url: ${studio.db.url}
13# Port number for the embedded database (note this must match what's in the connection URLs in this config file)
14studio.db.port: ${env:MARIADB_PORT}
15# Data folder for the embedded database
16studio.db.dataPath: ${env:MARIADB_DATA_DIR}
17# Socket path for the embedded database
18studio.db.socket: /tmp/MariaDB4j.${env:MARIADB_PORT}.sock
Security Configuration
The following section of Studio’s configuration overrides allows you to randomize the admin password on a fresh install (for more information, see: Randomize “admin” Password for CrafterCMS Fresh Install), configure encryption and configure authentication method to be used (for more information, see: Configuring Studio Security), configure password requirements validation (for more information see: Configure Studio Password Requirements).
1##################################################
2## Security ##
3##################################################
4# Enable random admin password generation
5# studio.db.initializer.randomAdminPassword.enabled: false
6# Random admin password length
7# studio.db.initializer.randomAdminPassword.length: 16
8# Random admin password allowed chars
9# studio.db.initializer.randomAdminPassword.chars: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*_=+-/
10# HTTP Session timeout for studio (value is in minutes).
11# studio.security.sessionTimeout: 60
12# Defines security provider for accessing repository. Possible values
13# - db (users are stored in database)
14# - ldap (users are imported from LDAP into the database)
15# - headers (use when authenticating via headers)
16# studio.security.type: ldap
17#
18# Salt for encrypting
19# studio.security.cipher.salt: ${env:CRAFTER_SYSTEM_ENCRYPTION_KEY}
20# Key for encrypting
21# studio.security.cipher.key: ${env:CRAFTER_SYSTEM_ENCRYPTION_SALT}
22# Enable password requirements validation
23# studio.security.passwordRequirements.enabled: false
24# Password requirements validation regular expression
25# The supported capture group keys are:
26# hasNumbers
27# hasLowercase
28# hasUppercase
29# hasSpecialChars
30# noSpaces
31# minLength
32# maxLength
33# minMaxLength
34# studio.security.passwordRequirements.validationRegex: ^(?=(?<hasNumbers>.*[0-9]))(?=(?<hasLowercase>.*[a-z]))(?=(?<hasUppercase>.*[A-Z]))(?=(?<hasSpecialChars>.*[~|!`,;\/@#$%^&+=]))(?<minLength>.{8,})$
35# Studio authentication chain configuration
36# studio.authentication.chain:
37 # Authentication provider type
38 # - provider: HEADERS
39 # Authentication via headers enabled
40 # enabled: false
41 # Authentication header for secure key
42 # secureKeyHeader: secure_key
43 # Authentication headers secure key that is expected to match secure key value from headers
44 # Typically this is placed in the header by the authentication agent
45 # secureKeyHeaderValue: secure
46 # Authentication header for username
47 # usernameHeader: username
48 # Authentication header for first name
49 # firstNameHeader: firstname
50 # Authentication header for last name
51 # lastNameHeader: lastname
52 # Authentication header for email
53 # emailHeader: email
54 # Authentication header for groups: comma separated list of sites and groups
55 # Example:
56 # site_author,site_xyz_developer
57 # groupsHeader: groups
58 # Enable/disable logout for headers authenticated users (SSO)
59 # logoutEnabled: false
60 # If logout is enabled for headers authenticated users (SSO), set the endpoint of the SP or IdP logout, which should
61 # be called after local logout. The {baseUrl} macro is provided so that the browser is redirected back to Studio
62 # after logout (https://STUDIO_SERVER:STUDIO_PORT/studio)
63 # logoutUrl: /YOUR_DOMAIN/logout?ReturnTo={baseUrl}
64 # Authentication provider type
65 # - provider: LDAP
66 # Authentication via LDAP enabled
67 # enabled: false
68 # LDAP Server url
69 # ldapUrl: ldap://localhost:389
70 # LDAP bind DN (user)
71 # ldapUsername: cn=Manager,dc=my-domain,dc=com
72 # LDAP bind password
73 # ldapPassword: secret
74 # LDAP base context (directory root)
75 # ldapBaseContext: dc=my-domain,dc=com
76 # LDAP username attribute
77 # usernameLdapAttribute: uid
78 # LDAP first name attribute
79 # firstNameLdapAttribute: cn
80 # LDAP last name attribute
81 # lastNameLdapAttribute: sn
82 # Authentication header for email
83 # emailLdapAttribute: mail
84 # LDAP groups attribute
85 # groupNameLdapAttribute: crafterGroup
86 # LDAP groups attribute name regex
87 # groupNameLdapAttributeRegex: .*
88 # LDAP groups attribute match index
89 # groupNameLdapAttributeMatchIndex: 0
90 # Authentication provider type
91 # - provider: DB
92 # Authentication via DB enabled
93 # enabled: true
94
95# The key used for encryption of configuration properties
96studio.security.encryption.key: ${env:CRAFTER_ENCRYPTION_KEY}
97# The salt used for encryption of configuration properties
98studio.security.encryption.salt: ${env:CRAFTER_ENCRYPTION_SALT}
99
100# Defines name used for environment specific configuration. It is used for environment overrides in studio. Default value is default.
101studio.configuration.environment.active: ${env:CRAFTER_ENVIRONMENT}
Mail Configuration
The following section of Studio’s configuration overrides allows you to setup the SMTP server to be used by CrafterCMS when sending emails
1##################################################
2## SMTP Configuration (Email) ##
3##################################################
4
5# Default value for from header when sending emails.
6# studio.mail.from.default: admin@example.com
7# SMTP server name to send emails.
8studio.mail.host: ${env:MAIL_HOST}
9# SMTP port number to send emails.
10studio.mail.port: ${env:MAIL_PORT}
11# SMTP username for authenticated access when sending emails.
12# studio.mail.username:
13# SMTP password for authenticated access when sending emails.
14# studio.mail.password:
15# Turn on/off (value true/false) SMTP authenaticated access protocol.
16# studio.mail.smtp.auth: false
17# Enable/disable (value true/false) SMTP TLS protocol when sending emails.
18# studio.mail.smtp.starttls.enable: false
19# Enable/disable (value true/false) SMTP EHLO protocol when sending emails.
20# studio.mail.smtp.ehlo: true
21# Enable/disable (value true/false) debug mode for email service. Enabling debug mode allows tracking/debugging communication between email service and SMTP server.
22# studio.mail.debug: false
Clustering
The following section of Studio’s configuration overrides allows you to setup Studio for clustering. See Studio Clustering for more information
1##################################################
2## Clustering ##
3##################################################
4#-----------------------------------------------------------------------------
5# IMPORTANT: To enable clustering, please specify the environment variable
6# SPRING_PROFILES_ACTIVE=crafter.studio.dbCluster in your crafter-setenv.sh
7# (or Docker/Kubernetes env variables).
8# Also configure the appropriate MARIADB env variables
9# -----------------------------------------------------------------------------
10
11# Cluster Git URL format for synching members.
12# - Typical SSH URL format: ssh://{username}@{localAddress}{absolutePath}
13# - Typical HTTPS URL format: https://{localAddress}/repos/sites
14# studio.clustering.sync.urlFormat: ssh://{username}@{localAddress}{absolutePath}
15
16# Cluster Syncers
17# Sandbox Sync Job interval in milliseconds which is how often to sync the work-area
18# studio.clustering.sandboxSyncJob.interval: 2000
19# Published Sync Job interval in milliseconds which is how often to sync the published repos
20# studio.clustering.publishedSyncJob.interval: 60000
21# Global Repo Sync Job interval in milliseconds which is how often to sync the global repo
22# studio.clustering.globalRepoSyncJob.interval: 45000
23# Cluster member after heartbeat stale for amount of minutes will be declared inactive
24# studio.clustering.heartbeatStale.timeLimit: 5
25# Cluster member after being inactive for amount of minutes will be removed from cluster
26# studio.clustering.inactivity.timeLimit: 5
27
28# Cluster member registration, this registers *this* server into the pool
29# Cluster node registration data, remember to uncomment the next line
30# studio.clustering.node.registration:
31# This server's local address (reachable to other cluster members). You can also specify a different port by
32# attaching :PORT to the adddress (e.g 192.168.1.200:2222)
33# localAddress: ${env:CLUSTER_NODE_ADDRESS}
34# Authentication type to access this server's local repository
35# possible values
36# - none (no authentication needed)
37# - basic (username/password authentication)
38# - key (ssh authentication)
39# authenticationType: none
40# Username to access this server's local repository
41# username: user
42# Password to access this server's local repository
43# password: SuperSecurePassword
44# Private key to access this server's local repository (multiline string)
45# privateKey: |
46# -----BEGIN PRIVATE KEY-----
47# privateKey
48# -----END PRIVATE KEY-----
CORS
The following section of Studio’s configuration overrides allows you to setup CORS
1################################################################
2## CORS ##
3################################################################
4# This is configured as permissive by default for ease of deployment
5# Remember to tighten this up for production
6
7# Disable CORS headers completely
8# studio.cors.disable: false
9# Value for the Access-Control-Allow-Origin header
10# studio.cors.origins: '*'
11# Value for the Access-Control-Allow-Headers header
12# studio.cors.headers: '*'
13# Value for the Access-Control-Allow-Methods header
14# studio.cors.methods: '*'
15# Value for the Access-Control-Allow-Credentials header
16# studio.cors.credentials: true
17# Value for the Access-Control-Max-Age header
18# studio.cors.maxage: -1
Search
The following section of Studio’s configuration overrides allows you to setup the url for search
1################################################################
2## Search ##
3################################################################
4# URLs to connect to Elasticsearch
5studio.search.urls: ${env:ES_URL}
6# The username for Elasticsearch
7studio.search.username: ${env:ES_USERNAME}
8# The password for Elasticsearch
9studio.search.password: ${env:ES_PASSWORD}
10# The connection timeout in milliseconds, if set to -1 the default will be used
11studio.search.timeout.connect: -1
12# The socket timeout in milliseconds, if set to -1 the default will be used
13studio.search.timeout.socket: -1
14# The number of threads to use, if set to -1 the default will be used
15studio.search.threads: -1
Serverless Delivery
The following section of Studio’s configuration overrides allows you to setup serverless delivery
1##########################################################
2## Serverless Delivery ##
3##########################################################
4# Indicates if serverless delivery is enabled
5# studio.serverless.delivery.enabled: false
6# The URL for the serverless delivery deployer create URL
7# studio.serverless.delivery.deployer.target.createUrl: ${studio.preview.createTargetUrl}
8# The URL for the serverless delivery deployer delete URL
9# studio.serverless.delivery.deployer.target.deleteUrl: ${studio.preview.deleteTargetUrl}
10# The template name for serverless deployer targets
11# studio.serverless.delivery.deployer.target.template: aws-cloudformed-s3
12# Replace existing target configuration if one exists?
13# studio.serverless.delivery.deployer.target.replace: false
14# The URL the deployer will use to clone/pull the site's published repo. When the deployer is in a separate node
15# (because of clustering), this URL should be an SSH/HTTP URL to the load balancer in front of the Studios
16# studio.serverless.delivery.deployer.target.remoteRepoUrl: ${env:CRAFTER_DATA_DIR}/repos/sites/{siteName}/published
17# The deployer's local path where it will store the clone of the published site. This property is not needed if
18# the deployer is not the preview deployer, so you can leave an empty string ('') instead
19# studio.serverless.delivery.deployer.target.localRepoPath: ${env:CRAFTER_DATA_DIR}/repos/aws/{siteName}
20# Parameters for the target template. Please check the deployer template documentation for the possible parameters.
21# The following parameters will be sent automatically, and you don't need to specify them: env, site_name, replace,
22# disable_deploy_cron, local_repo_path, repo_url, use_crafter_search
23# studio.serverless.delivery.deployer.target.template.params:
24# # The delivery Elasticsearch endpoint (optional is authoring is using the same one, specified in the ES_URL env variable)
25# elastic_search_url:
26# aws:
27# # AWS region (optional if specified through default AWS chain)
28# region: us-east-1
29# # AWS access key (optional if specified through default AWS chain)
30# default_access_key:
31# # AWS secret key (optional if specified through default AWS chain)
32# default_secret_key:
33# cloudformation:
34# # AWS access key (optional if aws.accessKey is specified)
35# access_key:
36# # AWS secret key (optional if aws.secretKey is specified)
37# secret_key:
38# # Namespace to use for CloudFormation resources (required when target template is aws-cloudformed-s3)
39# namespace: myorganization
40# # The domain name of the serverless delivery LB (required when target template is aws-cloudformed-s3)
41# deliveryLBDomainName:
42# # The SSL certificate ARN the CloudFront CDN should use (optional when target template is aws-cloudformed-s3)
43# cloudfrontCertificateArn:
44# # The alternate domains names (besides *.cloudfront.net) for the CloudFront CDN (optional when target template is aws-cloudformed-s3)
45# alternateCloudFrontDomainNames:
Forwarded Headers
The following section of Studio’s configuration overrides allows you to configure forwarded headers to resolve the actual hostname and protocol when it is behind a load balancer or reverse proxy.
1##################################################
2## Forwarded Headers ##
3##################################################
4# Indicates if Forwarded or X-Forwarded headers should be used when resolving the client-originated protocol and
5# address. Enable when Studio is behind a reverse proxy or load balancer that sends these
6studio.forwarded.headers.enabled: false