# --------------------------------- # DO NOT EDIT THIS FILE! # This is reserved for system use! # --------------------------------- name: Wiki.js defaults: config: # File defaults port: 80 db: host: localhost port: 5432 user: wikijs pass: wikijsrocks db: wiki ssl: false sslOptions: auto: true schema: wiki ssl: enabled: false pool: min: 1 bindIP: 0.0.0.0 logLevel: info logFormat: default offline: false dataPath: ./data # In BYTES. Fastify's `bodyLimit` takes an integer and refuses anything else at boot, unlike the # 2.x body parser this default was written for, which took '5mb'. bodyParserLimit: 5242880 icons: # Iconify API the wiki fetches icons from the first time they are used. Point this at a # self-hosted Iconify API to keep icon lookups inside your network. apiUrl: 'https://api.iconify.design' files: # How much of /cache/files the served copies of uploaded files may take up, in bytes. # Trimmed back oldest-first once it is exceeded. Set to 0 to serve every request from the # database instead. cacheMaxSize: 536870912 scheduler: workers: 3 pollingCheck: 5 scheduledCheck: 300 maxRetries: 2 retryBackoff: 60 historyExpiration: 90000 # How long, in seconds, a job running in a worker thread may take before the scheduler stops # waiting for it and counts it as failed. A safety net rather than a schedule: a worker thread # that dies mid-task never answers at all, and without a ceiling the scheduler waits forever. taskTimeout: 300 # How long, in seconds, a job may sit marked as running before it is assumed that whatever was # running it is gone, and it is requeued. Deliberately generous: it has to outlast the longest # job the instance legitimately runs, since the alternative is starting a second copy of one. staleJobTimeout: 3600 # DB defaults api: isEnabled: false audit: # How many days of audit log to keep. Rows older than this are deleted by the `purgeAuditLog` # task, which runs daily. Set to 0 to keep everything for ever. # # Either 0 or at least 30: a shorter window would let somebody act and have the record of it # purged before anybody had reason to look. A value between the two is read as 30 rather than # honoured, wherever it came from. retentionDays: 90 mail: senderName: '' senderEmail: '' # Where links in emails point. Left empty, the host the request came in on is used instead — # which is right for a small instance and wrong behind a proxy or on a private address. defaultBaseURL: '' host: '' port: 465 name: '' secure: true verifySSL: true user: '' pass: '' useDKIM: false dkimDomainName: '' dkimKeySelector: '' dkimPrivateKey: '' metrics: isEnabled: false # The URL path the Prometheus exposition is served at. While the endpoint is enabled it takes # this path over from the page tree; turned off, nothing is registered and a page here is # served normally. path: '/metrics' # Which addresses may scrape without credentials. Anything else has to carry an API key or a # session holding `read:metrics`. Note that what an address means depends on # `security.trustProxy`: with it off, a wiki behind a reverse proxy sees the proxy's address # for every request. allowAnonymousLocal: true allowAnonymousPrivate: true allowAnonymousExternal: false # Which groups of metrics the exposition carries: the Node.js process (CPU, memory, GC, event # loop) and the wiki itself (content totals, job queue, scheduler health). The wiki group is # off by default because every one of its gauges is a count read fresh, so a scrape of it costs # about a dozen database queries. includeRuntime: true includeWiki: false auth: autoLogin: false enforce2FA: false hideLocal: false loginBgUrl: '' secret: 'abcdef1234567890abcdef1234567890abcdef' security: corsMode: 'OFF' corsConfig: '' enforceCsp: false trustProxy: false enforceHsts: false hstsDuration: 0 cspDirectives: '' uploadScanSVG: true disallowIframe: true uploadMaxFiles: 20 uploadMaxFileSize: 10485760 forceAssetDownload: true disallowOpenRedirect: true enforceSameOriginReferrerPolicy: true authRateLimitEnabled: true authRateLimitMax: 10 authRateLimitWindow: '2m' authRateLimitBan: '15m' flags: experimental: false authDebug: false sqlLog: false userDefaults: timezone: 'America/New_York' dateFormat: 'YYYY-MM-DD' timeFormat: '12h' # System defaults channel: NEXT cors: credentials: true maxAge: 600 methods: 'GET,POST' origin: true maintainerEmail: security@requarks.io tsDictMappings: ar: arabic hy: armenian eu: basque ca: catalan da: danish nl: dutch en: english fi: finnish fr: french de: german el: greek hi: hindi hu: hungarian id: indonesian ga: irish it: italian lt: lithuanian ne: nepali no: norwegian pt: portuguese ro: romanian ru: russian sr: serbian es: spanish sv: swedish ta: tamil tr: turkish yi: yiddish editors: asciidoc: contentType: html config: {} markdown: contentType: markdown config: allowHTML: true linkify: true lineBreaks: true typographer: false underline: false tabWidth: 2 latexEngine: katex kroki: true plantuml: true multimdTable: true wysiwyg: contentType: html config: {} systemIds: localAuthId: '5a528c4c-0a82-4ad2-96a5-2b23811e6588' guestsGroupId: '10000000-0000-4000-8000-000000000001' usersGroupId: '20000000-0000-4000-8000-000000000002' groups: defaultPermissions: - 'read:pages' - 'read:assets' - 'read:comments' - 'write:comments' defaultRules: - name: Default Rule mode: ALLOW match: START roles: - 'read:pages' - 'read:assets' - 'read:comments' - 'write:comments' path: '' locales: [] sites: []