carta-controller 3.0.0-beta.1b → 3.0.0-dev.20220222

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +3 -3
  2. package/config/config_schema.json +29 -3
  3. package/config/example_backend.json +7 -0
  4. package/config/preference_backend_schema_2.json +105 -0
  5. package/dist/auth/index.js +4 -1
  6. package/dist/auth/index.js.map +1 -1
  7. package/dist/auth/ldap.js +1 -1
  8. package/dist/auth/ldap.js.map +1 -1
  9. package/dist/auth/local.js +38 -17
  10. package/dist/auth/local.js.map +1 -1
  11. package/dist/auth/pam.js +1 -1
  12. package/dist/auth/pam.js.map +1 -1
  13. package/dist/controllerTests.js +32 -24
  14. package/dist/index.js +8 -7
  15. package/dist/serverHandlers.js +53 -11
  16. package/dist/types.js +7 -0
  17. package/docs/_build/doctrees/configuration.doctree +0 -0
  18. package/docs/_build/doctrees/environment.pickle +0 -0
  19. package/docs/_build/doctrees/index.doctree +0 -0
  20. package/docs/_build/doctrees/introduction.doctree +0 -0
  21. package/docs/_build/doctrees/schema.doctree +0 -0
  22. package/docs/_build/html/.buildinfo +1 -1
  23. package/docs/_build/html/_sources/configuration.rst.txt +4 -1
  24. package/docs/_build/html/_sources/index.rst.txt +2 -2
  25. package/docs/_build/html/_sources/introduction.rst.txt +1 -1
  26. package/docs/_build/html/_static/config/config_schema.json +10 -0
  27. package/docs/_build/html/_static/documentation_options.js +1 -1
  28. package/docs/_build/html/configuration.html +5 -1
  29. package/docs/_build/html/genindex.html +1 -1
  30. package/docs/_build/html/index.html +2 -2
  31. package/docs/_build/html/installation.html +1 -1
  32. package/docs/_build/html/introduction.html +2 -2
  33. package/docs/_build/html/schema.html +56 -32
  34. package/docs/_build/html/search.html +1 -1
  35. package/docs/_build/html/searchindex.js +1 -1
  36. package/docs/_build/html/ubuntu_focal_instructions.html +1 -1
  37. package/docs/src/centos8_instructions.rst +248 -0
  38. package/docs/src/conf.py +1 -1
  39. package/docs/src/configuration.rst +62 -5
  40. package/docs/src/index.rst +7 -4
  41. package/docs/src/installation.rst +2 -2
  42. package/docs/src/introduction.rst +1 -1
  43. package/docs/src/schema_backend.rst +7 -0
  44. package/docs/src/ubuntu_focal_instructions.rst +2 -2
  45. package/package.json +2 -2
  46. package/public/dashboard.js +2 -2
  47. package/views/templated.pug +1 -1
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.serverRouter = exports.createUpgradeHandler = void 0;
12
+ exports.serverRouter = exports.createScriptingProxyHandler = exports.createUpgradeHandler = void 0;
13
13
  const express = require("express");
14
14
  const url = require("url");
15
15
  const fs = require("fs");
