settings.defaults.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. const Path = require('path');
  2. const http = require('http');
  3. http.globalAgent.maxSockets = 300;
  4. module.exports = {
  5. internal: {
  6. documentupdater: {
  7. host: process.env["LISTEN_ADDRESS"] || "localhost",
  8. port: 3003
  9. }
  10. },
  11. apis: {
  12. web: {
  13. url: `http://${process.env['WEB_API_HOST'] || process.env['WEB_HOST'] || "localhost"}:${process.env['WEB_API_PORT'] || process.env['WEB_PORT'] || 3000}`,
  14. user: process.env['WEB_API_USER'] || "sharelatex",
  15. pass: process.env['WEB_API_PASSWORD'] || "password"
  16. },
  17. trackchanges: {
  18. url: `http://${process.env["TRACK_CHANGES_HOST"] || "localhost"}:3015`
  19. },
  20. project_history: {
  21. enabled: true,
  22. url: `http://${process.env["PROJECT_HISTORY_HOST"] || "localhost"}:3054`
  23. }
  24. },
  25. redis: {
  26. pubsub: {
  27. host: process.env['PUBSUB_REDIS_HOST'] || process.env['REDIS_HOST'] || "localhost",
  28. port: process.env['PUBSUB_REDIS_PORT'] || process.env['REDIS_PORT'] || "6379",
  29. password: process.env["PUBSUB_REDIS_PASSWORD"] || process.env["REDIS_PASSWORD"] || "",
  30. maxRetriesPerRequest: parseInt(process.env['REDIS_MAX_RETRIES_PER_REQUEST'] || "20")
  31. },
  32. history: {
  33. port: process.env["HISTORY_REDIS_PORT"] || process.env["REDIS_PORT"] || "6379",
  34. host: process.env["HISTORY_REDIS_HOST"] || process.env["REDIS_HOST"] || "localhost",
  35. password: process.env["HISTORY_REDIS_PASSWORD"] || process.env["REDIS_PASSWORD"] || "",
  36. maxRetriesPerRequest: parseInt(process.env['REDIS_MAX_RETRIES_PER_REQUEST'] || "20"),
  37. key_schema: {
  38. uncompressedHistoryOps({doc_id}) { return `UncompressedHistoryOps:{${doc_id}}`; },
  39. docsWithHistoryOps({project_id}) { return `DocsWithHistoryOps:{${project_id}}`; }
  40. }
  41. },
  42. project_history: {
  43. port: process.env["NEW_HISTORY_REDIS_PORT"] || process.env["REDIS_PORT"] || "6379",
  44. host: process.env["NEW_HISTORY_REDIS_HOST"] || process.env["REDIS_HOST"] || "localhost",
  45. password: process.env["NEW_HISTORY_REDIS_PASSWORD"] || process.env["REDIS_PASSWORD"] || "",
  46. maxRetriesPerRequest: parseInt(process.env['REDIS_MAX_RETRIES_PER_REQUEST'] || "20"),
  47. key_schema: {
  48. projectHistoryOps({project_id}) { return `ProjectHistory:Ops:{${project_id}}`; },
  49. projectHistoryFirstOpTimestamp({project_id}) { return `ProjectHistory:FirstOpTimestamp:{${project_id}}`; }
  50. }
  51. },
  52. lock: {
  53. port: process.env["LOCK_REDIS_PORT"] || process.env["REDIS_PORT"] || "6379",
  54. host: process.env["LOCK_REDIS_HOST"] || process.env["REDIS_HOST"] || "localhost",
  55. password: process.env["LOCK_REDIS_PASSWORD"] || process.env["REDIS_PASSWORD"] || "",
  56. maxRetriesPerRequest: parseInt(process.env['REDIS_MAX_RETRIES_PER_REQUEST'] || "20"),
  57. key_schema: {
  58. blockingKey({doc_id}) { return `Blocking:{${doc_id}}`; }
  59. }
  60. },
  61. documentupdater: {
  62. port: process.env["DOC_UPDATER_REDIS_PORT"] || process.env["REDIS_PORT"] || "6379",
  63. host: process.env["DOC_UPDATER_REDIS_HOST"] || process.env["REDIS_HOST"] || "localhost",
  64. password: process.env["DOC_UPDATER_REDIS_PASSWORD"] || process.env["REDIS_PASSWORD"] || "",
  65. maxRetriesPerRequest: parseInt(process.env['REDIS_MAX_RETRIES_PER_REQUEST'] || "20"),
  66. key_schema: {
  67. blockingKey({doc_id}) { return `Blocking:{${doc_id}}`; },
  68. docLines({doc_id}) { return `doclines:{${doc_id}}`; },
  69. docOps({doc_id}) { return `DocOps:{${doc_id}}`; },
  70. docVersion({doc_id}) { return `DocVersion:{${doc_id}}`; },
  71. docHash({doc_id}) { return `DocHash:{${doc_id}}`; },
  72. projectKey({doc_id}) { return `ProjectId:{${doc_id}}`; },
  73. docsInProject({project_id}) { return `DocsIn:{${project_id}}`; },
  74. ranges({doc_id}) { return `Ranges:{${doc_id}}`; },
  75. unflushedTime({doc_id}) { return `UnflushedTime:{${doc_id}}`; },
  76. pathname({doc_id}) { return `Pathname:{${doc_id}}`; },
  77. projectHistoryId({doc_id}) { return `ProjectHistoryId:{${doc_id}}`; },
  78. projectHistoryType({doc_id}) { return `ProjectHistoryType:{${doc_id}}`; },
  79. projectState({project_id}) { return `ProjectState:{${project_id}}`; },
  80. pendingUpdates({doc_id}) { return `PendingUpdates:{${doc_id}}`; },
  81. lastUpdatedBy({doc_id}) { return `lastUpdatedBy:{${doc_id}}`; },
  82. lastUpdatedAt({doc_id}) { return `lastUpdatedAt:{${doc_id}}`; },
  83. pendingUpdates({doc_id}) { return `PendingUpdates:{${doc_id}}`; },
  84. flushAndDeleteQueue() { return "DocUpdaterFlushAndDeleteQueue"; }
  85. }
  86. }
  87. },
  88. max_doc_length: 2 * 1024 * 1024, // 2mb
  89. dispatcherCount: process.env["DISPATCHER_COUNT"],
  90. mongo: {
  91. url : process.env['MONGO_CONNECTION_STRING'] || `mongodb://${process.env['MONGO_HOST'] || '127.0.0.1'}/sharelatex`
  92. },
  93. sentry: {
  94. dsn: process.env.SENTRY_DSN
  95. },
  96. publishOnIndividualChannels: process.env['PUBLISH_ON_INDIVIDUAL_CHANNELS'] || false,
  97. continuousBackgroundFlush: process.env['CONTINUOUS_BACKGROUND_FLUSH'] || false,
  98. smoothingOffset: process.env['SMOOTHING_OFFSET'] || 1000, // milliseconds
  99. disableDoubleFlush: process.env['DISABLE_DOUBLE_FLUSH'] || false // don't flush track-changes for projects using project-history
  100. };