carta-controller 5.0.0-beta.1 → 5.0.0-beta.1c

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.
@@ -4,7 +4,7 @@
4
4
  "pam": {
5
5
  "publicKeyLocation": "/etc/carta/carta_public.pem",
6
6
  "privateKeyLocation": "/etc/carta/carta_private.pem",
7
- "issuer": "my-carta-server.com"
7
+ "issuer": "carta.example.com"
8
8
  }
9
9
  },
10
10
  "database": {
@@ -14,15 +14,15 @@
14
14
  "serverPort": 8000,
15
15
  "serverInterface": "localhost",
16
16
  "processCommand": "/usr/bin/carta_backend",
17
- "killCommand": "/usr/local/bin/carta-kill-script",
17
+ "killCommand": "/usr/bin/carta-kill-script",
18
18
  "rootFolderTemplate": "/home/{username}",
19
19
  "baseFolderTemplate": "/home/{username}",
20
20
  "dashboard": {
21
21
  "bannerColor": "#d2dce5",
22
22
  "backgroundColor": "#f6f8fa",
23
- "bannerImage": "/path/to/my/image.svg",
23
+ "bannerImage": "/usr/lib/node_modules/carta-controller/public/images/carta_logo.svg",
24
24
  "infoText": "Welcome to the CARTA server.",
25
25
  "loginText": "<span>Please enter your login credentials:</span>",
26
- "footerText": "<span>If you have any problems, comments or suggestions, please <a href='mailto:test@test.com'>contact us.</a></span>"
26
+ "footerText": "<span>If you have any problems, comments or suggestions, please <a href='mailto:admin@carta.example.com'>contact us.</a></span>"
27
27
  }
28
28
  }