@@ -176,24 +176,29 @@ function startServer(username) {
176
176
  if (port < 0) {
177
177
  throw { statusCode: 500, message: "No available ports for the backend process" };
178
178
  }
179
- let args = [
180
- "--preserve-env=CARTA_AUTH_TOKEN",
179
+ let args = [];
180
+ if (config_1.ServerConfig.preserveEnv) {
181
+ args.push("--preserve-env=CARTA_AUTH_TOKEN");
182
+ }
183
+ args = args.concat([
184
+ "-n",
181
185
  "-u",
182
186
  `${username}`,
183
187
  config_1.ServerConfig.processCommand,
184
188
  "--no_http",
185
- "true",
186
- "--no_log",
187
- config_1.ServerConfig.logFileTemplate ? "true" : "false",
188
189
  "--port",
189
190
  `${port}`,
190
191
  "--top_level_folder",
191
- config_1.ServerConfig.rootFolderTemplate.replace("{username}", username),
192
- config_1.ServerConfig.baseFolderTemplate.replace("{username}", username)
193
- ];
192
+ config_1.ServerConfig.rootFolderTemplate.replace("{username}", username)
193
+ ]);
194
+ if (config_1.ServerConfig.logFileTemplate) {
195
+ args.push("--no_log");
196
+ }
194
197
  if (config_1.ServerConfig.additionalArgs) {
195
198
  args = args.concat(config_1.ServerConfig.additionalArgs);
196
199
  }
200
+ // Finally, add the positional argument for the base folder
201
+ args.push(config_1.ServerConfig.baseFolderTemplate.replace("{username}", username));
197
202
  const headerToken = uuid_1.v4();
198
203
  const child = child_process_1.spawn("sudo", args, { env: { CARTA_AUTH_TOKEN: headerToken } });
199
204
  setPendingProcess(username, port, headerToken, child);
@@ -234,7 +239,7 @@ function startServer(username) {
234
239
  child.on("exit", code => {
235
240
  console.log(`Process ${child.pid} exited with code ${code} and signal ${child.signalCode}`);
236
241
  deleteProcess(username);
237
- logStream === null || logStream === void 0 ? void 0 : logStream.close();
242
+ logStream === null || logStream === void 0 ? void 0 : logStream.end();
238
243
  });
239
244
  // Check for early exit of backend process
240
245
  yield util_1.delay(config_1.ServerConfig.startDelay);
@@ -250,7 +255,7 @@ function startServer(username) {
250
255
  catch (e) {
251
256
  util_1.verboseError(e);
252
257
  console.log(`Problem starting process for user ${username}`);
253
- logStream === null || logStream === void 0 ? void 0 : logStream.close();
258
+ logStream === null || logStream === void 0 ? void 0 : logStream.end();
254
259
  if (e.statusCode && e.message) {
255
260
  throw e;
256
261
  }
@@ -347,6 +352,43 @@ const createUpgradeHandler = (server) => (req, socket, head) => __awaiter(void 0
347
352
  }
348
353
  });
349
354
  exports.createUpgradeHandler = createUpgradeHandler;
355
+ const createScriptingProxyHandler = (server) => (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
356
+ var _d, _e, _f;
357
+ const username = req === null || req === void 0 ? void 0 : req.username;
358
+ if (!username) {
359
+ return next({ statusCode: 401, message: "Not authorized" });
360
+ }
361
+ if (!req.scripting) {
362
+ return next({ statusCode: 403, message: "API token supplied does not permit scripting" });
363
+ }
364
+ try {
365
+ const remoteAddress = ((_d = req.headers) === null || _d === void 0 ? void 0 : _d["x-forwarded-for"]) || ((_e = req.connection) === null || _e === void 0 ? void 0 : _e.remoteAddress);
366
+ let existingProcess = processMap.get(username);
367
+ if (!(existingProcess === null || existingProcess === void 0 ? void 0 : existingProcess.process) || existingProcess.process.signalCode) {
368
+ // Attempt to start new process
369
+ (_f = existingProcess === null || existingProcess === void 0 ? void 0 : existingProcess.process) === null || _f === void 0 ? void 0 : _f.removeAllListeners();
370
+ yield startServer(username);
371
+ existingProcess = processMap.get(username);
372
+ }
373
+ if (existingProcess && !existingProcess.process.signalCode) {
374
+ if (!existingProcess.ready) {
375
+ // Wait until existing process is ready
376
+ yield util_1.delay(config_1.ServerConfig.startDelay);
377
+ }
378
+ req.headers["carta-auth-token"] = existingProcess.headerToken;
379
+ return server.web(req, res, { target: { host: "localhost", port: existingProcess.port } });
380
+ }
381
+ else {
382
+ return next({ statusCode: 500, message: `Backend process could not be started for ${username}` });
383
+ }
384
+ }
385
+ catch (err) {
386
+ console.log(`Error proxying scripting request for ${req.username}`);
387
+ console.log(err);
388
+ return next({ statusCode: 500, message: `Error proxying scripting request for ${req.username}` });
389
+ }
390
+ });
391
+ exports.createScriptingProxyHandler = createScriptingProxyHandler;
350
392
  exports.serverRouter = express.Router();
351
393
  exports.serverRouter.post("/start", auth_1.authGuard, util_1.noCache, handleStartServer);
352
394
  exports.serverRouter.post("/stop", auth_1.authGuard, util_1.noCache, handleStopServer);
package/dist/types.js CHANGED
@@ -1,3 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScriptingAccess = void 0;
4
+ var ScriptingAccess;
5
+ (function (ScriptingAccess) {
6
+ ScriptingAccess["Enabled"] = "enabled-all-users";
7
+ ScriptingAccess["Disabled"] = "disabled-all-users";
8
+ ScriptingAccess["OptIn"] = "opt-in";
9
+ })(ScriptingAccess = exports.ScriptingAccess || (exports.ScriptingAccess = {}));
3
10
  //# sourceMappingURL=types.js.map
Binary file
Binary file
@@ -1,4 +1,4 @@
1
1
  # Sphinx build info version 1
2
2
  # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
3
- config: 6509a651727eb67dc98e4465448795f2
3
+ config: cab4ab9f21bbbaa15a42a39a8e17d156
4
4
  tags: 645f666f9bcd5a90fca523b33c5a78b7
@@ -26,7 +26,10 @@ To provide the ``carta`` user with these privileges, you must make modifications
26
26
 
27
27
  .. warning::
28
28
  Please only edit your sudoers configuration with ``visudo`` or equivalent.
29
-
29
+
30
+ .. note::
31
+ Older versions of ``sudo`` do not support the ``--preserve-env=VARIABLE`` argument. If your version of ``sudo`` is too old, set ``"preserveEnv"`` to ``false`` in your controller configuration, and add ``Defaults env_keep += "CARTA_AUTH_TOKEN"`` to your sudoers configuration.
32
+
30
33
  .. _config-authentication:
31
34
 
32
35
  Authentication
@@ -22,9 +22,9 @@ Detailed :ref:`step-by-step instructions<focal_instructions>` are provided for U
22
22
  ubuntu_focal_instructions
23
23
  schema
24
24
 
25
- .. |backend-github| image:: https://img.shields.io/badge/CARTA%20Version-3.0.0--beta.1-brightgreen
25
+ .. |backend-github| image:: https://img.shields.io/badge/CARTA%20Version-3.0.0--beta.1c-brightgreen
26
26
  :alt: View this backend version on GitHub
27
- :target: https://github.com/CARTAvis/carta-backend/releases/tag/v3.0.0-beta.1b
27
+ :target: https://github.com/CARTAvis/carta-backend/releases/tag/v3.0.0-beta.1c
28
28
 
29
29
  .. |npm-package| image:: https://img.shields.io/npm/v/carta-controller/dev.svg?style=flat
30
30
  :alt: View this project on npm
@@ -10,7 +10,7 @@ The CARTA controller provides a simple dashboard which authenticates users and a
10
10
  Dependencies
11
11
  ------------
12
12
 
13
- To allow the controller to serve CARTA sessions, you must give it access to an executable CARTA backend, which can be either a compiled executable or a container. If you want to use a non-standard version of the CARTA frontend, you must also build it, and adjust the controller configuration to point to it. You should use the ``v3.0.0-beta.1b`` tag of `the CARTA backend <https://github.com/CARTAvis/carta-backend>`_.
13
+ To allow the controller to serve CARTA sessions, you must give it access to an executable CARTA backend, which can be either a compiled executable or a container. If you want to use a non-standard version of the CARTA frontend, you must also build it, and adjust the controller configuration to point to it. You should use the ``v3.0.0-beta.1c`` tag of `the CARTA backend <https://github.com/CARTAvis/carta-backend>`_.
14
14
 
15
15
  By default, the controller runs on port 8000. It should be run behind a proxy, so that it can be accessed via HTTP and HTTPS.
16
16
 
@@ -399,6 +399,11 @@
399
399
  "type": "string",
400
400
  "examples": ["localhost", "127.0.0.1"]
401
401
  },
402
+ "httpOnly": {
403
+ "description": "Allow HTTP-only connections. For testing or internal networks only",
404
+ "type": "boolean",
405
+ "default": false
406
+ },
402
407
  "serverAddress": {
403
408
  "description": "Public-facing server address",
404
409
  "type": "string",
@@ -455,6 +460,11 @@
455
460
  ],
456
461
  "default": "/usr/bin/carta_backend"
457
462
  },
