mirror of https://github.com/Squidex/squidex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
650 lines
21 KiB
650 lines
21 KiB
{
|
|
"mode": {
|
|
// Use this flag to set Squidex to readonly, e.g. when you deploy a second instance for migration.
|
|
"isReadonly": false
|
|
},
|
|
|
|
"urls": {
|
|
// Set the base url of your application, to generate correct urls in background process.
|
|
"baseUrl": "https://localhost:5001",
|
|
|
|
// The base path when running Squidex behind a reverse proxy like nginx under a subfolder / subpath.
|
|
"basePath": "",
|
|
|
|
// Set it to true to redirect the user from http to https permanently.
|
|
"enforceHttps": false,
|
|
|
|
// Set it to true to return a 400 if the host does not match.
|
|
"enforceHost": false,
|
|
|
|
// A list of known proxies to make forward headers safer.
|
|
"knownProxies": [],
|
|
|
|
// Set it to true to use the X-Forwarded- headers for host name and scheme.
|
|
"enableForwardHeaders": true,
|
|
|
|
// A list of trusted hosts for redirects.
|
|
"trustedHosted": []
|
|
},
|
|
|
|
"fullText": {
|
|
// Define the type of the full text store.
|
|
//
|
|
// SUPPORTED: elastic (ElasticSearch), azure (Azure Cognitive Search), default. Default: default
|
|
"type": "default",
|
|
|
|
"elastic": {
|
|
// The configuration to your elastic search cluster.
|
|
//
|
|
// Read More: https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/client-configuration.html
|
|
"configuration": "http://localhost:9200",
|
|
|
|
// The name of the index.
|
|
"indexName": "squidex"
|
|
},
|
|
|
|
"azure": {
|
|
// The URL to your azure search instance.
|
|
//
|
|
// Read More: https://docs.microsoft.com/en-us/azure/search/search-create-service-portal#get-a-key-and-url-endpoint
|
|
"serviceEndpoint": "https://<name>.search.windows.net",
|
|
|
|
// The api key. See link above.
|
|
"apiKey": "",
|
|
|
|
// The name of the index.
|
|
"indexName": "squidex"
|
|
}
|
|
},
|
|
|
|
// Define optional paths to plugins.
|
|
"plugins": [
|
|
"Squidex.Extensions.dll"
|
|
],
|
|
|
|
"caching": {
|
|
// Set to true, to use strong etags.
|
|
"strongETag": false,
|
|
|
|
// Restrict the surrogate keys to the number of characters.
|
|
"maxSurrogateKeysSize": 0,
|
|
|
|
"replicated": {
|
|
// Set to true to enable a replicated cache for app, schemas and rules. Increases performance but reduces consistency.
|
|
"enable": true
|
|
},
|
|
|
|
"domainObjects": {
|
|
// The cache duration for domain objects.
|
|
"cacheDuration": "00:10:00"
|
|
}
|
|
},
|
|
|
|
"messaging": {
|
|
"type": "MongoDb"
|
|
},
|
|
|
|
"scripting": {
|
|
// The timeout for the whole script execution.
|
|
"timeoutExecution": "00:00:04",
|
|
|
|
// The timeout for the synchronous part of the script.
|
|
"timeoutScript": "00:00:00.200"
|
|
},
|
|
|
|
"languages": {
|
|
// Use custom languages where the key is the language code and the value is the english name.
|
|
"custom": ""
|
|
},
|
|
|
|
"rules": {
|
|
// The timeout to execute rule actions.
|
|
"executionTimeoutInSeconds": 10,
|
|
|
|
// The cache duration for rules.
|
|
"rulesCacheDuration": "00:00:10"
|
|
},
|
|
|
|
"ui": {
|
|
// Regex suggestions for the UI
|
|
"regexSuggestions": {
|
|
// Regex for emails.
|
|
"Email": "^[a-zA-Z0-9.!#$%&’*+\\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$",
|
|
// Regex for phone numbers.
|
|
"Phone": "^\\(*\\+*[1-9]{0,3}\\)*-*[1-9]{0,3}[-. /]*\\(*[2-9]\\d{2}\\)*[-. /]*\\d{3}[-. /]*\\d{4} *e*x*t*\\.* *\\d{0,4}$",
|
|
// Regex for slugs (e.g. hello-world).
|
|
"Slug": "^[a-z0-9]+(\\-[a-z0-9]+)*$",
|
|
// Regex for urls.
|
|
"Url": "^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:\\/?#%[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$"
|
|
},
|
|
|
|
// True if only admins should be able to create apps.
|
|
"onlyAdminsCanCreateApps": false,
|
|
|
|
"map": {
|
|
// Define the type of the geolocation service.
|
|
//
|
|
// SUPPORTED: GoogleMaps, OSM
|
|
"type": "OSM",
|
|
|
|
"googleMaps": {
|
|
// The optional google maps API key. CREATE YOUR OWN PLEASE.
|
|
"key": "AIzaSyB_Z8l3nwUxZhMJykiDUJy6bSHXXlwcYMg"
|
|
}
|
|
},
|
|
|
|
// Redirect to login automatically.
|
|
"redirectToLogin": false,
|
|
|
|
// Hide the news dialog.
|
|
"hideNews": false,
|
|
|
|
// Hide all onboarding tooltips and dialogs.
|
|
"hideOnboarding": false,
|
|
|
|
// Hide the today and now button.
|
|
"hideDateButtons": false,
|
|
|
|
// Hide the Local/UTC button
|
|
"hideDateTimeModeButton": false,
|
|
|
|
// Show the exposed values as information on the apps overview page.
|
|
"showInfo": false,
|
|
|
|
// The number of content items for dropdown selector.
|
|
"referencesDropdownItemCount": 100,
|
|
|
|
"google": {
|
|
// The Google analytics ID.
|
|
"analyticsId": "UA-99989790-2"
|
|
}
|
|
},
|
|
|
|
"email": {
|
|
"smtp": {
|
|
// The host name to your email server.
|
|
"server": "",
|
|
|
|
// The sender email address.
|
|
"sender": "hello@squidex.io",
|
|
|
|
// The username to authenticate to your email server.
|
|
"username": "",
|
|
|
|
// The password to authenticate to your email server.
|
|
"password": "",
|
|
|
|
// Always use SSL if possible.
|
|
"enableSsl": true,
|
|
|
|
// The port to your email server.
|
|
"port": 587
|
|
},
|
|
"notifications": {
|
|
// The email subject when a new user is added as contributor.
|
|
"newUserSubject": "You have been invited to join Project $APP_NAME at Squidex CMS",
|
|
|
|
// The email body when a new user is added as contributor.
|
|
"newUserBody": "Welcome to Squidex\r\nDear User,\r\n\r\n$ASSIGNER_NAME ($ASSIGNER_EMAIL) has invited you to join Project (also called an App) $APP_NAME at Squidex Headless CMS. Login with your Github, Google or Microsoft credentials to create a new user account and start editing content now.\r\n\r\nThank you very much,\r\nThe Squidex Team\r\n\r\n<<Start now!>> [$UI_URL]",
|
|
|
|
// The email subject when an existing user is added as contributor.
|
|
"existingUserSubject": "[Squidex CMS] You have been invited to join App $APP_NAME",
|
|
|
|
// The email body when an existing user is added as contributor.
|
|
"existingUserBody": "Dear User,\r\n\r\n$ASSIGNER_NAME ($ASSIGNER_EMAIL) has invited you to join App $APP_NAME at Squidex Headless CMS.\r\n\r\nLogin or reload the Management UI to see the App.\r\n\r\nThank you very much,\r\nThe Squidex Team\r\n\r\n<<Start now!>> [$UI_URL]",
|
|
|
|
// The email subject when app usage reached
|
|
"usageSubject": "[Squidex CMS] You you are about to reach your usage limit for App $APP_NAME",
|
|
|
|
// The email body when app usage reached
|
|
"usageBody": "Dear User,\r\n\r\nYou you are about to reach your usage limit for App $APP_NAME at Squidex Headless CMS.\r\n\r\nYou have already used $API_CALLS of your monthy limit of $API_CALLS_LIMIT API calls.\r\n\r\nPlease check your clients or upgrade your plan!\r\n\r\n<<Go to Squidex!>> [$UI_URL]"
|
|
}
|
|
},
|
|
|
|
// Configure notifo if you want to have support for custom notifications.
|
|
"notifo": {
|
|
// The id of the app in notifo.
|
|
"appId": "",
|
|
// The API key for your app in notifo.
|
|
"apiKey": "",
|
|
// The API URL.
|
|
"apiUrl": "https://app.notifo.io"
|
|
},
|
|
|
|
"robots": {
|
|
// The text for the robots.txt file
|
|
"text": "User-agent: *\nAllow: /api/assets/*"
|
|
},
|
|
|
|
"apps": {
|
|
// True to delete apps permanently.
|
|
//
|
|
// This process can take a while and is executed in the background.
|
|
"deletePermanent": false
|
|
},
|
|
|
|
"contents": {
|
|
// True to enable memory caching.
|
|
//
|
|
// This is only supported in GraphQL with the @cache(duration: 1000) directive.
|
|
"canCache": true,
|
|
|
|
// True to enable an optimization for self hosting.
|
|
//
|
|
// Creates one database per app and one collection per schema. Slows down inserts, but you can create custom indexes.
|
|
"optimizeForSelfHosting": false,
|
|
|
|
// False to not use transactions. Improves performance.
|
|
//
|
|
// Warning: Can cause consistency issues.
|
|
"useTransactions": true,
|
|
|
|
// The default page size if not specified by a query.
|
|
//
|
|
// Warning: Can slow down queries if increased.
|
|
"defaultPageSize": 200,
|
|
|
|
// The maximum number of items to return for each query.
|
|
//
|
|
// Warning: Use pagination and not large number of items.
|
|
"maxResults": 200,
|
|
|
|
// The timeout when searching for single items in the database.
|
|
"timeoutFind": "00:00:01",
|
|
|
|
// The timeout when searching for multiple items in the database.
|
|
"timeoutQuery": "00:00:05"
|
|
},
|
|
|
|
"assets": {
|
|
// True to enable memory caching.
|
|
//
|
|
// This is only supported in GraphQL with the @cache(duration: 1000) directive.
|
|
"canCache": true,
|
|
|
|
// The default page size if not specified by a query.
|
|
//
|
|
// Warning: Can slow down queries if increased.
|
|
"defaultPageSize": 200,
|
|
|
|
// The maximum number of items to return for each query.
|
|
//
|
|
// Warning: Use pagination and not large number of items.
|
|
"maxResults": 200,
|
|
|
|
// The maximum file size in bytes. Default: 5MB
|
|
"maxSize": 5242880,
|
|
|
|
// True to delete assets recursively.
|
|
"deleteRecursive": true,
|
|
|
|
// True to delete assets files permanently.
|
|
"deletePermanent": false,
|
|
|
|
// The timeout when searching for single items in the database.
|
|
"timeoutFind": "00:00:01",
|
|
|
|
// The timeout when searching for multiple items in the database.
|
|
"timeoutQuery": "00:00:05",
|
|
|
|
// Create one folder per app.
|
|
//
|
|
// WARNING: If you change this parameter, previous assets are not available anymore.
|
|
"folderPerApp": false,
|
|
|
|
// Points to another Squidex instance, which should be configured as resizer.
|
|
"resizerUrl": ""
|
|
},
|
|
|
|
"logging": {
|
|
// The log level.
|
|
//
|
|
// Trace, Debug, Information, Warning, Error, Fatal
|
|
"level": "Information",
|
|
|
|
// Setting the flag to true, enables well formatteds json logs.
|
|
"human": true,
|
|
|
|
// Set to true, to use colors.
|
|
"colors": true,
|
|
|
|
// Set to false to disable logging of http requests.
|
|
"logRequests": true,
|
|
|
|
// False to disable the log store.
|
|
"storeEnabled": true,
|
|
|
|
// The number of days request log items will be stored.
|
|
"storeRetentionInDays": 90,
|
|
|
|
"stackdriver": {
|
|
// True, to enable stackdriver integration.
|
|
"enabled": false
|
|
},
|
|
|
|
"otlp": {
|
|
// True, to enable OpenTelemetry Protocol integration.
|
|
"enabled": false,
|
|
|
|
// The endpoint to the agent.
|
|
"endpoint": ""
|
|
},
|
|
|
|
"applicationInsights": {
|
|
// True, to enable application insights integraon.
|
|
"enabled": false,
|
|
|
|
"connectionString": "InstrumentationKey=[key];IngestionEndpoint=https://[datacenter].in.applicationinsights.azure.com/"
|
|
}
|
|
},
|
|
|
|
"diagnostics": {
|
|
// The path to the dotnet-dump tool binary.
|
|
//
|
|
// REMARKS: Will be set automatically in the official Docker image.
|
|
"dumpTool": "",
|
|
|
|
// When more memory is allocated that the defined value (in MB) a dump will be created once automatically and written to the asset store.
|
|
"dumpTriggerInMB": 0,
|
|
|
|
// The path to the dotnet-gcdump tool binary.
|
|
//
|
|
// REMARKS: Will be set automatically in the official Docker image.
|
|
"gcdumpTool": "",
|
|
|
|
// When more memory is allocated than the defined value (in MB) a gcdump will be created once automatically and written to the asset store.
|
|
"gcumpTriggerInMB": 0,
|
|
|
|
"gc": {
|
|
// The maximum number of megabyte that the process can consume until it is marked as not healthy.
|
|
"threshold": 8192
|
|
}
|
|
},
|
|
|
|
"assetStore": {
|
|
// Define the type of the read store.
|
|
//
|
|
// SUPPORTED: Folder (local folder), MongoDb (GridFS), GoogleCloud (hosted in Google Cloud only), AzureBlob, AmazonS3, FTP (not recommended).
|
|
"type": "Folder",
|
|
|
|
"folder": {
|
|
// The relative or absolute path to the folder to store the assets.
|
|
"path": "Assets"
|
|
},
|
|
"googleCloud": {
|
|
// The name of the bucket in google cloud store.
|
|
"bucket": "squidex-assets"
|
|
},
|
|
"azureBlob": {
|
|
// The name of the container in the Azure Blob Storage
|
|
"containerName": "squidex-assets",
|
|
|
|
// The connection string to the azure storage service.
|
|
"connectionString": "UseDevelopmentStorage=true"
|
|
},
|
|
"amazonS3": {
|
|
// The url of the S3 API service. Leave it empty if using the one provided by Amazon
|
|
"serviceUrl": "",
|
|
|
|
// The name of your bucket.
|
|
"bucket": "squidex-test",
|
|
|
|
// The optional folder within the bucket.
|
|
"bucketFolder": "squidex-assets",
|
|
|
|
// The region name of your bucket.
|
|
"regionName": "eu-central-1",
|
|
|
|
// The access key for your user.
|
|
//
|
|
// Read More: https://supsystic.com/documentation/id-secret-access-key-amazon-s3/
|
|
"accessKey": "<MY_KEY>",
|
|
|
|
// The secret key for your user.
|
|
//
|
|
// Read More: https://supsystic.com/documentation/id-secret-access-key-amazon-s3/
|
|
"secretKey": "<MY_SECRET>",
|
|
|
|
// Force path style property for AmazonS3Config
|
|
"forcePathStyle": false
|
|
},
|
|
"mongoDb": {
|
|
// The connection string to your Mongo Server.
|
|
//
|
|
// Read More: https://docs.mongodb.com/manual/reference/connection-string/
|
|
"configuration": "mongodb://localhost",
|
|
|
|
// The name of the event store database.
|
|
"database": "SquidexAssets",
|
|
|
|
// The name of the Mongo Grid FS bucket.
|
|
"bucket": "fs"
|
|
},
|
|
"ftp": {
|
|
//The host of the ftp service
|
|
"serverHost": "",
|
|
|
|
//The host of the ftp service
|
|
"serverPort": "21",
|
|
|
|
// Credentials.
|
|
"username": "",
|
|
"password": "",
|
|
|
|
// The relative or absolute path to the folder to store the assets.
|
|
"path": "Assets"
|
|
},
|
|
// Allow to expose the url in GraphQL URL.
|
|
"exposeSourceUrl": false
|
|
},
|
|
|
|
"clustering": {
|
|
// Defines whether the current instance is a worker. You should have only one worker in your deployment.
|
|
"worker": true
|
|
},
|
|
|
|
"eventStore": {
|
|
// Define the type of the event store.
|
|
//
|
|
// SUPPORTED: MongoDb
|
|
"type": "MongoDb",
|
|
|
|
"mongoDb": {
|
|
// The connection string to your Mongo Server.
|
|
//
|
|
// Read More: https://docs.mongodb.com/manual/reference/connection-string/
|
|
"configuration": "mongodb://localhost",
|
|
|
|
// The name of the event store database.
|
|
"database": "Squidex"
|
|
}
|
|
},
|
|
|
|
"eventPublishers": {
|
|
// Additional event publishers (advanced usage only): (Name => Config)
|
|
"allToRabbitMq": {
|
|
// Example:: Push all events to RabbitMq.
|
|
"type": "RabbitMq",
|
|
"configuration": "amqp://guest:guest@localhost/",
|
|
"exchange": "squidex",
|
|
"enabled": false,
|
|
"eventsFilter": ".*"
|
|
}
|
|
},
|
|
|
|
"store": {
|
|
// Define the type of the read store.
|
|
//
|
|
// SUPPORTED: MongoDb
|
|
"type": "MongoDb",
|
|
|
|
"mongoDb": {
|
|
// The connection string to your Mongo Server.
|
|
//
|
|
// Read More: https://docs.mongodb.com/manual/reference/connection-string/
|
|
"configuration": "mongodb://localhost",
|
|
|
|
// The database for all your content collections (one collection per app).
|
|
"contentDatabase": "SquidexContent",
|
|
|
|
// The database for all your other read collections.
|
|
"database": "Squidex",
|
|
|
|
// Defines how key-value-store values are represented in MongoDB (e.g. app, rule, schema).
|
|
//
|
|
// SUPPORTED: Document, String, Binary (from slow to fast).
|
|
"valueRepresentation": "Undefined",
|
|
|
|
"atlas": {
|
|
// The organization id.
|
|
"groupId": "",
|
|
|
|
// The name of the cluster.
|
|
"clusterName": "",
|
|
|
|
// Credentials to your account.
|
|
"publicKey": "",
|
|
"privateKey": "",
|
|
|
|
// True, if you want to enable mongo atlas for full text search instead of MongoDB.
|
|
"fullTextEnabled": false
|
|
}
|
|
}
|
|
},
|
|
|
|
"identity": {
|
|
// Set to true to show PII (Personally Identifiable Information) in the logs.
|
|
"showPII": true,
|
|
|
|
// Enable password auth. Set this to false if you want to disable local login, leaving only 3rd party login options.
|
|
"allowPasswordAuth": true,
|
|
|
|
// Specifies whether to suppress the generation of X-Frame-Options header which is used to prevent ClickJacking.
|
|
"suppressXFrameOptionsHeader": false,
|
|
|
|
// Initial admin user.
|
|
"adminEmail": "",
|
|
"adminPassword": "",
|
|
|
|
// Recreate the admin if it does not exist or the password does not match.
|
|
"adminRecreate": false,
|
|
|
|
// Client with all admin permissions.
|
|
"adminClientId": "",
|
|
"adminClientSecret": "",
|
|
|
|
// The apps which should be visible on the dashboard for the admin.
|
|
"adminApps": [],
|
|
|
|
// Settings for Google auth (keep empty to disable).
|
|
"googleClient": "1006817248705-t3lb3ge808m9am4t7upqth79hulk456l.apps.googleusercontent.com",
|
|
"googleSecret": "QsEi-fHqkGw2_PjJmtNHf2wg",
|
|
|
|
// Settings for Github auth (keep empty to disable).
|
|
"githubClient": "211ea00e726baf754c78",
|
|
"githubSecret": "d0a0d0fe2c26469ae20987ac265b3a339fd73132",
|
|
|
|
// Settings for Microsoft auth (keep empty to disable).3
|
|
//
|
|
// NOTE: Tennant is optional for using a specific AzureAD tenant
|
|
"microsoftClient": "b55da740-6648-4502-8746-b9003f29d5f1",
|
|
"microsoftSecret": "idWbANxNYEF4cB368WXJhjN",
|
|
"microsoftTenant": null,
|
|
|
|
// Set this to true if you use multiple domains.
|
|
"multipleDomains": false,
|
|
|
|
// Settings for your custom oidc server.
|
|
"oidcName": "OIDC",
|
|
"oidcAuthority": "",
|
|
"oidcClient": "",
|
|
"oidcSecret": "",
|
|
"oidcMetadataAddress": "",
|
|
"oidcScopes": [
|
|
"email"
|
|
],
|
|
"oidcResponseType": "id_token", // or "code"
|
|
"oidcGetClaimsFromUserInfoEndpoint": false,
|
|
"oidcOnSignoutRedirectUrl": "",
|
|
|
|
// Lock new users automatically, the administrator must unlock them.
|
|
"lockAutomatically": false,
|
|
|
|
// The url to you privacy statements, if you host squidex by yourself.
|
|
"privacyUrl": "https://squidex.io/privacy"
|
|
},
|
|
|
|
"news": {
|
|
// The app name where the news are stored.
|
|
"appName": "squidex-website",
|
|
|
|
// The credentials to the app (Readonly).
|
|
"clientId": "squidex-website:default",
|
|
"clientSecret": "QGgqxd7bDHBTEkpC6fj8sbdPWgZrPrPfr3xzb3LKoec="
|
|
},
|
|
|
|
"translations": {
|
|
"deepl": {
|
|
// The deepl api key if you want to support automated translations.
|
|
"authKey": "",
|
|
"mapping": {
|
|
"zh-TW": "zh-TW",
|
|
"zh-CN": "zh-CN"
|
|
}
|
|
},
|
|
|
|
"googleCloud": {
|
|
// The google cloud project id if you want to support automated translations.
|
|
"projectId": ""
|
|
}
|
|
},
|
|
|
|
"rebuild": {
|
|
// Set to true to rebuild apps.
|
|
"apps": false,
|
|
|
|
// Set to true to rebuild assets.
|
|
"assets": false,
|
|
|
|
// Set to true to create dummy asset files if they do not exist. Useful when a backup fail.
|
|
"assetFiles": false,
|
|
|
|
// Set to true to rebuild contents.
|
|
"contents": false,
|
|
|
|
// Set to true to rebuild rules.
|
|
"rules": false,
|
|
|
|
// Set to true to rebuild schemas.
|
|
"schemas": false
|
|
},
|
|
|
|
// A list of configuration values that should be exposed from the info endpoint and in the UI.
|
|
"exposedConfiguration": {
|
|
"version": "squidex:version"
|
|
},
|
|
|
|
// Kafka Producer configuration
|
|
"kafka": {
|
|
"bootstrapServers": ""
|
|
},
|
|
|
|
// The client information for twitter.
|
|
"twitter": {
|
|
"clientId": "QZhb3HQcGCvE6G8yNNP9ksNet",
|
|
"clientSecret": "Pdu9wdN72T33KJRFdFy1w4urBKDRzIyuKpc0OItQC2E616DuZD"
|
|
},
|
|
|
|
// Tthe template repositories
|
|
"templates": {
|
|
"repositories": [
|
|
{
|
|
// The url to download readme files.
|
|
"contentUrl": "https://raw.githubusercontent.com/Squidex/templates/main",
|
|
|
|
// The url to the git repository.
|
|
"gitUrl": "https://github.com/Squidex/templates.git"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|