@@ -1,9 +1,9 @@
1
1
  server {
2
2
  listen 443 ssl;
3
3
  ssl on;
4
- server_name my-carta-server.com;
5
- ssl_certificate /etc/nginx/ssl/cert.pem;
6
- ssl_certificate_key /etc/nginx/ssl/key.pem;
4
+ server_name carta.example.com;
5
+ ssl_certificate /etc/letsencrypt/live/carta.example.com/fullchain.pem;
6
+ ssl_certificate_key /etc/letsencrypt/live/carta.example.com/privkey.pem;
7
7
  location / {
8
8
  proxy_set_header X-Forwarded-For $remote_addr;
9
9
  proxy_pass http://localhost:8000/;
@@ -16,11 +16,8 @@ server {
16
16
  }
17
17
 
18
18
  server {
19
- server_name my-carta-server.com;
20
- if ($host = my-carta-server.com) {
21
- return 301 https://$host$request_uri;
22
- }
19
+ server_name carta.example.com;
23
20
  listen 80 ;
24
21
  listen [::]:80 ;
25
- return 404;
22
+ return 301 https://$host$request_uri;
26
23
  }
@@ -4,4 +4,4 @@
4
4
  carta ALL=(%carta-users) NOPASSWD:SETENV: /usr/bin/carta_backend
5
5
 
6
6
  # carta user can run the kill script as any user in the carta-users group without entering password
7
- carta ALL=(%carta-users) NOPASSWD: /usr/local/bin/carta-kill-script
7
+ carta ALL=(%carta-users) NOPASSWD: /usr/bin/carta-kill-script
@@ -1,3 +1,4 @@
1
1
  Sphinx==5.1.0
2
2
  sphinx-jsonschema==1.19.1
3
3
  sphinx-rtd-theme==1.0.0
4
+ sphinx-tabs==3.4.5
package/docs/src/conf.py CHANGED
@@ -33,6 +33,7 @@ release = '4.1.0'
33
33
  extensions = [
34
34
  'sphinx_rtd_theme',
35
35
  'sphinx-jsonschema',
36
+ 'sphinx_tabs.tabs',
36
37
  ]
37
38
 
38
39
  # Add any paths that contain templates here, relative to this directory.
@@ -24,6 +24,8 @@ To provide the ``carta`` user with these privileges, you must make modifications
24
24
  :language: cfg
25
25
  :name: example_sudoers
26
26
 
27
+ Please ensure that the paths to the executables in this file match their install locations on your system (especially if you have installed multiple different versions of the backend or the controller).
28
+
27
29
  .. warning::
28
30
  Please only edit your sudoers configuration with ``visudo`` or equivalent.
29
31
 
@@ -55,7 +57,7 @@ PAM may be configured to use the host's local UNIX user authentication, or to co
55
57
 
56
58
  Nginx
57
59
  ~~~~~
58
-
60
+
59
61
  We strongly suggest serving over HTTPS and redirecting HTTP traffic to HTTPS, especially if handling authentication internally. If you use `nginx <https://www.nginx.com/>`_ as a proxy, you can use `this configuration example <_static/config/example_nginx.conf.stub>`_ as a starting point to redirect incoming traffic from port 443 to port 8000:
60
62
 
61
63
  .. literalinclude:: _static/config/example_nginx.conf.stub
@@ -89,7 +91,7 @@ By default, the controller assumes the config file is located at ``/etc/carta/co
89
91
 
90
92
  Configuration may also be added in separate files in a ``config.d`` directory in the same parent directory as the specified config file. Each file in this directory must be a valid configuration file. Any files found will be processed in alphabetical order, after the main configuration file.
91
93
 
92
- The controller automatically executes the backend with the ``--no_http`` flag, to suppress the backend's built-in HTTP server. If the ``logFileTemplate`` configuration option is set, ``--no_log`` is also used to suppress user-level logs. ``--port`` is used to override the default port. ``--top_level_folder`` and a positional argument are used to set the top-level and starting data directories for the user, as specified in the ``rootFolderTemplate`` and ``baseFolderTemplate`` options, respectively.
94
+ The controller automatically executes the backend with the ``--no_http`` flag, to suppress the backend's built-in HTTP server. If the ``logFileTemplate`` configuration option is set, ``--no_log`` is also used to suppress user-level logs. ``--port`` is used to override the default port. ``--top_level_folder`` and a positional argument are used to set the top-level and starting data directories for the user, as specified in the ``rootFolderTemplate`` and ``baseFolderTemplate`` options, respectively.
93
95
 
94
96
  To specify additional backend flags, we recommend editing a :ref:`global backend preferences<config-backend>` file. Most commandline arguments to the backend are also recognised as configuration options. The ``additionalArgs`` field in the controller configuration file can be used for any debug options which are not, and to disable the local or global configuration files.
95
97
 
@@ -123,9 +125,13 @@ The backend configuration file must adhere to the :ref:`CARTA backend configurat
123
125
  .. literalinclude:: _static/config/example_backend.json
124
126
  :language: json
125
127
  :name: example_backend
126
-
128
+
127
129
  .. _test-config:
128
130
 
131
+ .. note::
132
+
133
+ If you use the global configuration file, please ensure that it is readable by all users in the ``carta-users`` group, *and* that the parent ``/etc/carta/`` directory is readable and executable by all users in the ``carta-users`` group, otherwise the starting backend processes will not be able to access it.
134
+
129
135
  Testing the configuration
130
136
  -------------------------
131
137
 
@@ -137,7 +143,7 @@ To test the configuration of the controller, you can use the built-in test featu
137
143
  Adding additional config file config.d/pam.json
138
144
  No top-level folder was specified. Reverting to default location
139
145
  Testing configuration with user alice
140
- Password for user alice:
146
+ Password for user alice:
141
147
  ✔ Checked PAM connection for user alice
142
148
  ✔ Verified uid (1000) for user alice
143
149
  ✔ Generated access token for user alice
@@ -158,4 +164,4 @@ To test the configuration of the controller, you can use the built-in test featu
158
164
  Controller tests with user alice succeeded
159
165
 
160
166
  .. note::
161
- If you run the controller from a source directory using ``npm``, use ``--`` to ensure that any commandline parameters are passed to the controller and not to ``npm``. For example: ``npm run start -- --verbose --test alice``.
167
+ If you run the controller from a source directory using ``npm``, use ``--`` to ensure that any commandline parameters are passed to the controller and not to ``npm``. For example: ``npm start -- --verbose --test alice``.
@@ -8,30 +8,30 @@ CARTA Controller
8
8
 
9
9
  |backend-github| |npm-package| |last-commit| |commit-activity|
10
10
 
11
- CARTA is the Cube Analysis and Rendering Tool for Astronomy. This document describes the installation and configuration process for the controller component.
11
+ CARTA is the Cube Analysis and Rendering Tool for Astronomy. This document describes the installation and configuration process for a site deployment of CARTA, including the controller and its dependencies. We recommend this deployment option for organisations providing CARTA to multiple users.
12
12
 
13
- Detailed step-by-step instructions are provided for :ref:`Ubuntu 20.04 (Focal Fossa)<focal_instructions>` and :ref:`AlmaLinux 8<almalinux8_instructions>`.
14
- We officially support Ubuntu 18.04 and 20.04, and RHEL 7 and 8 (and their freely distributed binary-compatible alternatives, such as CentOS or AlmaLinux), with all available standard updates applied.
13
+ Detailed :ref:`step-by-step instructions <step_by_step>` are provided for a standalone CARTA deployment on a dedicated server. Please use these instructions as a starting point, and make adjustments as required to integrate CARTA into your organisation's existing systems. More detailed information about customisation can be found in the :ref:`installation` and :ref:`configuration` sections.
14
+
15
+ We officially support Ubuntu 20.04 (v4.x only), 22.04, and 24.04, and AlmaLinux 8 and 9 (and equivalent RPM-based distributions), with all available standard updates applied. We provide legacy support only for existing 4.x installations on RHEL 7 and equivalents.
15
16
 
16
17
  .. toctree::
17
18
  :maxdepth: 2
18
19
  :caption: Contents:
19
-
20
+
20
21
  introduction
21
22
  installation
22
23
  configuration
23
- ubuntu_focal_instructions
24
- almalinux8_instructions
24
+ step_by_step
25
25
  schema
26
26
  schema_backend
27
27
 
28
- .. |backend-github| image:: https://img.shields.io/badge/CARTA%20Version-4.1.0-brightgreen
28
+ .. |backend-github| image:: https://img.shields.io/badge/CARTA%20Version-5.0.0--beta.1-brightgreen
29
29
  :alt: View this backend version on GitHub
30
- :target: https://github.com/CARTAvis/carta-backend/releases/tag/v4.1.0
30
+ :target: https://github.com/CARTAvis/carta-backend/releases/tag/v5.0.0-beta.1
31
31
 
32
- .. |npm-package| image:: https://img.shields.io/npm/v/carta-controller?style=flat
32
+ .. |npm-package| image:: https://img.shields.io/npm/v/carta-controller/beta?style=flat
33
33
  :alt: View this project on npm
34
- :target: https://npmjs.org/package/carta-controller
34
+ :target: https://www.npmjs.com/package/carta-controller/v/5.0.0-beta.1
35
35
 
36
36
  .. |last-commit| image:: https://img.shields.io/github/last-commit/CARTAvis/carta-controller
37
37
  :alt: Last commit
@@ -3,46 +3,218 @@
3
3
  Installation
4
4
  ============
5
5
 
6
- This section provides a general overview. For a more detailed installation guide, please refer to our step-by-step instructions for :ref:`Ubuntu<focal_instructions>` or :ref:`RPM-based distributions<almalinux8_instructions>`.
6
+ .. note::
7
+
8
+ This section provides an overview of different ways to install specific components of CARTA. Please refer to our :ref:`step-by-step instructions <step_by_step>` for a complete set of installation and configuration instructions for supported platforms, and ensure that you have followed all the required steps before running the controller.
7
9
 
8
10
  .. _install_backend:
9
11
 
10
12
  Installing the backend
11
13
  ----------------------
12
14
 
13
- We provide binary `Ubuntu packages <https://launchpad.net/~cartavis-team/+archive/ubuntu/carta>`_ and `RPM packages <https://copr.fedorainfracloud.org/coprs/cartavis/carta>`_ of the latest beta and stable releases of the CARTA backend. You can install the latest stable version with all dependencies on Ubuntu by adding our PPA to your system and running ``apt-get install carta-backend``.
15
+ Packages
16
+ ~~~~~~~~
17
+
18
+ We provide binary `Ubuntu <https://launchpad.net/~cartavis-team/+archive/ubuntu/carta>`_ and `RPM <https://copr.fedorainfracloud.org/coprs/cartavis/carta>`_ packages of the latest beta and stable releases of the CARTA backend for all officially supported distributions.
19
+
20
+ You can install the latest stable version with all dependencies on Ubuntu by adding our PPA to your system and running ``apt-get install carta-backend``.
21
+
22
+ On AlmaLinux you can add our Copr repository and run ``sudo dnf install carta-backend``.
14
23
 
15
24
  .. note::
16
25
 
17
26
  The ``carta-backend`` package is updated with every stable CARTA release. If you would like to install the latest **beta** version of CARTA, or to receive beta release updates as well as stable release updates in the future, please install the ``carta-backend-beta`` package instead.
18
27
 
19
- .. note::
28
+ Packaged debug symbols
29
+ ~~~~~~~~~~~~~~~~~~~~~~
30
+
31
+ You can install debugging symbols for our Ubuntu packages with ``apt`` if you enable this option for our PPA.
32
+
33
+ .. code-block:: shell
34
+
35
+ sudo add-apt-repository -c main/debug ppa:cartavis-team/carta
36
+ sudo apt-get install carta-backend-dbgsym
37
+
38
+ ..
39
+ From CARTA v5 beta onwards, debugging symbols can also be installed for our RPM packages.
40
+
41
+ .. code-block:: shell
42
+
43
+ dnf debuginfo-install carta-backend
44
+
45
+ Rebuilding packages
46
+ ~~~~~~~~~~~~~~~~~~~
47
+
48
+ Our Ubuntu package source is available in `a collection of public repositories <https://github.com/search?q=org%3Aidia-astro+-deb&type=repositories>`_. Please refer to the ``debian`` subdirectories in these repositories if you would like to build your own Debian packages, or to check what build options we use.
49
+
50
+ You can also obtain the Ubuntu package source with ``apt-src`` (after enabling source packages for our PPA).
51
+
52
+ .. code-block:: shell
53
+
54
+ sudo add-apt-repository -s ppa:cartavis-team/carta
55
+ sudo apt-get update
56
+ sudo apt-get install apt-src
57
+ apt-src install carta-backend
58
+
59
+ You can obtain the RPM package source with ``dnf``.
60
+
61
+ .. code-block:: shell
62
+
63
+ dnf download --source carta-backend
64
+
65
+ Custom Casacore version
66
+ ~~~~~~~~~~~~~~~~~~~~~~~
67
+
68
+ The backend depends on a custom version of the Casacore C++ library which also includes the image analysis component of CASA. We provide Ubuntu and RPM packages of this dependency in the same repositories as the backend packages. To avoid clashes with the default system Casacore packages, our packages use a different name, and a custom install location, ``/opt/carta-casacore``.
69
+
70
+ External data for Casacore
71
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
72
+
73
+ Casacore depends on a collection of external astronomical data. Some distributions provide packages for this. Because these packages may be far behind the current version of the data, you may wish to manage the required files without using a package.
74
+
75
+ The ``casacore-data`` package is recommended by the Ubuntu backend package, but installing it is optional. The packages in `our Ubuntu PPA <https://launchpad.net/~cartavis-team/+archive/ubuntu/carta>`_ should be compatible both with the ``casacore-data`` package in the core Ubuntu repositories and with the package provided by the `Kern PPAs <https://launchpad.net/~kernsuite>`_. To avoid installing the ``casacore-data`` package, use the ``--no-install-recommends`` flag when installing the backend package.
76
+
77
+ An example script for fetching the data manually (you can configure ``cron`` to run this weekly):
78
+
79
+ .. code-block:: shell
80
+
81
+ #!/bin/bash
82
+
83
+ rm -f /tmp/WSRT_Measures.ztar
84
+ wget ftp://ftp.astron.nl/outgoing/Measures/WSRT_Measures.ztar -P /tmp -q
85
+ tar zxf /tmp/WSRT_Measures.ztar -C /var/lib/casacore/data
86
+ chmod -R 755 /var/lib/casacore/data
87
+
88
+ Installing from source
89
+ ~~~~~~~~~~~~~~~~~~~~~~
90
+
91
+ To install the backend on a different host system, or to install a custom version, you can build it from source from the `backend repository <https://github.com/CARTAvis/carta-backend/>`_ on GitHub. The `dockerfiles <https://github.com/CARTAvis/carta-backend/tree/dev/Dockerfiles>`_ in the backend repository are a good starting point for installing and configuring all the build dependencies on different Linux distributions.
92
+
93
+ Once all dependencies have been installed, check out the backend repository with all its submodules, and build using ``cmake``.
94
+
95
+ .. code-block:: shell
96
+
97
+ # Clone the backend repository
98
+ git clone --recurse-submodules https://github.com/CARTAvis/carta-backend.git
99
+ cd carta-backend
100
+
101
+ # Configure the build
102
+ mkdir build
103
+ cd build
104
+ cmake ..
20
105
 
21
- The ``casacore-data`` package is recommended by the Ubuntu backend package, but installing it is optional. The packages in our PPA should be compatible both with the ``casacore-data`` package in the core Ubuntu repositories and with the package provided by the `Kern PPAs <https://launchpad.net/~kernsuite>`_. You may also wish to manage the required data files without using a package.
106
+ # Build
107
+ make -j8
22
108
 
23
- To install the backend on a different host system, or to install a custom version, you can build it from source from the `backend repository <https://github.com/CARTAvis/carta-backend/>`_ on GitHub.
109
+ The backend executable will be located in the ``build`` directory.
110
+
111
+ .. note::
112
+
113
+ If you install a custom backend, ensure that a custom ``processCommand`` is set in the controller configuration and that the backend path is updated in the sudoers file.
24
114
 
25
115
  .. _install_frontend:
26
116
 
27
117
  Installing the frontend
28
118
  -----------------------
29
119
 
30
- If you install the controller from NPM, the corresponding packaged version of the frontend will also be installed automatically. If you wish to install the controller from source, or would like to use a custom frontend version, you can install it from the `frontend repository <https://github.com/CARTAvis/carta-frontend/>`_ on GitHub.
120
+ If you install the controller package from NPM, the corresponding packaged version of the frontend will be installed automatically as a dependency. However, you may wish to install a custom version of the frontend if you are installing the controller from source, or if you would like to test an updated frontend version.
121
+
122
+ .. note::
123
+
124
+ If you install a custom frontend, ensure that a custom ``frontendPath`` is set in the controller configuration.
125
+
126
+ NPM package
127
+ ~~~~~~~~~~~
128
+
129
+ You can manually install a `specific published version <https://www.npmjs.com/package/carta-frontend>`_ of the frontend `from NPM <https://www.npmjs.com/package/carta-frontend>`_, either globally or into a custom location.
130
+
131
+ .. code-block:: shell
132
+
133
+ # Install latest pre-release version into the current directory
134
+ npm install carta-frontend@dev
135
+
136
+ Installing from source
137
+ ~~~~~~~~~~~~~~~~~~~~~~
138
+
139
+ Development versions of the frontend can be installed from the `frontend repository <https://github.com/CARTAvis/carta-frontend/>`_ on GitHub. Node.js and NPM are required for the build. We recommend performing the WebAssembly compilation in a container. The example below requires Docker to be installed. Please refer to the repository documentation for more compilation options.
140
+
141
+ .. code-block:: shell
142
+
143
+ # Clone the frontend repository
144
+ git clone --recurse-submodules https://github.com/CARTAvis/carta-frontend.git
145
+ cd carta-frontend
146
+
147
+ # Build the frontend (using Docker for WebAssembly compilation)
148
+ npm install
149
+ npm run prepack
150
+
151
+ The built frontend will be available in the ``build`` subdirectory.
152
+
153
+ Copying existing build
154
+ ~~~~~~~~~~~~~~~~~~~~~~
155
+
156
+ The generated code in the ``build`` directory is standalone and portable between systems. If you already have a build of the frontend in another location, you can safely copy only this directory and use it without having to rebuild it. This may be simpler than setting up a build environment on your server.
157
+
158
+ The build can be found in ``carta-frontend/build`` in the ``node_packages`` directory created by an NPM install. You can also download tarballs of builds directly from the NPM repository without using ``npm``.
31
159
 
32
160
  .. _install_controller:
33
161
 
34
162
  Installing the controller
35
163
  -------------------------
36
164
 
37
- You can install the latest stable version of the CARTA controller from NPM by running ``npm install -g carta-controller``, or from GitHub by cloning the `controller repository <https://github.com/CARTAvis/carta-controller/>`_ and running ``npm install``.
165
+ NPM package
166
+ ~~~~~~~~~~~
167
+
168
+ You can install the latest stable version of the CARTA controller from NPM by running ``npm install -g carta-controller``.
38
169
 
39
170
  .. note::
40
171
 
41
172
  If you would like to install the latest **beta** release of CARTA, please install ``carta-controller@beta`` instead.
42
173
 
174
+ If you would like to install the package in a local directory, omit the ``-g`` flag.
175
+
176
+ Installing from source
177
+ ~~~~~~~~~~~~~~~~~~~~~~
178
+
179
+ Development versions of the controller can be installed from the `controller repository <https://github.com/CARTAvis/carta-controller/>`_.
180
+
181
+ .. code-block:: shell
182
+
183
+ # Clone the controller repository
184
+ git clone https://github.com/CARTAvis/carta-controller.git
185
+ cd carta-controller
186
+
187
+ # Install the controller
188
+ npm install
189
+
43
190
  .. _run_controller:
44
191
 
45
192
  Running the controller
46
193
  ----------------------
47
194
 
48
- After you have installed the backend and the controller and edited the controller :ref:`configuration<configuration>`, you can start the controller with ``npm run start`` (if installing from the source on GitHub) or just by running ``carta-controller`` (if installing the package from NPM). You can use a utility such as `forever <https://github.com/foreversd/forever>`_ or `pm2 <https://pm2.keymetrics.io/>`_ to keep the controller running. It is also possible to create `a pm2 startup script <https://pm2.keymetrics.io/docs/usage/startup/>`_ which will automatically start the controller when the system is rebooted.
195
+ Executable location
196
+ ~~~~~~~~~~~~~~~~~~~
197
+
198
+ The ``carta-controller`` executable can be found
199
+
200
+ * on the system path, if you installed the NPM package globally
201
+ * in ``node_modules/.bin`` and ``node_modules/carta-controller/dist``, if you installed the NPM package locally
202
+ * in ``carta-controller/dist``, if you installed from the source directory.
203
+
204
+ If you installed the controller from source, you can also launch it by running ``npm start`` in the source directory.
205
+
206
+ Kill script location
207
+ ~~~~~~~~~~~~~~~~~~~~
208
+
209
+ The kill script executable path is
210
+
211
+ * ``/usr/bin/carta-kill-script`` or ``/usr/local/bin/carta-kill-script``, if you installed the NPM package globally (depending on the Node.js distribution)
212
+ * ``node_modules/.bin/carta-kill-script``, if you installed the NPM package locally
213
+ * ``carta-controller/scripts/carta_kill_script.sh``, if you installed from the source directory.
214
+
215
+ Ensure that the correct ``killCommand`` is set in the controller configuration, and that the kill script path is correct in the sudoers file.
216
+
217
+ Persistence
218
+ ~~~~~~~~~~~
219
+
220
+ You can use a utility such as `forever <https://github.com/foreversd/forever>`_ or `pm2 <https://pm2.keymetrics.io/>`_ to keep the controller running. It is also possible to create `a pm2 startup script <https://pm2.keymetrics.io/docs/usage/startup/>`_ which will automatically start the controller when the system is rebooted.
@@ -12,13 +12,13 @@ Dependencies
12
12
 
13
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.
14
14
 
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.
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
 
17
17
  MongoDB is required for storing user preferences, layouts, workspaces, and (in the near future) controller metrics.
18
18
 
19
19
  You also need a working `NodeJS LTS <https://nodejs.org/en/about/releases/>`_ installation with NPM. Use ``npm install`` to install all Node dependencies.
20
20
 
21
- Detailed installation instructions are available for :ref:`Ubuntu<focal_instructions>` and :ref:`RPM-based distributions<almalinux8_instructions>`.
21
+ :ref:`Step-by-step installation instructions <step_by_step>` are available for officially supported platforms.
22
22
 
23
23
  .. _authentication:
24
24