463
+ "preserveEnv": {
464
+ "description": "Use the --preserve-env argument when calling sudo",
465
+ "type": "boolean",
466
+ "default": true
467
+ },
458
468
  "killCommand": {
459
469
  "description": "Path to CARTA kill script",
460
470
  "type": "string",
@@ -1,6 +1,6 @@
1
1
  var DOCUMENTATION_OPTIONS = {
2
2
  URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
3
- VERSION: '3.0.0-beta.1b',
3
+ VERSION: '3.0.0-beta.1d',
4
4
  LANGUAGE: 'None',
5
5
  COLLAPSE_INDEX: false,
6
6
  BUILDER: 'html',
@@ -7,7 +7,7 @@
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
9
 
10
- <title>Configuration &mdash; CARTA Controller 3.0.0-beta.1b documentation</title>
10
+ <title>Configuration &mdash; CARTA Controller 3.0.0-beta.1d documentation</title>
11
11
 
12
12
 
13
13
 
@@ -205,6 +205,10 @@
205
205
  <p class="admonition-title">Warning</p>
206
206
  <p>Please only edit your sudoers configuration with <code class="docutils literal notranslate"><span class="pre">visudo</span></code> or equivalent.</p>
207
207
  </div>
208
+ <div class="admonition note">
209
+ <p class="admonition-title">Note</p>
210
+ <p>Older versions of <code class="docutils literal notranslate"><span class="pre">sudo</span></code> do not support the <code class="docutils literal notranslate"><span class="pre">--preserve-env=VARIABLE</span></code> argument. If your version of <code class="docutils literal notranslate"><span class="pre">sudo</span></code> is too old, set <code class="docutils literal notranslate"><span class="pre">&quot;preserveEnv&quot;</span></code> to <code class="docutils literal notranslate"><span class="pre">false</span></code> in your controller configuration, and add <code class="docutils literal notranslate"><span class="pre">Defaults</span> <span class="pre">env_keep</span> <span class="pre">+=</span> <span class="pre">&quot;CARTA_AUTH_TOKEN&quot;</span></code> to your sudoers configuration.</p>
211
+ </div>
208
212
  </div>
209
213
  <div class="section" id="authentication">
210
214
  <span id="config-authentication"></span><h3>Authentication<a class="headerlink" href="#authentication" title="Permalink to this headline">¶</a></h3>
@@ -7,7 +7,7 @@
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
9
 
10
- <title>Index &mdash; CARTA Controller 3.0.0-beta.1b documentation</title>
10
+ <title>Index &mdash; CARTA Controller 3.0.0-beta.1d documentation</title>
11
11
 
12
12
 
13
13
 
@@ -7,7 +7,7 @@
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
9
 
10
- <title>CARTA Controller &mdash; CARTA Controller 3.0.0-beta.1b documentation</title>
10
+ <title>CARTA Controller &mdash; CARTA Controller 3.0.0-beta.1d documentation</title>
11
11
 
12
12
 
13
13
 
@@ -156,7 +156,7 @@
156
156
 
157
157
  <div class="section" id="carta-controller">
158
158
  <h1>CARTA Controller<a class="headerlink" href="#carta-controller" title="Permalink to this headline">¶</a></h1>
159
- <p><a class="reference external" href="https://github.com/CARTAvis/carta-backend/releases/tag/v3.0.0-beta.1b"><img alt="View this backend version on GitHub" src="https://img.shields.io/badge/CARTA%20Version-3.0.0--beta.1-brightgreen" /></a> <a class="reference external" href="https://npmjs.org/package/carta-controller"><img alt="View this project on npm" src="https://img.shields.io/npm/v/carta-controller/dev.svg?style=flat" /></a> <img alt="Last commit" src="https://img.shields.io/github/last-commit/CARTAvis/carta-controller" /> <img alt="Commit activity" src="https://img.shields.io/github/commit-activity/m/CARTAvis/carta-controller" /></p>
159
+ <p><a class="reference external" href="https://github.com/CARTAvis/carta-backend/releases/tag/v3.0.0-beta.1c"><img alt="View this backend version on GitHub" src="https://img.shields.io/badge/CARTA%20Version-3.0.0--beta.1c-brightgreen" /></a> <a class="reference external" href="https://npmjs.org/package/carta-controller"><img alt="View this project on npm" src="https://img.shields.io/npm/v/carta-controller/dev.svg?style=flat" /></a> <img alt="Last commit" src="https://img.shields.io/github/last-commit/CARTAvis/carta-controller" /> <img alt="Commit activity" src="https://img.shields.io/github/commit-activity/m/CARTAvis/carta-controller" /></p>
160
160
  <p>CARTA is the Cube Analysis and Rendering Tool for Astronomy. This document describes the installation and configuration process for the controller component.</p>
161
161
  <p>Detailed <a class="reference internal" href="ubuntu_focal_instructions.html#focal-instructions"><span class="std std-ref">step-by-step instructions</span></a> are provided for Ubuntu 20.04 (Focal Fossa).</p>
162
162
  <div class="toctree-wrapper compound">
@@ -7,7 +7,7 @@
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
9
 
10
- <title>Installation &mdash; CARTA Controller 3.0.0-beta.1b documentation</title>
10
+ <title>Installation &mdash; CARTA Controller 3.0.0-beta.1d documentation</title>
11
11
 
12
12
 
13
13
 
@@ -7,7 +7,7 @@
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
9
 
10
- <title>Introduction &mdash; CARTA Controller 3.0.0-beta.1b documentation</title>
10
+ <title>Introduction &mdash; CARTA Controller 3.0.0-beta.1d documentation</title>
11
11
 
12
12
 
13
13
 
@@ -166,7 +166,7 @@
166
166
  <p>The CARTA controller provides a simple dashboard which authenticates users and allows them to manage their CARTA backend processes. It also serves static frontend code to clients, and dynamically redirects authenticated client connections to the appropriate backend processes. The controller can either handle authentication itself, or delegate it to an external OAuth2-based authentication server.</p>
167
167
  <div class="section" id="dependencies">
168
168
  <span id="id2"></span><h2>Dependencies<a class="headerlink" href="#dependencies" title="Permalink to this headline">¶</a></h2>
169
- <p>To allow the controller to serve CARTA sessions, you must give it access to an executable CARTA backend, which can be either a compiled executable or a container. If you want to use a non-standard version of the CARTA frontend, you must also build it, and adjust the controller configuration to point to it. You should use the <code class="docutils literal notranslate"><span class="pre">v3.0.0-beta.1b</span></code> tag of <a class="reference external" href="https://github.com/CARTAvis/carta-backend">the CARTA backend</a>.</p>
169
+ <p>To allow the controller to serve CARTA sessions, you must give it access to an executable CARTA backend, which can be either a compiled executable or a container. If you want to use a non-standard version of the CARTA frontend, you must also build it, and adjust the controller configuration to point to it. You should use the <code class="docutils literal notranslate"><span class="pre">v3.0.0-beta.1c</span></code> tag of <a class="reference external" href="https://github.com/CARTAvis/carta-backend">the CARTA backend</a>.</p>
170
170
  <p>By default, the controller runs on port 8000. It should be run behind a proxy, so that it can be accessed via HTTP and HTTPS.</p>
171
171
  <p>MongoDB is required for storing user preferences, layouts and (in the near future) controller metrics.</p>
172
172
  <p>You also need a working <a class="reference external" href="https://nodejs.org/en/about/releases/">NodeJS LTS</a> installation with NPM. Use <code class="docutils literal notranslate"><span class="pre">npm</span> <span class="pre">install</span></code> to install all Node dependencies.</p>
@@ -7,7 +7,7 @@
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
9
 
10
- <title>CARTA configuration schema &mdash; CARTA Controller 3.0.0-beta.1b documentation</title>
10
+ <title>CARTA configuration schema &mdash; CARTA Controller 3.0.0-beta.1d documentation</title>
11
11
 
12
12
 
13
13
 
@@ -340,124 +340,148 @@
340
340
  </tr>
341
341
  <tr class="row-even"><td colspan="3"><p>127.0.0.1</p></td>
342
342
  </tr>
343
- <tr class="row-odd"><td rowspan="4"><ul class="simple">
343
+ <tr class="row-odd"><td rowspan="3"><ul class="simple">
344
+ <li><p>httpOnly</p></li>
345
+ </ul>
346
+ </td>
347
+ <td colspan="4"><p>Allow HTTP-only connections. For testing or internal networks only</p></td>
348
+ </tr>
349
+ <tr class="row-even"><td><p>type</p></td>
350
+ <td colspan="3"><p><em>boolean</em></p></td>
351
+ </tr>
352
+ <tr class="row-odd"><td><p>default</p></td>
353
+ <td colspan="3"><p>False</p></td>
354
+ </tr>
355
+ <tr class="row-even"><td rowspan="4"><ul class="simple">
344
356
  <li><p>serverAddress</p></li>
345
357
  </ul>
346
358
  </td>
347
359
  <td colspan="4"><p>Public-facing server address</p></td>
348
360
  </tr>
349
- <tr class="row-even"><td><p>type</p></td>
361
+ <tr class="row-odd"><td><p>type</p></td>
350
362
  <td colspan="3"><p><em>string</em></p></td>
351
363
  </tr>
352
- <tr class="row-odd"><td><p>pattern</p></td>
364
+ <tr class="row-even"><td><p>pattern</p></td>
353
365
  <td colspan="3"><p>^https?://</p></td>
354
366
  </tr>
355
- <tr class="row-even"><td><p>format</p></td>
367
+ <tr class="row-odd"><td><p>format</p></td>
356
368
  <td colspan="3"><p>uri</p></td>
357
369
  </tr>
358
- <tr class="row-odd"><td rowspan="4"><ul class="simple">
370
+ <tr class="row-even"><td rowspan="4"><ul class="simple">
359
371
  <li><p>dashboardAddress</p></li>
360
372
  </ul>
361
373
  </td>
362
374
  <td colspan="4"><p>Optional parameter for explicitly configuring a custom dashboard address</p></td>
363
375
  </tr>
364
- <tr class="row-even"><td><p>type</p></td>
376
+ <tr class="row-odd"><td><p>type</p></td>
365
377
  <td colspan="3"><p><em>string</em></p></td>
366
378
  </tr>
367
- <tr class="row-odd"><td><p>pattern</p></td>
379
+ <tr class="row-even"><td><p>pattern</p></td>
368
380
  <td colspan="3"><p>^https?://</p></td>
369
381
  </tr>
370
- <tr class="row-even"><td><p>format</p></td>
382
+ <tr class="row-odd"><td><p>format</p></td>
371
383
  <td colspan="3"><p>uri</p></td>
372
384
  </tr>
373
- <tr class="row-odd"><td rowspan="4"><ul class="simple">
385
+ <tr class="row-even"><td rowspan="4"><ul class="simple">
374
386
  <li><p>apiAddress</p></li>
375
387
  </ul>
376
388
  </td>
377
389
  <td colspan="4"><p>Optional parameter for explicitly configuring a custom API base address</p></td>
378
390
  </tr>
379
- <tr class="row-even"><td><p>type</p></td>
391
+ <tr class="row-odd"><td><p>type</p></td>
380
392
  <td colspan="3"><p><em>string</em></p></td>
381
393
  </tr>
382
- <tr class="row-odd"><td><p>pattern</p></td>
394
+ <tr class="row-even"><td><p>pattern</p></td>
383
395
  <td colspan="3"><p>^https?://</p></td>
384
396
  </tr>
385
- <tr class="row-even"><td><p>format</p></td>
397
+ <tr class="row-odd"><td><p>format</p></td>
386
398
  <td colspan="3"><p>uri</p></td>
387
399
  </tr>
388
- <tr class="row-odd"><td rowspan="2"><ul class="simple">
400
+ <tr class="row-even"><td rowspan="2"><ul class="simple">
389
401
  <li><p>frontendPath</p></li>
390
402
  </ul>
391
403
  </td>
392
404
  <td colspan="4"><p>Path to the built frontend folder. If no path is provided, the packaged version will be used</p></td>
393
405
  </tr>
394
- <tr class="row-even"><td><p>type</p></td>
406
+ <tr class="row-odd"><td><p>type</p></td>
395
407
  <td colspan="3"><p><em>string</em></p></td>
396
408
  </tr>
397
- <tr class="row-odd"><td rowspan="12"><ul class="simple">
409
+ <tr class="row-even"><td rowspan="12"><ul class="simple">
398
410
  <li><p>backendPorts</p></li>
399
411
  </ul>
400
412
  </td>
401
413
  <td colspan="4"><p>Port range to use for the CARTA backend process</p></td>
402
414
  </tr>
403
- <tr class="row-even"><td><p>type</p></td>
415
+ <tr class="row-odd"><td><p>type</p></td>
404
416
  <td colspan="3"><p><em>object</em></p></td>
405
417
  </tr>
406
- <tr class="row-odd"><td rowspan="2"><p>default</p></td>
418
+ <tr class="row-even"><td rowspan="2"><p>default</p></td>
407
419
  <td><p>min</p></td>
408
420
  <td colspan="2"><p>3003</p></td>
409
421
  </tr>
410
- <tr class="row-even"><td><p>max</p></td>
422
+ <tr class="row-odd"><td><p>max</p></td>
411
423
  <td colspan="2"><p>3500</p></td>
412
424
  </tr>
413
- <tr class="row-odd"><td colspan="4"><p>properties</p></td>
425
+ <tr class="row-even"><td colspan="4"><p>properties</p></td>
414
426
  </tr>
415
- <tr class="row-even"><td rowspan="3"><ul class="simple">
427
+ <tr class="row-odd"><td rowspan="3"><ul class="simple">
416
428
  <li><p><strong>min</strong></p></li>
417
429
  </ul>
418
430
  </td>
419
431
  <td><p>type</p></td>
420
432
  <td colspan="2"><p><em>integer</em></p></td>
421
433
  </tr>
422
- <tr class="row-odd"><td><p>maximum</p></td>
434
+ <tr class="row-even"><td><p>maximum</p></td>
423
435
  <td colspan="2"><p>65535</p></td>
424
436
  </tr>
425
- <tr class="row-even"><td><p>minimum</p></td>
437
+ <tr class="row-odd"><td><p>minimum</p></td>
426
438
  <td colspan="2"><p>1024</p></td>
427
439
  </tr>
428
- <tr class="row-odd"><td rowspan="3"><ul class="simple">
440
+ <tr class="row-even"><td rowspan="3"><ul class="simple">
429
441
  <li><p><strong>max</strong></p></li>
430
442
  </ul>
431
443
  </td>
432
444
  <td><p>type</p></td>
433
445
  <td colspan="2"><p><em>integer</em></p></td>
434
446
  </tr>
435
- <tr class="row-even"><td><p>maximum</p></td>
447
+ <tr class="row-odd"><td><p>maximum</p></td>
436
448
  <td colspan="2"><p>65535</p></td>
437
449
  </tr>
438
- <tr class="row-odd"><td><p>minimum</p></td>
450
+ <tr class="row-even"><td><p>minimum</p></td>
439
451
  <td colspan="2"><p>1024</p></td>
440
452
  </tr>
441
- <tr class="row-even"><td><p>additionalProperties</p></td>
453
+ <tr class="row-odd"><td><p>additionalProperties</p></td>
442
454
  <td colspan="3"><p>False</p></td>
443
455
  </tr>
444
- <tr class="row-odd"><td rowspan="5"><ul class="simple">
456
+ <tr class="row-even"><td rowspan="5"><ul class="simple">
445
457
  <li><p>processCommand</p></li>
446
458
  </ul>
447
459
  </td>
448
460
  <td colspan="4"><p>Path to CARTA backend executable</p></td>
449
461
  </tr>
450
- <tr class="row-even"><td><p>type</p></td>
462
+ <tr class="row-odd"><td><p>type</p></td>
451
463
  <td colspan="3"><p><em>string</em></p></td>
452
464
  </tr>
453
- <tr class="row-odd"><td rowspan="2"><p>examples</p></td>
465
+ <tr class="row-even"><td rowspan="2"><p>examples</p></td>
454
466
  <td colspan="3"><p>/usr/bin/carta_backend</p></td>
455
467
  </tr>
456
- <tr class="row-even"><td colspan="3"><p>/usr/local/bin/carta_backend</p></td>
468
+ <tr class="row-odd"><td colspan="3"><p>/usr/local/bin/carta_backend</p></td>
457
469
  </tr>
458
- <tr class="row-odd"><td><p>default</p></td>
470
+ <tr class="row-even"><td><p>default</p></td>
459
471
  <td colspan="3"><p>/usr/bin/carta_backend</p></td>
460
472
  </tr>
473
+ <tr class="row-odd"><td rowspan="3"><ul class="simple">
474
+ <li><p>preserveEnv</p></li>
475
+ </ul>
476
+ </td>
477
+ <td colspan="4"><p>Use the –preserve-env argument when calling sudo</p></td>
478
+ </tr>
479
+ <tr class="row-even"><td><p>type</p></td>
480
+ <td colspan="3"><p><em>boolean</em></p></td>
481
+ </tr>
482
+ <tr class="row-odd"><td><p>default</p></td>
483
+ <td colspan="3"><p>True</p></td>
484
+ </tr>
461
485
  <tr class="row-even"><td rowspan="4"><ul class="simple">
462
486
  <li><p>killCommand</p></li>
463
487
  </ul>
@@ -7,7 +7,7 @@
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
9
 
10
- <title>Search &mdash; CARTA Controller 3.0.0-beta.1b documentation</title>
10
+ <title>Search &mdash; CARTA Controller 3.0.0-beta.1d documentation</title>
11
11
 
12
12
 
13
13
 
@@ -1 +1 @@
1
- Search.setIndex({docnames:["configuration","index","installation","introduction","schema","ubuntu_focal_instructions"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["configuration.rst","index.rst","installation.rst","introduction.rst","schema.rst","ubuntu_focal_instructions.rst"],objects:{},objnames:{},objtypes:{},terms:{"15h":4,"15m":4,"606f7e":4,"90s":4,"boolean":4,"default":[0,3,4],"enum":4,"final":5,"long":3,"new":3,"null":4,"public":[0,4,5],"return":[0,3],"short":3,"static":3,"switch":5,"true":4,"var":[0,4,5],For:0,LTS:[3,5],TLS:4,The:[0,2,3,4,5],These:5,Use:3,abl:0,abov:3,accept:4,access:[0,3,4,5],accesstokenag:4,account:0,activ:4,adapt:5,add:[0,5],added:[],adding:2,addit:[0,4,5],additionalarg:[0,4],additionalproperti:4,addon:5,address:4,addus:5,adher:0,adjust:[0,3],admin:4,advis:4,after:[2,3,4,5],algorithm:4,all:[0,2,3,4,5],allow:[0,3,5],almost:5,also:[0,2,3],alter:0,amount:3,analysi:1,ani:[0,4],apach:0,api:[3,4],apiaddress:4,app:4,appear:[0,4,5],applic:[3,4],appropri:3,apt:[2,5],argument:[0,4],arrai:4,assist:3,assum:[0,3,5],astronomi:1,attempt:0,auth:[3,4],authent:[1,4,5],author:3,authprovid:[0,1],automat:[0,2,4,5],backend:[1,3,4],backendport:4,background:[0,4],backgroundcolor:[0,4],badger:5,banner:[0,4],bannercolor:[0,4],bannerimag:[0,4],base:[3,4],basefoldertempl:[0,4],bash:[0,5],bashrc:[],beaver:2,becaus:0,been:3,befor:4,behind:[3,4],belong:[0,5],below:5,beta:[2,3,5],better:3,bin:[0,4,5],binari:2,bind:4,bindcredenti:4,binddn:4,bindproperti:4,bionic:[2,5],both:[0,2],bound:4,branch:[],build:[2,3,5],built:[0,4],cach:4,call:5,can:[0,2,3,5],carta:[2,3],carta_backend:[0,4,5],carta_config:4,carta_control:[0,5],carta_kill_script:[],carta_priv:[0,4,5],carta_publ:[0,4,5],cartavi:5,casacor:2,cert:0,chang:0,check:4,child:0,child_pid:0,chown:5,click:4,client:[3,4],clientid:4,clone:2,code:3,color:4,com:[0,4,5],comm:0,command:[0,5],command_of_pid:0,command_to_match:0,comment:[0,4],commun:0,compat:[2,4],compil:[3,5],compon:1,config:[0,5],config_schema:0,configur:[1,2,3],confluenc:[],connect:[0,3,4],consol:3,contact:[0,3,4],contain:3,content:1,control:[3,4],cooki:3,copi:[],core:2,correct:0,correctli:[],correspond:2,creat:[2,3],credenti:[0,4],cube:1,curl:5,current:5,custom:[2,4],customis:[0,5],d2dce5:0,dashboard:[0,3,4,5],dashboardaddress:4,dat:4,data:[0,2,4],databas:[0,4],databasenam:[0,4],datatim:4,datetim:4,deb:5,debian:2,defin:4,deleg:3,deni:0,depend:[1,2],deploy:[3,4],describ:[1,3],detail:[1,2,4,5],dev:[2,5],develop:[2,5],differ:[2,5],direct:0,directli:3,directori:4,disabl:[],displai:4,document:[1,3,4,5],doe:0,domain:[0,4],dure:3,dynam:3,echo:0,edit:[0,2,5],either:3,els:0,email:[0,4],emit:4,empti:4,encount:3,ensur:[0,5],enter:[0,4],environ:0,equival:0,error:3,es256:4,es384:4,es512:4,especi:0,essenti:5,etc:[0,4,5],event:4,exampl:[0,4,5],exchang:3,execut:[0,3,4,5],exist:0,exit:0,exit_aft:[],exit_timeout:4,explicitli:4,extern:[0,1,3],f6f8fa:[0,4],face:4,fair:3,fals:4,featur:3,feedback:3,ff11ee:4,field:[0,4],file:[0,2,4,5],filter:4,fit:0,flag:[0,5],flexibl:3,flow:3,focal:[1,2],folder:4,footer:4,footertext:[0,4],forc:4,forev:2,format:[0,3,4],forward:[0,5],fossa:[1,2],four:3,from:[0,2,5],frontend:[1,3,4,5],frontendpath:4,fssl:5,futur:1,geco:[],gener:[0,5],genrsa:[0,5],get:[0,1,2,5],github:2,githubusercont:[],give:3,given:[0,4],gmail:4,googl:[1,3],googleusercont:4,group:[0,5],h_mm_ss:4,handl:[0,3],has:[0,3],have:[0,2,4,5],hello:[],help:1,helpdesk:[3,4],here:5,home:[0,4,5],host:[0,2,3,4],href:[0,4],hs256:4,hs384:4,hs512:4,html:4,http:[0,3,4,5],http_upgrad:0,httponli:3,identifi:[4,5],idia:[],idl:4,idletimeout:4,imag:0,implement:3,includ:5,incom:0,inform:[0,4],infotext:[0,4],init_exit_aft:[],initial_timeout:4,instal:[1,3],instanc:4,institut:[0,4],instruct:[0,1,2],integ:4,interfac:[3,4],intern:0,introduct:1,issu:3,issuer:[0,4],item:4,itself:3,javascript:0,json:[0,5],jsonc:0,just:2,jwt:[3,4],keep:2,kei:[0,3,4,5],kern:2,keyalgorithm:1,kill:[0,4,5],killcommand:[0,4],last:4,latest:[2,5],layout:3,ldap:[0,1,3],ldapopt:4,least:[],level:[0,4],lib:5,librari:3,lifetim:4,like:[2,4],line:0,list:4,listen:[0,4],live:3,local:[0,1,5],localhost:[0,4],locat:[0,4],log:[0,4,5],logfiletempl:[0,4],login:0,logintext:[0,4],logo:4,logoutaddress:4,lookup:[0,4],lts:[],mai:[0,2],mailto:[0,4],make:[0,4,5],manag:[2,3],map:0,match:0,max:4,maximum:4,method:[0,4],metric:3,millisecond:4,min:4,minimum:4,minitem:4,minlength:4,minut:4,mkdir:5,mode:3,modif:0,modul:0,mongodb:[0,3,4,5],more:[2,3,4],most:[],multipl:0,must:[0,3,4],my_auth_server_public_kei:4,myapp:4,name:[0,4],nativ:5,need:[0,3,4],no_http:0,no_log:0,node:[3,5],node_modul:[],nodej:[3,5],nodesourc:5,non:3,nopasswd:0,note:5,notic:0,npm:[2,3,5],number:[3,4],nvm:[],nvm_bin:[],oauth2:[3,4],object:4,occur:5,omit:4,omp_thread:4,one:4,onli:[0,4,5],openssl:[0,5],option:[0,2,4,5],order:0,org:4,other:[0,4],our:2,out:[0,4,5],outform:[0,5],over:0,overrid:0,own:5,packag:[2,4],pair:0,pam:[0,3,4,5],paramet:4,pars:4,part:5,pass:[3,4,5],password:[0,3,4],passwordless:5,path:[0,4],pattern:4,pem:[0,4,5],perm:5,permit:0,pgrep:0,pid:[0,4],place:3,placehold:4,plain:4,pleas:[0,2,3,4,5],pm2:2,png:4,point:[0,3],port:[0,3,4,5],posit:0,possibl:[0,2],ppa:[2,5],prefer:3,privat:[0,3,4,5],privatekeyloc:[0,4],privileg:0,problem:[0,3,4],process:[0,1,3,4,5],processcommand:[0,4],profil:[],properti:4,provid:[0,1,2,3,4,5],proxi:[0,3,4],proxy_cache_bypass:0,proxy_http_vers:0,proxy_pass:0,proxy_set_head:0,ps256:4,ps384:4,ps512:4,publickeyloc:[0,4],pubout:[0,5],rang:4,raw:[],read:0,reason:[],reboot:[2,5],recommend:2,reconnect:4,red:4,redirect:[0,3],refer:[2,4,5],refresh:[0,3,4],refreshtokenag:4,releas:2,relev:5,reload:0,remot:0,remote_addr:0,render:1,replac:4,repo:[3,5],repositori:[2,5],request:0,request_uri:0,requir:[0,2,3],respect:[0,4],respons:4,restrict:0,rgb:4,root:[],rootfoldertempl:[0,4],rout:4,rs256:4,rs384:4,rs512:4,rsa:[0,5],run:[0,1,3,4],safe:0,same:0,sampl:5,save:5,schema:[0,1],scope:4,script:[0,2,4],search:4,searchbas:4,searchfilt:4,searchscop:4,section:5,secur:[],see:4,send:4,serv:[0,3],server:[0,3,4,5],server_nam:0,serveraddress:[0,4],serverinterfac:[0,4],serverport:[0,4],servic:5,session:3,set:0,setenv:0,setup_lt:5,shadow:[0,5],shell:5,should:[2,3,4,5],sign:[0,3,4],simpl:3,some:3,sourc:2,span:[0,4],specif:0,specifi:[0,4],ssl:[0,4],ssl_certif:0,ssl_certificate_kei:0,standard:[0,3],start:[0,2,4,5],startdelai:4,starttl:4,startup:2,step:1,still:[3,4],stop:0,store:3,strict:4,strictdn:4,string:4,strongli:0,stub:4,style:0,sub:4,subfold:4,submit:3,sudo:[0,5],sudoer:[0,5],suggest:[0,4],support:[1,5],suppress:0,svg:[0,4],system:[1,2,3,4,5],tabl:[0,4],tag:3,team:5,test:[0,3,4],text:4,than:4,thei:[0,5],them:[3,5],thi:[0,1,3,4,5],thread:[],three:[],through:4,time:4,token:[0,3,4],tokenrefreshaddress:4,tool:[1,5],top:[0,4],top_level_fold:0,traffic:0,translat:0,trust:0,txt:4,type:4,ubuntu:[1,2],uid:4,unauthor:0,unchang:5,undefin:4,under:0,uniqu:[0,4],uniquefield:4,unix:[0,5],unnecessari:[],unsaf:5,updat:[0,5],upgrad:0,uri:[0,4],url:4,use:[0,2,3,4],used:[0,3,4,5],useemailasid:4,user1:0,user1_alt:0,user2:0,user:[0,3,4,5],user_id:4,userlookup:4,userlookupt:4,usermod:5,usernam:[0,3,4],usert:4,using:[0,2,4,5],usr:[0,4,5],util:2,v12:5,v14:5,v16:5,valid:[0,3,4],validdomain:4,verifi:4,version:[2,3,4,5],via:[0,3,4],visudo:[0,5],wai:0,wait:4,want:3,watch:0,web:3,websocket:0,welcom:[0,4],well:3,what:0,when:[0,2,4],whenev:0,where:5,whether:4,which:[0,2,3],who:5,wish:2,without:[0,2],work:1,world:[],would:[2,4],write:0,you:[0,2,3,4,5],your:[0,2,4,5],yyyymmdd:4},titles:["Configuration","CARTA Controller","Installation","Introduction","CARTA configuration schema","Step-by-step instructions for Ubuntu 20.04.2 (Focal Fossa)"],titleterms:{authent:[0,3],authprovid:4,backend:[0,2,5],carta:[0,1,4,5],configur:[0,4,5],control:[0,1,2,5],creat:5,depend:[3,5],directori:[0,5],extern:4,focal:5,fossa:5,frontend:2,futur:3,gener:[],get:3,googl:4,help:3,instal:[2,5],instruct:5,introduct:3,kei:[],keyalgorithm:4,ldap:4,local:4,nginx:[0,5],other:5,packag:5,permiss:[0,5],pm2:5,requir:5,run:[2,5],schema:4,script:5,set:5,startup:5,step:5,support:3,system:0,ubuntu:5,work:3}})
1
+ Search.setIndex({docnames:["configuration","index","installation","introduction","schema","ubuntu_focal_instructions"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["configuration.rst","index.rst","installation.rst","introduction.rst","schema.rst","ubuntu_focal_instructions.rst"],objects:{},objnames:{},objtypes:{},terms:{"15h":4,"15m":4,"606f7e":4,"90s":4,"boolean":4,"default":[0,3,4],"enum":4,"final":5,"long":3,"new":3,"null":4,"public":[0,4,5],"return":[0,3],"short":3,"static":3,"switch":5,"true":4,"var":[0,4,5],For:[0,4],LTS:[3,5],TLS:4,The:[0,2,3,4,5],These:5,Use:[3,4],_config_control:[],_config_controller_:[],abl:0,abov:3,accept:4,access:[0,3,4,5],accesstokenag:4,account:0,across:[],activ:4,adapt:5,add:[0,5],added:[],adding:2,addit:[0,4,5],additionalarg:[0,4],additionalproperti:4,addon:5,address:4,addus:5,adher:0,adjust:[0,3],admin:4,advis:4,after:[2,3,4,5],algorithm:4,all:[0,2,3,4,5],allow:[0,3,4,5],almost:5,also:[0,2,3],alter:0,amount:3,analysi:1,ani:[0,4],apach:0,api:[3,4],apiaddress:4,app:4,appear:[0,4,5],applic:[3,4],appropri:3,apt:[2,5],argument:[0,4],arrai:4,assist:3,assum:[0,3,5],astronomi:1,attempt:0,auth:[3,4],authent:[1,4,5],author:3,authprovid:[0,1],automat:[0,2,4,5],backend:[1,3,4],backendport:4,background:[0,4],backgroundcolor:[0,4],badger:5,banner:[0,4],bannercolor:[0,4],bannerimag:[0,4],base:[3,4],basefoldertempl:[0,4],bash:[0,5],bashrc:[],beaver:2,becaus:0,been:3,befor:4,behind:[3,4],belong:[0,5],below:5,beta:[2,3,5],better:3,bin:[0,4,5],binari:2,bind:4,bindcredenti:4,binddn:4,bindproperti:4,bionic:[2,5],both:[0,2],bound:4,branch:[],build:[2,3,5],built:[0,4],cach:4,call:[4,5],can:[0,2,3,5],carta:[2,3],carta_auth_token:0,carta_backend:[0,4,5],carta_config:4,carta_control:[0,5],carta_kill_script:[],carta_priv:[0,4,5],carta_publ:[0,4,5],cartavi:5,casacor:2,cert:0,chang:0,check:4,child:0,child_pid:0,chown:5,click:4,client:[3,4],clientid:4,clone:2,code:3,color:4,com:[0,4,5],comm:0,command:[0,5],command_of_pid:0,command_to_match:0,comment:[0,4],commun:0,compat:[2,4],compil:[3,5],compon:1,config:[0,5],config_controller_:[],config_schema:0,configur:[1,2,3],confluenc:[],connect:[0,3,4],consol:3,contact:[0,3,4],contain:3,content:1,control:[3,4],cooki:3,copi:[],core:2,correct:0,correctli:[],correspond:2,creat:[2,3],credenti:[0,4],cube:1,curl:5,current:5,custom:[2,4],customis:[0,5],d2dce5:0,dashboard:[0,3,4,5],dashboardaddress:4,dat:4,data:[0,2,4],databas:[0,4],databasenam:[0,4],datatim:4,datetim:4,deb:5,debian:2,defin:4,deleg:3,deni:0,depend:[1,2],deploy:[3,4],describ:[1,3],detail:[1,2,4,5],dev:[2,5],develop:[2,5],differ:[2,5],direct:0,directli:3,directori:4,disabl:[],displai:4,document:[1,3,4,5],doe:0,domain:[0,4],dure:3,dynam:3,echo:0,edit:[0,2,5],either:3,els:0,email:[0,4],emit:4,empti:4,encount:3,ensur:[0,5],enter:[0,4],env:[0,4],env_keep:0,environ:0,environment:[],equival:0,error:3,es256:4,es384:4,es512:4,especi:0,essenti:5,etc:[0,4,5],event:4,exampl:[0,4,5],exchang:3,execut:[0,3,4,5],exist:0,exit:0,exit_aft:[],exit_timeout:4,explicitli:4,extern:[0,1,3],f6f8fa:[0,4],face:4,fair:3,fals:[0,4],featur:3,feedback:3,ff11ee:4,field:[0,4],file:[0,2,4,5],filter:4,fit:0,flag:[0,5],flexibl:3,flow:3,focal:[1,2],folder:4,footer:4,footertext:[0,4],forc:4,forev:2,format:[0,3,4],forward:[0,5],fossa:[1,2],four:3,from:[0,2,5],frontend:[1,3,4,5],frontendpath:4,fssl:5,futur:1,geco:[],gener:[0,5],genrsa:[0,5],get:[0,1,2,5],github:2,githubusercont:[],give:3,given:[0,4],gmail:4,googl:[1,3],googleusercont:4,group:[0,5],h_mm_ss:4,handl:[0,3],has:[0,3],have:[0,2,4,5],hello:[],help:1,helpdesk:[3,4],here:5,home:[0,4,5],host:[0,2,3,4],href:[0,4],hs256:4,hs384:4,hs512:4,html:4,http:[0,3,4,5],http_upgrad:0,httponli:[3,4],identifi:[4,5],idia:[],idl:4,idletimeout:4,imag:0,implement:3,includ:5,incom:0,inform:[0,4],infotext:[0,4],init_exit_aft:[],initial_timeout:4,instal:[1,3],instanc:4,institut:[0,4],instruct:[0,1,2],integ:4,interfac:[3,4],intern:[0,4],introduct:1,issu:3,issuer:[0,4],item:4,itself:3,javascript:0,json:[0,5],jsonc:0,just:2,jwt:[3,4],keep:2,kei:[0,3,4,5],kern:2,keyalgorithm:1,kill:[0,4,5],killcommand:[0,4],last:4,latest:[2,5],layout:3,ldap:[0,1,3],ldapopt:4,least:[],level:[0,4],lib:5,librari:3,lifetim:4,like:[2,4],line:0,list:4,listen:[0,4],live:3,local:[0,1,5],localhost:[0,4],locat:[0,4],log:[0,4,5],logfiletempl:[0,4],login:0,logintext:[0,4],logo:4,logoutaddress:4,lookup:[0,4],lts:[],mai:[0,2],mailto:[0,4],make:[0,4,5],manag:[2,3],map:0,match:0,max:4,maximum:4,method:[0,4],metric:3,millisecond:4,min:4,minimum:4,minitem:4,minlength:4,minut:4,mkdir:5,mode:3,modif:0,modul:0,mongodb:[0,3,4,5],more:[2,3,4],most:[],multipl:0,must:[0,3,4],my_auth_server_public_kei:4,myapp:4,name:[0,4],nativ:5,need:[0,3,4],network:4,no_http:0,no_log:0,node:[3,5],node_modul:[],nodej:[3,5],nodesourc:5,non:3,nopasswd:0,note:5,notic:0,npm:[2,3,5],number:[3,4],nvm:[],nvm_bin:[],oauth2:[3,4],object:4,occur:5,old:0,older:0,omit:4,omp_thread:4,one:4,onli:[0,4,5],openssl:[0,5],option:[0,2,4,5],order:0,org:4,other:[0,4],our:2,out:[0,4,5],outform:[0,5],over:0,overrid:0,own:5,packag:[2,4],pair:0,pam:[0,3,4,5],paramet:4,pars:4,part:5,pass:[3,4,5],password:[0,3,4],passwordless:5,path:[0,4],pattern:4,pem:[0,4,5],perm:5,permit:0,persist:[],pgrep:0,pid:[0,4],place:3,placehold:4,plain:4,pleas:[0,2,3,4,5],pm2:2,png:4,point:[0,3],port:[0,3,4,5],posit:0,possibl:[0,2],ppa:[2,5],prefer:3,preserv:[0,4],preserveenv:[0,4],privat:[0,3,4,5],privatekeyloc:[0,4],privileg:0,problem:[0,3,4],process:[0,1,3,4,5],processcommand:[0,4],profil:[],properti:4,provid:[0,1,2,3,4,5],proxi:[0,3,4],proxy_cache_bypass:0,proxy_http_vers:0,proxy_pass:0,proxy_set_head:0,ps256:4,ps384:4,ps512:4,publickeyloc:[0,4],pubout:[0,5],rang:4,raw:[],read:0,reason:[],reboot:[2,5],recommend:2,reconnect:4,red:4,redirect:[0,3],ref:[],refer:[2,4,5],refresh:[0,3,4],refreshtokenag:4,releas:2,relev:5,reload:0,remot:0,remote_addr:0,render:1,replac:4,repo:[3,5],repositori:[2,5],request:0,request_uri:0,requir:[0,2,3],respect:[0,4],respons:4,restrict:0,rgb:4,root:[],rootfoldertempl:[0,4],rout:4,rs256:4,rs384:4,rs512:4,rsa:[0,5],run:[0,1,3,4],safe:0,same:0,sampl:5,save:5,schema:[0,1],scope:4,script:[0,2,4],search:4,searchbas:4,searchfilt:4,searchscop:4,section:5,secur:[],see:4,send:4,serv:[0,3],server:[0,3,4,5],server_nam:0,serveraddress:[0,4],serverinterfac:[0,4],serverport:[0,4],servic:5,session:3,set:0,setenv:0,setup_lt:5,shadow:[0,5],shell:5,should:[2,3,4,5],sign:[0,3,4],simpl:3,some:3,sourc:2,span:[0,4],specif:0,specifi:[0,4],ssl:[0,4],ssl_certif:0,ssl_certificate_kei:0,standard:[0,3],start:[0,2,4,5],startdelai:4,starttl:4,startup:2,step:1,still:[3,4],stop:0,store:3,strict:4,strictdn:4,string:4,strongli:0,stub:4,style:0,sub:4,subfold:4,submit:3,sudo:[0,4,5],sudoer:[0,5],suggest:[0,4],support:[0,1,5],suppress:0,svg:[0,4],system:[1,2,3,4,5],tabl:[0,4],tag:3,team:5,test:[0,3,4],text:4,than:4,thei:[0,5],them:[3,5],thi:[0,1,3,4,5],thread:[],three:[],through:4,time:4,token:[0,3,4],tokenrefreshaddress:4,too:0,tool:[1,5],top:[0,4],top_level_fold:0,traffic:0,translat:0,trust:0,txt:4,type:4,ubuntu:[1,2],uid:4,unauthor:0,unchang:5,undefin:4,under:0,uniqu:[0,4],uniquefield:4,unix:[0,5],unnecessari:[],unsaf:5,updat:[0,5],upgrad:0,uri:[0,4],url:4,use:[0,2,3,4],used:[0,3,4,5],useemailasid:4,user1:0,user1_alt:0,user2:0,user:[0,3,4,5],user_id:4,userlookup:4,userlookupt:4,usermod:5,usernam:[0,3,4],usert:4,using:[0,2,4,5],usr:[0,4,5],util:2,v12:5,v14:5,v16:5,valid:[0,3,4],validdomain:4,variabl:0,verifi:4,version:[0,2,3,4,5],via:[0,3,4],visudo:[0,5],wai:0,wait:4,want:3,watch:0,web:3,websocket:0,welcom:[0,4],well:3,what:0,when:[0,2,4],whenev:0,where:5,whether:4,which:[0,2,3],who:5,wish:2,without:[0,2],work:1,world:[],would:[2,4],write:0,you:[0,2,3,4,5],your:[0,2,4,5],yyyymmdd:4},titles:["Configuration","CARTA Controller","Installation","Introduction","CARTA configuration schema","Step-by-step instructions for Ubuntu 20.04.2 (Focal Fossa)"],titleterms:{authent:[0,3],authprovid:4,backend:[0,2,5],carta:[0,1,4,5],configur:[0,4,5],control:[0,1,2,5],creat:5,depend:[3,5],directori:[0,5],extern:4,focal:5,fossa:5,frontend:2,futur:3,gener:[],get:3,googl:4,help:3,instal:[2,5],instruct:5,introduct:3,kei:[],keyalgorithm:4,ldap:4,local:4,nginx:[0,5],other:5,packag:5,permiss:[0,5],pm2:5,requir:5,run:[2,5],schema:4,script:5,set:5,startup:5,step:5,support:3,system:0,ubuntu:5,work:3}})
@@ -7,7 +7,7 @@
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
9
 
10
- <title>Step-by-step instructions for Ubuntu 20.04.2 (Focal Fossa) &mdash; CARTA Controller 3.0.0-beta.1b documentation</title>
10
+ <title>Step-by-step instructions for Ubuntu 20.04.2 (Focal Fossa) &mdash; CARTA Controller 3.0.0-beta.1d documentation</title>
11
11
 
12
12
 
13
13