settings.defaults.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. const http = require('http')
  2. http.globalAgent.maxSockets = 300
  3. const Settings = {
  4. internal: {
  5. docstore: {
  6. port: 3016,
  7. host: process.env.LISTEN_ADDRESS || 'localhost',
  8. },
  9. },
  10. mongo: {},
  11. docstore: {
  12. archiveOnSoftDelete: process.env.ARCHIVE_ON_SOFT_DELETE === 'true',
  13. keepSoftDeletedDocsArchived:
  14. process.env.KEEP_SOFT_DELETED_DOCS_ARCHIVED === 'true',
  15. backend: process.env.BACKEND,
  16. healthCheck: {
  17. project_id: process.env.HEALTH_CHECK_PROJECT_ID,
  18. },
  19. bucket: process.env.BUCKET_NAME || process.env.AWS_BUCKET || 'bucket',
  20. gcs: {
  21. unlockBeforeDelete: process.env.GCS_UNLOCK_BEFORE_DELETE === 'true',
  22. deletedBucketSuffix: process.env.GCS_DELETED_BUCKET_SUFFIX,
  23. deleteConcurrency: parseInt(process.env.GCS_DELETE_CONCURRENCY) || 50,
  24. },
  25. },
  26. max_deleted_docs: parseInt(process.env.MAX_DELETED_DOCS, 10) || 2000,
  27. max_doc_length: parseInt(process.env.MAX_DOC_LENGTH) || 2 * 1024 * 1024, // 2mb
  28. maxJsonRequestSize:
  29. parseInt(process.env.MAX_JSON_REQUEST_SIZE) || 6 * 1024 * 1024, // 6 MB
  30. unArchiveBatchSize: parseInt(process.env.UN_ARCHIVE_BATCH_SIZE, 10) || 50,
  31. parallelArchiveJobs: parseInt(process.env.PARALLEL_ARCHIVE_JOBS, 10) || 5,
  32. archivingLockDurationMs:
  33. parseInt(process.env.ARCHIVING_LOCK_DURATION_MS, 10) || 60000,
  34. }
  35. if (process.env.MONGO_CONNECTION_STRING) {
  36. Settings.mongo.url = process.env.MONGO_CONNECTION_STRING
  37. } else if (process.env.MONGO_HOST) {
  38. Settings.mongo.url = `mongodb://${process.env.MONGO_HOST}/sharelatex`
  39. } else {
  40. Settings.mongo.url = 'mongodb://127.0.0.1/sharelatex'
  41. }
  42. if (
  43. process.env.AWS_ACCESS_KEY_ID &&
  44. process.env.AWS_SECRET_ACCESS_KEY &&
  45. process.env.AWS_BUCKET
  46. ) {
  47. Settings.docstore.s3 = {
  48. key: process.env.AWS_ACCESS_KEY_ID,
  49. secret: process.env.AWS_SECRET_ACCESS_KEY,
  50. bucket: process.env.AWS_BUCKET,
  51. endpoint: process.env.AWS_S3_ENDPOINT,
  52. pathStyle: process.env.AWS_S3_PATH_STYLE,
  53. partSize: parseInt(process.env.AWS_S3_PARTSIZE) || 100 * 1024 * 1024,
  54. }
  55. }
  56. if (process.env.GCS_API_ENDPOINT) {
  57. Settings.docstore.gcs.endpoint = {
  58. apiEndpoint: process.env.GCS_API_ENDPOINT,
  59. apiScheme: process.env.GCS_API_SCHEME,
  60. projectId: process.env.GCS_PROJECT_ID,
  61. }
  62. }
  63. if (process.env.FALLBACK_BACKEND) {
  64. Settings.docstore.fallback = {
  65. backend: process.env.FALLBACK_BACKEND,
  66. // mapping of bucket names on the fallback, to bucket names on the primary.
  67. // e.g. { myS3UserFilesBucketName: 'myGoogleUserFilesBucketName' }
  68. buckets: JSON.parse(process.env.FALLBACK_BUCKET_MAPPING || '{}'),
  69. copyOnMiss: process.env.COPY_ON_MISS === 'true',
  70. }
  71. }
  72. module.exports = Settings