1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/cryptpad_ynh.git synced 2024-09-03 18:26:14 +02:00
cryptpad_ynh/conf/config.js

341 lines
13 KiB
JavaScript
Raw Normal View History

2024-05-24 09:26:32 +02:00
// SPDX-FileCopyrightText: 2023 XWiki CryptPad Team <contact@cryptpad.org> and contributors
//
// SPDX-License-Identifier: AGPL-3.0-or-later
/* globals module */
2018-12-05 23:14:08 +01:00
/* DISCLAIMER:
2018-12-05 23:14:08 +01:00
There are two recommended methods of running a CryptPad instance:
2018-12-05 23:14:08 +01:00
1. Using a standalone nodejs server without HTTPS (suitable for local development)
2. Using NGINX to serve static assets and to handle HTTPS for API server's websocket traffic
2018-12-05 23:14:08 +01:00
We do not officially recommend or support Apache, Docker, Kubernetes, Traefik, or any other configuration.
Support requests for such setups should be directed to their authors.
2018-12-05 23:14:08 +01:00
If you're having difficulty difficulty configuring your instance
2024-05-24 09:26:32 +02:00
we suggest that you join the project's Matrix channel.
2018-12-05 23:14:08 +01:00
If you don't have any difficulty configuring your instance and you'd like to
support us for the work that went into making it pain-free we are quite happy
to accept donations via our opencollective page: https://opencollective.com/cryptpad
2018-12-05 23:14:08 +01:00
*/
module.exports = {
/* CryptPad is designed to serve its content over two domains.
* Account passwords and cryptographic content is handled on the 'main' domain,
* while the user interface is loaded on a 'sandbox' domain
* which can only access information which the main domain willingly shares.
*
* In the event of an XSS vulnerability in the UI (that's bad)
* this system prevents attackers from gaining access to your account (that's good).
*
* Most problems with new instances are related to this system blocking access
* because of incorrectly configured sandboxes. If you only see a white screen
* when you try to load CryptPad, this is probably the cause.
*
* PLEASE READ THE FOLLOWING COMMENTS CAREFULLY.
*
*/
/* httpUnsafeOrigin is the URL that clients will enter to load your instance.
* Any other URL that somehow points to your instance is supposed to be blocked.
* The default provided below assumes you are loading CryptPad from a server
* which is running on the same machine, using port 3000.
*
* In a production instance this should be available ONLY over HTTPS
* using the default port for HTTPS (443) ie. https://cryptpad.fr
2021-01-23 10:48:39 +01:00
* In such a case this should be also handled by NGINX, as documented in
* cryptpad/docs/example.nginx.conf (see the $main_domain variable)
*
*/
2021-07-08 00:04:31 +02:00
httpUnsafeOrigin: 'https://__DOMAIN__',
/* httpSafeOrigin is the URL that is used for the 'sandbox' described above.
* If you're testing or developing with CryptPad on your local machine then
* it is appropriate to leave this blank. The default behaviour is to serve
2024-05-24 09:26:32 +02:00
* the main domain over port 3000 and to serve the sandbox content over port 3001.
*
* This is not appropriate in a production environment where invasive networks
* may filter traffic going over abnormal ports.
* To correctly configure your production instance you must provide a URL
* with a different domain (a subdomain is sufficient).
* It will be used to load the UI in our 'sandbox' system.
*
* This value corresponds to the $sandbox_domain variable
* in the example nginx file.
*
2024-05-24 09:26:32 +02:00
* Note that in order for the sandboxing system to be effective
* httpSafeOrigin must be different from httpUnsafeOrigin.
*
* CUSTOMIZE AND UNCOMMENT THIS FOR PRODUCTION INSTALLATIONS.
*/
2023-02-13 10:56:17 +01:00
httpSafeOrigin: "https://__SANDBOXDOMAIN__",
/* httpAddress specifies the address on which the nodejs server
2024-05-24 09:26:32 +02:00
* should be accessible. By default it will listen on localhost
* (IPv4 & IPv6 if enabled). If you want it to listen on
* a specific address, specify it here. e.g '192.168.0.1'
*
*/
2024-05-24 11:10:41 +02:00
httpAddress: 'localhost',
2018-12-05 23:14:08 +01:00
/* httpPort specifies on which port the nodejs server should listen.
* By default it will serve content over port 3000, which is suitable
* for both local development and for use with the provided nginx example,
* which will proxy websocket traffic to your node server.
*
*/
httpPort: __PORT__,
2018-12-05 23:14:08 +01:00
/* httpSafePort allows you to specify an alternative port from which
* the node process should serve sandboxed assets. The default value is
* that of your httpPort + 1. You probably don't need to change this.
*
*/
2023-03-12 08:42:18 +01:00
httpSafePort: __PORT_PORTI__,
2018-12-05 23:14:08 +01:00
2024-05-24 09:26:32 +02:00
/* Websockets need to be exposed on a separate port from the rest of
* the platform's HTTP traffic. Port 3003 is used by default.
* You can change this to a different port if it is in use by a
* different service, but under most circumstances you can leave this
* commented and it will work.
*
* In production environments, your reverse proxy (usually NGINX)
* will need to forward websocket traffic (/cryptpad_websocket)
* to this port.
*
*/
websocketPort: __PORT_SOCKET__,
/* CryptPad will launch a child process for every core available
* in order to perform CPU-intensive tasks in parallel.
* Some host environments may have a very large number of cores available
* or you may want to limit how much computing power CryptPad can take.
* If so, set 'maxWorkers' to a positive integer.
*/
// maxWorkers: 4,
2018-12-05 23:14:08 +01:00
2019-10-01 19:30:18 +02:00
/* =====================
2024-05-24 09:26:32 +02:00
* Sessions
2019-10-01 19:30:18 +02:00
* ===================== */
2018-12-05 23:14:08 +01:00
2024-05-24 09:26:32 +02:00
/* Accounts can be protected with an OTP (One Time Password) system
* to add a second authentication layer. Such accounts use a session
* with a given lifetime after which they are logged out and need
* to be re-authenticated. You can configure the lifetime of these
* sessions here.
*
* defaults to 7 days
2019-10-01 19:30:18 +02:00
*/
2024-05-24 09:26:32 +02:00
//otpSessionExpiration: 7*24, // hours
2019-10-01 19:30:18 +02:00
2024-05-24 09:26:32 +02:00
/* Registered users can be forced to protect their account
* with a Multi-factor Authentication (MFA) tool like a TOTP
* authenticator application.
2021-08-17 14:50:28 +02:00
*
2024-05-24 09:26:32 +02:00
* defaults to false
2021-08-17 14:50:28 +02:00
*/
2024-05-24 09:26:32 +02:00
//enforceMFA: false,
2021-08-17 14:50:28 +02:00
2024-05-24 09:26:32 +02:00
/* =====================
* Privacy
* ===================== */
2021-07-08 00:03:11 +02:00
2024-05-24 09:26:32 +02:00
/* Depending on where your instance is hosted, you may be required to log IP
* addresses of the users who make a change to a document. This setting allows you
* to do so. You can configure the logging system below in this config file.
* Setting this value to true will include a log for each websocket connection
* including this connection's unique ID, the user public key and the IP.
* NOTE: this option requires a log level of "info" or below.
2021-08-17 14:02:36 +02:00
*
2024-05-24 09:26:32 +02:00
* defaults to false
2021-08-17 14:02:36 +02:00
*/
2024-05-24 09:26:32 +02:00
//logIP: false,
/* =====================
* Admin
* ===================== */
2021-08-17 14:02:36 +02:00
2021-08-17 13:59:46 +02:00
/*
2024-05-24 09:26:32 +02:00
* CryptPad contains an administration panel. Its access is restricted to specific
* users using the following list.
* To give access to the admin panel to a user account, just add their public signing
* key, which can be found on the settings page for registered users.
* Entries should be strings separated by a comma.
* adminKeys: [
* "[cryptpad-user1@my.awesome.website/YZgXQxKR0Rcb6r6CmxHPdAGLVludrAF2lEnkbx1vVOo=]",
* "[cryptpad-user2@my.awesome.website/jA-9c5iNuG7SyxzGCjwJXVnk5NPfAOO8fQuQ0dC83RE=]",
* ]
2021-08-17 13:59:46 +02:00
*
*/
2024-05-24 09:26:32 +02:00
adminKeys: [
],
2021-08-17 13:59:46 +02:00
2019-10-01 19:30:18 +02:00
/* =====================
* STORAGE
2019-10-01 19:30:18 +02:00
* ===================== */
/* Pads that are not 'pinned' by any registered user can be set to expire
* after a configurable number of days of inactivity (default 90 days).
* The value can be changed or set to false to remove expiration.
* Expired pads can then be removed using a cron job calling the
* `evict-inactive.js` script with node
2018-12-05 23:14:08 +01:00
*
* defaults to 90 days if nothing is provided
2019-10-01 19:30:18 +02:00
*/
//inactiveTime: 90, // days
2019-10-01 19:30:18 +02:00
/* CryptPad archives some data instead of deleting it outright.
* This archived data still takes up space and so you'll probably still want to
* remove these files after a brief period.
*
2024-05-24 09:26:32 +02:00
* cryptpad/scripts/evict-archived.js is intended to be run daily
* from a crontab or similar scheduling service.
2018-12-05 23:14:08 +01:00
*
* The intent with this feature is to provide a safety net in case of accidental
* deletion. Set this value to the number of days you'd like to retain
* archived data before it's removed permanently.
*
* defaults to 15 days if nothing is provided
2018-12-05 23:14:08 +01:00
*/
//archiveRetentionTime: 15,
2018-12-05 23:14:08 +01:00
2021-01-23 10:48:39 +01:00
/* It's possible to configure your instance to remove data
* stored on behalf of inactive accounts. Set 'accountRetentionTime'
* to the number of days an account can remain idle before its
* documents and other account data is removed.
*
* Leave this value commented out to preserve all data stored
* by user accounts regardless of inactivity.
*/
//accountRetentionTime: 365,
/* Starting with CryptPad 3.23.0, the server automatically runs
* the script responsible for removing inactive data according to
* your configured definition of inactivity. Set this value to `true`
* if you prefer not to remove inactive data, or if you prefer to
* do so manually using `scripts/evict-inactive.js`.
*/
//disableIntegratedEviction: true,
/* Max Upload Size (bytes)
* this sets the maximum size of any one file uploaded to the server.
* anything larger than this size will be rejected
* defaults to 20MB if no value is provided
2018-12-05 23:14:08 +01:00
*/
//maxUploadSize: 20 * 1024 * 1024,
2018-12-05 23:14:08 +01:00
/* Users with premium accounts (those with a plan included in their customLimit)
* can benefit from an increased upload size limit. By default they are restricted to the same
* upload size as any other registered user.
2019-10-01 19:30:18 +02:00
*
*/
//premiumUploadSize: 100 * 1024 * 1024,
2019-10-01 19:30:18 +02:00
/* =====================
* DATABASE VOLUMES
* ===================== */
2018-12-05 23:14:08 +01:00
/*
2019-10-01 19:30:18 +02:00
* CryptPad stores each document in an individual file on your hard drive.
* Specify a directory where files should be stored.
* It will be created automatically if it does not already exist.
*/
2018-12-05 23:14:08 +01:00
filePath: './datastore/',
2019-10-01 19:30:18 +02:00
/* CryptPad offers the ability to archive data for a configurable period
* before deleting it, allowing a means of recovering data in the event
* that it was deleted accidentally.
*
* To set the location of this archive directory to a custom value, change
* the path below:
*/
archivePath: './data/archive',
2018-12-05 23:14:08 +01:00
/* CryptPad allows logged in users to request that particular documents be
* stored by the server indefinitely. This is called 'pinning'.
* Pin requests are stored in a pin-store. The location of this store is
* defined here.
*/
pinPath: './data/pins',
2018-12-05 23:14:08 +01:00
2019-10-01 19:30:18 +02:00
/* if you would like the list of scheduled tasks to be stored in
a custom location, change the path below:
*/
taskPath: './data/tasks',
2019-10-01 19:30:18 +02:00
/* if you would like users' authenticated blocks to be stored in
a custom location, change the path below:
*/
blockPath: './block',
2018-12-05 23:14:08 +01:00
/* CryptPad allows logged in users to upload encrypted files. Files/blobs
* are stored in a 'blob-store'. Set its location here.
*/
blobPath: './blob',
/* CryptPad stores incomplete blobs in a 'staging' area until they are
* fully uploaded. Set its location here.
*/
blobStagingPath: './data/blobstage',
2018-12-05 23:14:08 +01:00
2021-04-01 11:01:26 +02:00
decreePath: './data/decrees',
2019-10-01 19:30:18 +02:00
/* CryptPad supports logging events directly to the disk in a 'logs' directory
* Set its location here, or set it to false (or nothing) if you'd rather not log
2018-12-05 23:14:08 +01:00
*/
2019-10-01 19:30:18 +02:00
logPath: './data/logs',
2018-12-05 23:14:08 +01:00
2019-10-01 19:30:18 +02:00
/* =====================
* Debugging
* ===================== */
2018-12-05 23:14:08 +01:00
2019-10-01 19:30:18 +02:00
/* CryptPad can log activity to stdout
* This may be useful for debugging
2018-12-05 23:14:08 +01:00
*/
2019-10-01 19:30:18 +02:00
logToStdout: false,
2018-12-05 23:14:08 +01:00
2019-10-01 19:30:18 +02:00
/* CryptPad can be configured to log more or less
* the various settings are listed below by order of importance
2018-12-05 23:14:08 +01:00
*
2019-10-01 19:30:18 +02:00
* silly, verbose, debug, feedback, info, warn, error
*
* Choose the least important level of logging you wish to see.
* For example, a 'silly' logLevel will display everything,
* while 'info' will display 'info', 'warn', and 'error' logs
*
* This will affect both logging to the console and the disk.
2018-12-05 23:14:08 +01:00
*/
2019-10-01 19:30:18 +02:00
logLevel: 'info',
2018-12-05 23:14:08 +01:00
/* clients can use the /settings/ app to opt out of usage feedback
* which informs the server of things like how much each app is being
* used, and whether certain clientside features are supported by
* the client's browser. The intent is to provide feedback to the admin
* such that the service can be improved. Enable this with `true`
* and ignore feedback with `false` or by commenting the attribute
2019-10-01 19:30:18 +02:00
*
* You will need to set your logLevel to include 'feedback'. Set this
* to false if you'd like to exclude feedback from your logs.
2018-12-05 23:14:08 +01:00
*/
2019-10-01 19:30:18 +02:00
logFeedback: false,
2018-12-05 23:14:08 +01:00
2019-10-01 19:30:18 +02:00
/* CryptPad supports verbose logging
* (false by default)
*/
verbose: false,
2021-07-07 13:07:57 +02:00
/* Surplus information:
*
* 'installMethod' is included in server telemetry to voluntarily
* indicate how many instances are using unofficial installation methods
* such as Docker.
*
*/
2023-02-10 15:36:15 +01:00
installMethod: 'yunohost',
};