123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559 |
- /**
- * THIS IS THE SETTINGS FILE THAT IS COPIED INSIDE THE DOCKER CONTAINER.
- *
- * By default, some runtime customizations are supported (see the
- * documentation).
- *
- * If you need more control, edit this file and rebuild the container.
- */
- /*
- * This file must be valid JSON. But comments are allowed
- *
- * Please edit settings.json, not settings.json.template
- *
- * Please note that starting from Etherpad 1.6.0 you can store DB credentials in
- * a separate file (credentials.json).
- *
- *
- * ENVIRONMENT VARIABLE SUBSTITUTION
- * =================================
- *
- * All the configuration values can be read from environment variables using the
- * syntax "${ENV_VAR}" or "${ENV_VAR:default_value}".
- *
- * This is useful, for example, when running in a Docker container.
- *
- * EXAMPLE:
- * "port": "${PORT:9001}"
- * "minify": "${MINIFY}"
- * "skinName": "${SKIN_NAME:colibris}"
- *
- * Would read the configuration values for those items from the environment
- * variables PORT, MINIFY and SKIN_NAME.
- *
- * If PORT and SKIN_NAME variables were not defined, the default values 9001 and
- * "colibris" would be used.
- * The configuration value "minify", on the other hand, does not have a
- * designated default value. Thus, if the environment variable MINIFY were
- * undefined, "minify" would be null.
- *
- * REMARKS:
- * 1) please note that variable substitution always needs to be quoted.
- *
- * "port": 9001, <-- Literal values. When not using
- * "minify": false substitution, only strings must be
- * "skinName": "colibris" quoted. Booleans and numbers must not.
- *
- * "port": "${PORT:9001}" <-- CORRECT: if you want to use a variable
- * "minify": "${MINIFY:true}" substitution, put quotes around its name,
- * "skinName": "${SKIN_NAME}" even if the required value is a number or
- * a boolean.
- * Etherpad will take care of rewriting it
- * to the proper type if necessary.
- *
- * "port": ${PORT:9001} <-- ERROR: this is not valid json. Quotes
- * "minify": ${MINIFY} around variable names are missing.
- * "skinName": ${SKIN_NAME}
- *
- * 2) Beware of undefined variables and default values: nulls and empty strings
- * are different!
- *
- * This is particularly important for user's passwords (see the relevant
- * section):
- *
- * "password": "${PASSW}" // if PASSW is not defined would result in password === null
- * "password": "${PASSW:}" // if PASSW is not defined would result in password === ''
- *
- * If you want to use an empty value (null) as default value for a variable,
- * simply do not set it, without putting any colons: "${ABIWORD}".
- *
- * 3) if you want to use newlines in the default value of a string parameter,
- * use "\n" as usual.
- *
- * "defaultPadText" : "${DEFAULT_PAD_TEXT}Line 1\nLine 2"
- */
- {
- /*
- * Name your instance!
- */
- "title": "{{title}}",
- /*
- * favicon default name
- * alternatively, set up a fully specified Url to your own favicon
- */
- "favicon": "{{favicon}}",
- /*
- * Skin name.
- *
- * Its value has to be an existing directory under src/static/skins.
- * You can write your own, or use one of the included ones:
- *
- * - "no-skin": an empty skin (default). This yields the unmodified,
- * traditional Etherpad theme.
- * - "colibris": the new experimental skin (since Etherpad 1.8), candidate to
- * become the default in Etherpad 2.0
- */
- "skinName": "colibris",
- /*
- * Skin Variants
- *
- * Use the UI skin variants builder at /p/test#skinvariantsbuilder
- *
- * For the colibris skin only, you can choose how to render the three main
- * containers:
- * - toolbar (top menu with icons)
- * - editor (containing the text of the pad)
- * - background (area outside of editor, mostly visible when using page style)
- *
- * For each of the 3 containers you can choose 4 color combinations:
- * super-light, light, dark, super-dark.
- *
- * For example, to make the toolbar dark, you will include "dark-toolbar" into
- * skinVariants.
- *
- * You can provide multiple skin variants separated by spaces. Default
- * skinVariant is "super-light-toolbar super-light-editor light-background".
- *
- * For the editor container, you can also make it full width by adding
- * "full-width-editor" variant (by default editor is rendered as a page, with
- * a max-width of 900px).
- */
- "skinVariants": "dark-toolbar super-light-editor super-dark-background",
- /*
- * IP and port which Etherpad should bind at.
- *
- * Binding to a Unix socket is also supported: just use an empty string for
- * the ip, and put the full path to the socket in the port parameter.
- *
- * EXAMPLE USING UNIX SOCKET:
- * "ip": "", // <-- has to be an empty string
- * "port" : "/somepath/etherpad.socket", // <-- path to a Unix socket
- */
- "ip": "{{listen_ip}}",
- "port": "{{listen_port}}",
- /*
- * Option to hide/show the settings.json in admin page.
- *
- * Default option is set to true
- */
- "showSettingsInAdminPage": true,
- /*
- * Node native SSL support
- *
- * This is disabled by default.
- * Make sure to have the minimum and correct file access permissions set so
- * that the Etherpad server can access them
- */
- /*
- "ssl" : {
- "key" : "/path-to-your/epl-server.key",
- "cert" : "/path-to-your/epl-server.crt",
- "ca": ["/path-to-your/epl-intermediate-cert1.crt", "/path-to-your/epl-intermediate-cert2.crt"]
- },
- */
- /*
- * The type of the database.
- *
- * You can choose between many DB drivers, for example: dirty, postgres,
- * sqlite, mysql.
- *
- * You shouldn't use "dirty" for for anything else than testing or
- * development.
- *
- *
- * Database specific settings are dependent on dbType, and go in dbSettings.
- * Remember that since Etherpad 1.6.0 you can also store these informations in
- * credentials.json.
- *
- * For a complete list of the supported drivers, please refer to:
- * https://www.npmjs.com/package/ueberdb2
- */
- "dbType": "postgres",
- "dbSettings": {
- "host": "/var/run/postgresql",
- "database": "etherpad",
- "user": "etherpad",
- "password": "{{database_password}}",
- "charset": "utf8mb4"
- },
- /**
- * The default text of a pad
- */
- "defaultPadText" : "{{pad_default_text|replace("\n","\\n")}}",
- /*
- * Default Pad behavior.
- *
- * Change them if you want to override.
- */
- "padOptions": {
- "noColors": false,
- "showControls": true,
- "showChat": true,
- "showLineNumbers": true,
- "useMonospaceFont": true,
- "userName": false,
- "userColor": false,
- "rtl": false,
- "alwaysShowChat": false,
- "chatAndUsers": false,
- "lang": "{{pad_lang}}"
- },
- /*
- * Pad Shortcut Keys
- */
- "padShortcutEnabled" : {
- "altF9": true, /* focus on the File Menu and/or editbar */
- "altC": true, /* focus on the Chat window */
- "cmdShift2": true, /* shows a gritter popup showing a line author */
- "delete": true,
- "return": true,
- "esc": true, /* in mozilla versions 14-19 avoid reconnecting pad */
- "cmdS": true, /* save a revision */
- "tab": true, /* indent */
- "cmdZ": true, /* undo/redo */
- "cmdY": true, /* redo */
- "cmdI": true, /* italic */
- "cmdB": true, /* bold */
- "cmdU": true, /* underline */
- "cmd5": true, /* strike through */
- "cmdShiftL": true, /* unordered list */
- "cmdShiftN": true, /* ordered list */
- "cmdShift1": true, /* ordered list */
- "cmdShiftC": true, /* clear authorship */
- "cmdH": true, /* backspace */
- "ctrlHome": true, /* scroll to top of pad */
- "pageUp": true,
- "pageDown": true
- },
- /*
- * Should we suppress errors from being visible in the default Pad Text?
- */
- "suppressErrorsInPadText": true,
- /*
- * If this option is enabled, a user must have a session to access pads.
- * This effectively allows only group pads to be accessed.
- */
- "requireSession": false,
- /*
- * Users may edit pads but not create new ones.
- *
- * Pad creation is only via the API.
- * This applies both to group pads and regular pads.
- */
- "editOnly": false,
- /*
- * If set to true, those users who have a valid session will automatically be
- * granted access to password protected pads.
- */
- "sessionNoPassword": false,
- /*
- * If true, all css & js will be minified before sending to the client.
- *
- * This will improve the loading performance massively, but makes it difficult
- * to debug the javascript/css
- */
- "minify": true,
- /*
- * How long may clients use served javascript code (in seconds)?
- *
- * Not setting this may cause problems during deployment.
- * Set to 0 to disable caching.
- */
- "maxAge": 21600, // 60 * 60 * 6 = 6 hours
- /*
- * Absolute path to the Abiword executable.
- *
- * Abiword is needed to get advanced import/export features of pads. Setting
- * it to null disables Abiword and will only allow plain text and HTML
- * import/exports.
- */
- "abiword": null,
- /*
- * This is the absolute path to the soffice executable.
- *
- * LibreOffice can be used in lieu of Abiword to export pads.
- * Setting it to null disables LibreOffice exporting.
- */
- "soffice": "/usr/bin/soffice",
- /*
- * Path to the Tidy executable.
- *
- * Tidy is used to improve the quality of exported pads.
- * Setting it to null disables Tidy.
- */
- "tidyHtml": "/usr/bin/tidy",
- /*
- * Allow import of file types other than the supported ones:
- * txt, doc, docx, rtf, odt, html & htm
- */
- "allowUnknownFileEnds": true,
- /*
- * This setting is used if you require authentication of all users.
- *
- * Note: "/admin" always requires authentication.
- */
- "requireAuthentication": false,
- /*
- * Require authorization by a module, or a user with is_admin set, see below.
- */
- "requireAuthorization": false,
- /*
- * When you use NGINX or another proxy/load-balancer set this to true.
- *
- * This is especially necessary when the reverse proxy performs SSL
- * termination, otherwise the cookies will not have the "secure" flag.
- *
- * The other effect will be that the logs will contain the real client's IP,
- * instead of the reverse proxy's IP.
- */
- "trustProxy": true,
- /*
- * Privacy: disable IP logging
- */
- "disableIPlogging": true,
- /*
- * Time (in seconds) to automatically reconnect pad when a "Force reconnect"
- * message is shown to user.
- *
- * Set to 0 to disable automatic reconnection.
- */
- "automaticReconnectionTimeout": 2,
- /*
- * By default, when caret is moved out of viewport, it scrolls the minimum
- * height needed to make this line visible.
- */
- "scrollWhenFocusLineIsOutOfViewport": {
- /*
- * Percentage of viewport height to be additionally scrolled.
- *
- * E.g.: use "percentage.editionAboveViewport": 0.5, to place caret line in
- * the middle of viewport, when user edits a line above of the
- * viewport
- *
- * Set to 0 to disable extra scrolling
- */
- "percentage": {
- "editionAboveViewport": 0.2,
- "editionBelowViewport": 0.2
- },
- /*
- * Time (in milliseconds) used to animate the scroll transition.
- * Set to 0 to disable animation
- */
- "duration": 200,
- /*
- * Flag to control if it should scroll when user places the caret in the
- * last line of the viewport
- */
- "scrollWhenCaretIsInTheLastLineOfViewport": true,
- /*
- * Percentage of viewport height to be additionally scrolled when user
- * presses arrow up in the line of the top of the viewport.
- *
- * Set to 0 to let the scroll to be handled as default by Etherpad
- */
- "percentageToScrollWhenUserPressesArrowUp": 0
- },
- /*
- * Users for basic authentication.
- *
- * is_admin = true gives access to /admin.
- * If you do not uncomment this, /admin will not be available!
- *
- * WARNING: passwords should not be stored in plaintext in this file.
- * If you want to mitigate this, please install ep_hash_auth and
- * follow the section "secure your installation" in README.md
- */
- "users": {
- "admin": {
- // 1) "password" can be replaced with "hash" if you install ep_hash_auth
- // 2) please note that if password is null, the user will not be created
- "password": "{{pad_admin_password}}",
- "is_admin": true
- },
- },
- /*
- * Restrict socket.io transport methods
- */
- "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],
- /*
- * Allow Load Testing tools to hit the Etherpad Instance.
- *
- * WARNING: this will disable security on the instance.
- */
- "loadTest": false,
- /*
- * Disable indentation on new line when previous line ends with some special
- * chars (':', '[', '(', '{')
- */
- /*
- "indentationOnNewLine": false,
- */
- /*
- * From Etherpad 1.8.3 onwards, import and export of pads is always rate
- * limited.
- *
- * The default is to allow at most 10 requests per IP in a 90 seconds window.
- * After that the import/export request is rejected.
- *
- * See https://github.com/nfriedly/express-rate-limit for more options
- */
- "importExportRateLimiting": {
- // duration of the rate limit window (milliseconds)
- "windowMs": 90000,
- // maximum number of requests per IP to allow during the rate limit window
- "max": 10
- },
- /*
- * From Etherpad 1.8.3 onwards, the maximum allowed size for a single imported
- * file is always bounded.
- *
- * File size is specified in bytes. Default is 50 MB.
- */
- "importMaxFileSize": 52428800, // 50 * 1024 * 1024
- /*
- * Toolbar buttons configuration.
- *
- * Uncomment to customize.
- */
- /*
- "toolbar": {
- "left": [
- ["bold", "italic", "underline", "strikethrough"],
- ["orderedlist", "unorderedlist", "indent", "outdent"],
- ["undo", "redo"],
- ["clearauthorship"]
- ],
- "right": [
- ["importexport", "timeslider", "savedrevision"],
- ["settings", "embed"],
- ["showusers"]
- ],
- "timeslider": [
- ["timeslider_export", "timeslider_returnToPad"]
- ]
- },
- */
- /*
- * Expose Etherpad version in the web interface and in the Server http header.
- *
- * Do not enable on production machines.
- */
- "exposeVersion": false,
- /*
- * The log level we are using.
- *
- * Valid values: DEBUG, INFO, WARN, ERROR
- */
- "loglevel": "{{log_level}}",
- /*
- * Logging configuration. See log4js documentation for further information:
- * https://github.com/nomiddlename/log4js-node
- *
- * You can add as many appenders as you want here.
- */
- "logconfig" :
- { "appenders": [
- { "type": "console"
- //, "category": "access"// only logs pad access
- }
- /*
- , { "type": "file"
- , "filename": "your-log-file-here.log"
- , "maxLogSize": 1024
- , "backups": 3 // how many log files there're gonna be at max
- //, "category": "test" // only log a specific category
- }
- */
- /*
- , { "type": "logLevelFilter"
- , "level": "warn" // filters out all log messages that have a lower level than "error"
- , "appender":
- { Use whatever appender you want here }
- }
- */
- /*
- , { "type": "logLevelFilter"
- , "level": "error" // filters out all log messages that have a lower level than "error"
- , "appender":
- { "type": "smtp"
- , "subject": "An error occurred in your EPL instance!"
- , "recipients": "bar@blurdybloop.com, baz@blurdybloop.com"
- , "sendInterval": 300 // 60 * 5 = 5 minutes -- will buffer log messages; set to 0 to send a mail for every message
- , "transport": "SMTP", "SMTP": { // see https://github.com/andris9/Nodemailer#possible-transport-methods
- "host": "smtp.example.com", "port": 465,
- "secureConnection": true,
- "auth": {
- "user": "foo@example.com",
- "pass": "bar_foo"
- }
- }
- }
- }
- */
- ]
- },
- "ep_delete_after_delay_lite": {
- "delay": 86400, // one day, in seconds
- "loop": true,
- "loopDelay": 3600, // one hour, in seconds
- "deleteAtStart": true,
- "text": "{{pad_default_text|replace("\n","\\n")}}"
- },
- "ep_toc": {
- "disable_by_default": true
- }
- }
|