{ "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://.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<> [$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<> [$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<> [$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": "", // The secret key for your user. // // Read More: https://supsystic.com/documentation/id-secret-access-key-amazon-s3/ "secretKey": "", // 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" } ] } }