carta-controller 3.0.0-beta.1d → 3.0.0-beta.2
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.
- package/README.md +3 -3
- package/config/config_schema.json +3 -3
- package/config/example_backend.json +7 -0
- package/config/preference_backend_schema_2.json +97 -0
- package/docs/src/centos8_instructions.rst +248 -0
- package/docs/src/conf.py +1 -1
- package/docs/src/configuration.rst +58 -4
- package/docs/src/index.rst +7 -4
- package/docs/src/installation.rst +2 -2
- package/docs/src/introduction.rst +1 -1
- package/docs/src/schema_backend.rst +7 -0
- package/docs/src/ubuntu_focal_instructions.rst +2 -2
- package/package.json +2 -2
- package/views/templated.pug +1 -1
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# CARTA Controller
|
|
2
2
|
|
|
3
|
-
[](https://github.com/CARTAvis/carta-backend/releases/tag/v3.0.0-beta.2)
|
|
4
|
+
[](https://npmjs.org/package/carta-controller "View this project on npm")
|
|
5
5
|

|
|
6
6
|

|
|
7
7
|
|
|
@@ -9,4 +9,4 @@ The CARTA controller provides a simple dashboard which authenticates users and a
|
|
|
9
9
|
|
|
10
10
|
For installation and configuration instructions, and more detailed information about the controller's features, please consult [the full documentation on ReadTheDocs](https://carta-controller.readthedocs.io/en/dev/).
|
|
11
11
|
|
|
12
|
-
If you encounter a problem with the controller or documentation, please submit an issue in the controller repo. If you need assistance in configuration or deployment, please contact the [CARTA helpdesk](mailto:
|
|
12
|
+
If you encounter a problem with the controller or documentation, please submit an issue in the controller repo. If you need assistance in configuration or deployment, please contact the [CARTA helpdesk](mailto:support@carta.freshdesk.com).
|
|
@@ -405,7 +405,7 @@
|
|
|
405
405
|
"default": false
|
|
406
406
|
},
|
|
407
407
|
"serverAddress": {
|
|
408
|
-
"description": "Public-facing server address",
|
|
408
|
+
"description": "Public-facing server address. If this is specified, all requests will be redirected to this address, otherwise any address used will be preserved",
|
|
409
409
|
"type": "string",
|
|
410
410
|
"format": "uri",
|
|
411
411
|
"pattern": "^https?://"
|
|
@@ -474,7 +474,7 @@
|
|
|
474
474
|
"default": "/usr/local/bin/carta-kill-script"
|
|
475
475
|
},
|
|
476
476
|
"rootFolderTemplate": {
|
|
477
|
-
"description": "Top-level path of directories accessible to CARTA. The `{username}` placeholder will be replaced with the username",
|
|
477
|
+
"description": "Top-level path of directories accessible to CARTA. The `{username}` placeholder will be replaced with the username. Defaults to `/usr/share/carta` if it exists, or `/usr/local/share/carta` if it exists. If neither exists and no default is provided, the controller exits with an error",
|
|
478
478
|
"type": "string",
|
|
479
479
|
"examples": [
|
|
480
480
|
"/home/{username}",
|
|
@@ -482,7 +482,7 @@
|
|
|
482
482
|
]
|
|
483
483
|
},
|
|
484
484
|
"baseFolderTemplate": {
|
|
485
|
-
"description": "Starting directory of CARTA. Must be a subfolder of rootFolderTemplate. The `{username}` placeholder will be replaced with the username",
|
|
485
|
+
"description": "Starting directory of CARTA. Must be a subfolder of rootFolderTemplate. The `{username}` placeholder will be replaced with the username. Defaults to the same value as `rootFolderTemplate`",
|
|
486
486
|
"type": "string",
|
|
487
487
|
"examples": [
|
|
488
488
|
"/home/{username}/CARTA",
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Backend preferences",
|
|
4
|
+
"description": "Schema for CARTA backend preferences (Version 2)",
|
|
5
|
+
"$id": "carta_backend_preferences_2",
|
|
6
|
+
"required": [],
|
|
7
|
+
"properties": {
|
|
8
|
+
"verbosity": {
|
|
9
|
+
"type": "integer",
|
|
10
|
+
"enum": [
|
|
11
|
+
0,
|
|
12
|
+
1,
|
|
13
|
+
2,
|
|
14
|
+
3,
|
|
15
|
+
4,
|
|
16
|
+
5
|
|
17
|
+
],
|
|
18
|
+
"default": 4
|
|
19
|
+
},
|
|
20
|
+
"no_log": {
|
|
21
|
+
"type": "boolean",
|
|
22
|
+
"default": true
|
|
23
|
+
},
|
|
24
|
+
"log_performance": {
|
|
25
|
+
"type": "boolean",
|
|
26
|
+
"default": false
|
|
27
|
+
},
|
|
28
|
+
"log_protocol_messages": {
|
|
29
|
+
"type": "boolean",
|
|
30
|
+
"default": false
|
|
31
|
+
},
|
|
32
|
+
"no_http": {
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"default": false
|
|
35
|
+
},
|
|
36
|
+
"no_browser": {
|
|
37
|
+
"type": "boolean",
|
|
38
|
+
"default": false
|
|
39
|
+
},
|
|
40
|
+
"browser": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"default": ""
|
|
43
|
+
},
|
|
44
|
+
"host": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"minLength": 1,
|
|
47
|
+
"default": "0.0.0.0"
|
|
48
|
+
},
|
|
49
|
+
"port": {
|
|
50
|
+
"type": ["integer", "array"],
|
|
51
|
+
"default": 3002
|
|
52
|
+
},
|
|
53
|
+
"grpc_port": {
|
|
54
|
+
"type": "integer",
|
|
55
|
+
"default": -1
|
|
56
|
+
},
|
|
57
|
+
"omp_threads": {
|
|
58
|
+
"type": "integer",
|
|
59
|
+
"default": -1
|
|
60
|
+
},
|
|
61
|
+
"top_level_folder": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"minLength": 1,
|
|
64
|
+
"default": "/"
|
|
65
|
+
},
|
|
66
|
+
"frontend_folder": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"minLength": 1,
|
|
69
|
+
"default": ""
|
|
70
|
+
},
|
|
71
|
+
"exit_timeout": {
|
|
72
|
+
"type": "integer",
|
|
73
|
+
"default": -1
|
|
74
|
+
},
|
|
75
|
+
"initial_timeout": {
|
|
76
|
+
"type": "integer",
|
|
77
|
+
"default": -1
|
|
78
|
+
},
|
|
79
|
+
"idle_timeout": {
|
|
80
|
+
"type": "integer",
|
|
81
|
+
"default": -1
|
|
82
|
+
},
|
|
83
|
+
"read_only_mode": {
|
|
84
|
+
"type": "boolean",
|
|
85
|
+
"default": false
|
|
86
|
+
},
|
|
87
|
+
"starting_folder": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"minLength": 1,
|
|
90
|
+
"default": ""
|
|
91
|
+
},
|
|
92
|
+
"event_thread_count": {
|
|
93
|
+
"type": "integer",
|
|
94
|
+
"default": -1
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
.. _centos8_instructions:
|
|
2
|
+
|
|
3
|
+
Step-by-step instructions for CentOS 8
|
|
4
|
+
======================================
|
|
5
|
+
|
|
6
|
+
.. note::
|
|
7
|
+
|
|
8
|
+
These instructions should also work for RHEL 8, AlmaLinux, and Rocky Linux. Some changes may be necessary for RHEL 7 / CentOS 7.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
1. Install Node.js
|
|
12
|
+
~~~~~~~~~~~~~~~~~~
|
|
13
|
+
|
|
14
|
+
The CARTA controller uses `Node.js <https://nodejs.org/>`_ and supports v12, v14, and v16. Node.js can easily be installed from the CentOS 8 AppStream repository. Here we install v14, as well as the ``npm`` package manager.
|
|
15
|
+
|
|
16
|
+
.. code-block:: shell
|
|
17
|
+
|
|
18
|
+
# Install Node.js v14:
|
|
19
|
+
sudo dnf module enable nodejs:14
|
|
20
|
+
sudo dnf install -y nodejs npm
|
|
21
|
+
|
|
22
|
+
# Check it is installed and working:
|
|
23
|
+
node --version
|
|
24
|
+
npm --version
|
|
25
|
+
|
|
26
|
+
2. Install MongoDB
|
|
27
|
+
~~~~~~~~~~~~~~~~~~
|
|
28
|
+
|
|
29
|
+
The CARTA controller uses `MongoDB <https://www.mongodb.com/>`_ to store user preferences, etc.. MongoDB is not available through the default CentOS 8 repositories, but we can add a custom repository to install it more easily.
|
|
30
|
+
|
|
31
|
+
.. code-block:: shell
|
|
32
|
+
|
|
33
|
+
# Create a custom MongoDB repo file:
|
|
34
|
+
sudo cat <<EOT >> /etc/yum.repos.d/mongodb-org.repo
|
|
35
|
+
[mongodb-org-4.4]
|
|
36
|
+
name=MongoDB Repository
|
|
37
|
+
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
|
|
38
|
+
gpgcheck=1
|
|
39
|
+
enabled=1
|
|
40
|
+
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
|
|
41
|
+
EOT
|
|
42
|
+
|
|
43
|
+
# Install MongoDB:
|
|
44
|
+
sudo dnf update
|
|
45
|
+
sudo dnf install -y mongodb-org
|
|
46
|
+
|
|
47
|
+
# Start and enable MongoDB to run on startup:
|
|
48
|
+
sudo systemctl start mongod
|
|
49
|
+
sudo systemctl enable mongod
|
|
50
|
+
|
|
51
|
+
# Check that it is working
|
|
52
|
+
sudo systemctl status mongod
|
|
53
|
+
|
|
54
|
+
.. note::
|
|
55
|
+
|
|
56
|
+
On RHEL7/CentOS7, MongoDB v14 can be installed as follows:
|
|
57
|
+
``curl -fsSL https://rpm.nodesource.com/setup_14.x | bash - && yum install -y nodejs``
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
3. Install the CARTA controller
|
|
61
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
62
|
+
|
|
63
|
+
The easiest way to install the CARTA controller is using ``npm``.
|
|
64
|
+
|
|
65
|
+
.. code-block:: shell
|
|
66
|
+
|
|
67
|
+
sudo dnf install -y python3 make gcc-c++
|
|
68
|
+
sudo npm install -g --unsafe-perm carta-controller@beta
|
|
69
|
+
|
|
70
|
+
.. note::
|
|
71
|
+
|
|
72
|
+
The CARTA controller executable will be installed at ``/usr/local/lib/node_modules/carta-controller``.
|
|
73
|
+
The CARTA frontend will be installed at ``/usr/local/lib/node_modules/carta-controller/node_modules/carta-frontend/build``.
|
|
74
|
+
|
|
75
|
+
.. note::
|
|
76
|
+
|
|
77
|
+
Do not pass the ``--unsafe-perm`` flag to ``npm`` if using a local install.
|
|
78
|
+
|
|
79
|
+
.. note::
|
|
80
|
+
|
|
81
|
+
On RHEL7/CentOS7 the CARTA controller package can not run with the default gcc version 4.8.5 (there would be an error due to ``node-linux-pam``).
|
|
82
|
+
A work around is to install a newer GCC version from source in order to get a newer ``libstdc++.so.6``, then add the location of the newer
|
|
83
|
+
``libstdc++.so.6`` to the LD_LIBRARY_PATH. After that, the CARTA controller can run on RHEL7/CentOS7.
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
4. Install the CARTA backend
|
|
88
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
89
|
+
|
|
90
|
+
The easiest way may be to install the CARTA backend is from our cartavis RPM repository.
|
|
91
|
+
|
|
92
|
+
.. code-block:: shell
|
|
93
|
+
|
|
94
|
+
# Install the CARTA backend
|
|
95
|
+
sudo curl https://packages.cartavis.org/cartavis-el8.repo --output /etc/yum.repos.d/cartavis.repo
|
|
96
|
+
sudo dnf -y install 'dnf-command(config-manager)'
|
|
97
|
+
sudo dnf -y install epel-release
|
|
98
|
+
sudo dnf -y config-manager --set-enabled powertools
|
|
99
|
+
sudo dnf -y install carta-backend-beta
|
|
100
|
+
|
|
101
|
+
# Check that the backend can run and matches the major version number of the controller
|
|
102
|
+
/usr/bin/carta_backend --version
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
5. Install Nginx
|
|
106
|
+
~~~~~~~~~~~~~~~~
|
|
107
|
+
|
|
108
|
+
The CARTA controller requires a webserver. Here we use `NGINX <https://www.nginx.com/>`_, but Apache should work too.
|
|
109
|
+
|
|
110
|
+
.. code-block:: shell
|
|
111
|
+
|
|
112
|
+
# Install nginx:
|
|
113
|
+
sudo dnf install -y nginx
|
|
114
|
+
sudo systemctl start nginx
|
|
115
|
+
sudo systemctl enable nginx
|
|
116
|
+
sudo setsebool -P httpd_can_network_connect 1
|
|
117
|
+
sudo firewall-cmd --permanent --zone=public --add-service=http
|
|
118
|
+
sudo firewall-cmd --permanent --zone=public --add-service=https
|
|
119
|
+
sudo firewall-cmd --reload
|
|
120
|
+
|
|
121
|
+
# Set up the nginx configuration file using our sample configuration file linked below:
|
|
122
|
+
sudo cd /etc/nginx/conf.d/
|
|
123
|
+
sudo vi /etc/nginx/conf.d/carta.conf
|
|
124
|
+
sudo systemctl restart nginx
|
|
125
|
+
|
|
126
|
+
# Check it is running:
|
|
127
|
+
sudo systemctl status nginx
|
|
128
|
+
|
|
129
|
+
A :ref:`sample configuration file<example_nginx>` is provided in the configuration section. This should be adapted to your server configuration.
|
|
130
|
+
|
|
131
|
+
.. note::
|
|
132
|
+
If there are problems, you can debug with ``journactl -xe`` and by checking log files in ``/var/log/nginx/``.
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
6. Create the 'carta' user and modify sudoers
|
|
136
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
137
|
+
|
|
138
|
+
For security, we recommend not to run the CARTA controller as the root user. Therefore we create a new user called ``carta``.
|
|
139
|
+
|
|
140
|
+
We will assign the group ``carta-users`` to every user account and enable them to run ``/usr/bin/carta_backend`` and the script to close the CARTA backend, ``/usr/local/bin/carta-kill-script``, by adding a custom entry to the ``sudoers`` file.
|
|
141
|
+
|
|
142
|
+
.. code-block:: shell
|
|
143
|
+
|
|
144
|
+
# Create the carta user:
|
|
145
|
+
sudo adduser carta
|
|
146
|
+
# Check everything is OK
|
|
147
|
+
id carta
|
|
148
|
+
# It should show 'uid=1000(carta) gid=1000(carta) groups=1000(carta)'
|
|
149
|
+
|
|
150
|
+
# So that log files can be written:
|
|
151
|
+
sudo mkdir -p /var/log/carta
|
|
152
|
+
sudo chown -R carta /var/log/carta
|
|
153
|
+
|
|
154
|
+
# Add the custom sudoers file entry using our sample linked below
|
|
155
|
+
sudo visudo -f /etc/sudoers.d/carta_controller
|
|
156
|
+
|
|
157
|
+
An :ref:`example sudoers configuration<example_sudoers>` is provided in the configuration section.
|
|
158
|
+
|
|
159
|
+
.. note::
|
|
160
|
+
The only safe way to modify sudoers is using ``visudo``. Any syntax errors from directly editing sudoers could make your system unusable.
|
|
161
|
+
|
|
162
|
+
.. note::
|
|
163
|
+
The ``carta`` user should not be in the ``carta-users`` group. ``carta-users`` should only be assigned to the normal user accounts.
|
|
164
|
+
|
|
165
|
+
7. Set up the user authentication method
|
|
166
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
167
|
+
|
|
168
|
+
This is the most difficult step and depends on how you authenticate users at your institute. In this step-by-step guide we use PAM local authentication and a local user, ``bob``, on the server running the CARTA controller. The user ``bob`` needs to be part of the ``carta-users`` group.
|
|
169
|
+
|
|
170
|
+
With PAM authentication, the ``carta`` user that runs the CARTA controller requires access to the ``/etc/shadow`` file in order to authenticate other users. We can enable this by creating a new group called ``shadow`` and assigning the ``/etc/shadow`` file to that group.
|
|
171
|
+
|
|
172
|
+
.. note::
|
|
173
|
+
Only PAM with local authentication requires ``/etc/shadow`` access. PAM using LDAP, and Google OAuth, do not require ``/etc/shadow`` access.
|
|
174
|
+
|
|
175
|
+
.. code-block:: shell
|
|
176
|
+
|
|
177
|
+
# Create the test user 'bob':
|
|
178
|
+
sudo useradd -G carta-users bob
|
|
179
|
+
sudo passwd bob
|
|
180
|
+
|
|
181
|
+
# A new group called 'shadow' needs to be assinged to the /etc/shadow file and user 'carta':
|
|
182
|
+
sudo groupadd shadow
|
|
183
|
+
sudo chgrp shadow /etc/shadow
|
|
184
|
+
sudo chmod g+r /etc/shadow
|
|
185
|
+
sudo usermod -a -G shadow carta
|
|
186
|
+
ls -l /etc/shadow
|
|
187
|
+
# It should show permissions as ----r-----. 1 root shadow
|
|
188
|
+
# It could be helpful to reboot the server at this point
|
|
189
|
+
sudo reboot
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
8. Configure the CARTA controller
|
|
193
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
194
|
+
|
|
195
|
+
Create and fill in the ``config.json`` using our :ref:`sample configuration file<example_config>`.
|
|
196
|
+
Also generate private/public keys as they are used by the CARTA controller to sign/verify/refresh access tokens.
|
|
197
|
+
|
|
198
|
+
.. code-block:: shell
|
|
199
|
+
|
|
200
|
+
sudo mkdir /etc/carta
|
|
201
|
+
sudo chown -R carta /etc/carta
|
|
202
|
+
vi /etc/carta/config.json
|
|
203
|
+
|
|
204
|
+
# Generate private/public keys:
|
|
205
|
+
cd /etc/carta
|
|
206
|
+
sudo openssl genrsa -out carta_private.pem 4096
|
|
207
|
+
sudo openssl rsa -in carta_private.pem -outform PEM -pubout -out carta_public.pem
|
|
208
|
+
|
|
209
|
+
Please check the `CARTA Configuration Schema <https://carta-controller.readthedocs.io/en/latest/schema.html#schema>`_ for all available options.
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
9. Check everything is working
|
|
213
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
214
|
+
|
|
215
|
+
Here we switch to the ``carta`` user and test the CARTA controller with our test user ``bob``:
|
|
216
|
+
|
|
217
|
+
.. code-block:: shell
|
|
218
|
+
|
|
219
|
+
su - carta
|
|
220
|
+
carta-controller -verbose -test bob
|
|
221
|
+
|
|
222
|
+
If the test is successful, the CARTA controller should be ready to deploy.
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
10. Start the CARTA controller
|
|
226
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
227
|
+
|
|
228
|
+
.. code-block:: shell
|
|
229
|
+
|
|
230
|
+
su - carta
|
|
231
|
+
carta-controller
|
|
232
|
+
|
|
233
|
+
Now your users should be able to access your server's URL and log into CARTA.
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
Optional: Set up the CARTA controller to run with pm2
|
|
237
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
238
|
+
|
|
239
|
+
`pm2 <https://pm2.keymetrics.io/>`_ is a very convenient tool to keep the CARTA controller service running in the background, and even start it up automatically after a reboot.
|
|
240
|
+
|
|
241
|
+
.. code-block:: shell
|
|
242
|
+
|
|
243
|
+
sudo npm install -g pm2
|
|
244
|
+
su -carta
|
|
245
|
+
pm2 start carta-controller
|
|
246
|
+
|
|
247
|
+
Please refer to the `pm2 documentation <https://pm2.keymetrics.io/docs/usage/startup/>`_ for detailed instructions.
|
|
248
|
+
|
package/docs/src/conf.py
CHANGED
|
@@ -22,7 +22,7 @@ copyright = '2021, Angus Comrie, Adrianna Pińska and Robert Simmonds'
|
|
|
22
22
|
author = 'Angus Comrie, Adrianna Pińska and Robert Simmonds'
|
|
23
23
|
|
|
24
24
|
# The full version, including alpha/beta/rc tags
|
|
25
|
-
release = '3.0.0-beta.
|
|
25
|
+
release = '3.0.0-beta.2'
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
# -- General configuration ---------------------------------------------------
|
|
@@ -8,7 +8,7 @@ Configuration
|
|
|
8
8
|
System Configuration
|
|
9
9
|
--------------------
|
|
10
10
|
|
|
11
|
-
.. _config-backend:
|
|
11
|
+
.. _config-backend-permissions:
|
|
12
12
|
|
|
13
13
|
CARTA backend permissions
|
|
14
14
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
@@ -68,10 +68,10 @@ By default, the controller attempts to write log files to the ``/var/log/carta``
|
|
|
68
68
|
|
|
69
69
|
.. _config-controller:
|
|
70
70
|
|
|
71
|
-
Controller
|
|
71
|
+
Controller configuration
|
|
72
72
|
------------------------
|
|
73
73
|
|
|
74
|
-
Controller configuration is handled by a configuration file in JSONC (JSON with JavaScript style comments) format, adhering to the :ref:`CARTA configuration schema<schema>`. An `example configuration file <_static/config/example_config.json>`_ is provided:
|
|
74
|
+
Controller configuration is handled by a configuration file in JSONC (JSON with JavaScript style comments) format, adhering to the :ref:`CARTA controller configuration schema<schema>`. An `example controller configuration file <_static/config/example_config.json>`_ is provided:
|
|
75
75
|
|
|
76
76
|
.. literalinclude:: _static/config/example_config.json
|
|
77
77
|
:language: json
|
|
@@ -79,7 +79,11 @@ Controller configuration is handled by a configuration file in JSONC (JSON with
|
|
|
79
79
|
|
|
80
80
|
By default, the controller assumes the config file is located at ``/etc/carta/config.json``, but you can change this with the ``--config`` or ``-c`` command line argument when running the controller.
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
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.
|
|
83
|
+
|
|
84
|
+
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.
|
|
85
|
+
|
|
86
|
+
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.
|
|
83
87
|
|
|
84
88
|
If you use an external :ref:`authentication<authentication>` system, you may need to translate a unique ID (such as email or username) from the authenticated external user information to an internal system user. You can do this by providing a `user lookup table <_static/config/usertable.txt.stub>`_, which is watched by the controller and reloaded whenever it is updated:
|
|
85
89
|
|
|
@@ -87,3 +91,53 @@ If you use an external :ref:`authentication<authentication>` system, you may nee
|
|
|
87
91
|
:language: cfg
|
|
88
92
|
|
|
89
93
|
You can alter the controller's dashboard appearance by adjusting the ``dashboard`` field in the config file. You can change the banner image and background, and add login instructions or institutional notices.
|
|
94
|
+
|
|
95
|
+
The ``httpOnly`` flag can be used to disable secure signing of authentication tokens. This should only be used during initial deployment and testing, or debugging.
|
|
96
|
+
|
|
97
|
+
.. _config-backend:
|
|
98
|
+
|
|
99
|
+
Backend configuration
|
|
100
|
+
---------------------
|
|
101
|
+
|
|
102
|
+
The global configuration file for the CARTA backend is located at ``/etc/carta/backend.json``. A per-user configuration file can also be placed in each user's local CARTA preferences directory (typically ``.carta`` or ``.carta-beta`` in the user's home directory, depending on how the CARTA backend was installed). On a multi-user system, if users have write access to this location, you may wish to disable the use of per-user configuration files, to prevent users from bypassing the root directory configuration set by the controller. This must be done through the ``additionalArgs`` field in the :ref:`controller configuration<config-controller>`.
|
|
103
|
+
|
|
104
|
+
The backend configuration file must adhere to the :ref:`CARTA backend configuration schema<schema_backend>`. An `example backend configuration file <_static/config/example_backend.json>`_ is provided:
|
|
105
|
+
|
|
106
|
+
.. literalinclude:: _static/config/example_backend.json
|
|
107
|
+
:language: json
|
|
108
|
+
:name: example_backend
|
|
109
|
+
|
|
110
|
+
.. _test-config:
|
|
111
|
+
|
|
112
|
+
Testing the configuration
|
|
113
|
+
-------------------------
|
|
114
|
+
|
|
115
|
+
To test the configuration of the controller, you can use the built-in test feature. Run ``carta-controller --verbose --test <username>`` as the ``carta`` user (or whichever user has the :ref:`added sudoers permissions<config-backend-permissions>`). ``<username>`` should be a user in the ``carta-users`` group. The expected output looks like this:
|
|
116
|
+
|
|
117
|
+
.. code-block::
|
|
118
|
+
|
|
119
|
+
Checking config file /etc/carta/config.json
|
|
120
|
+
Adding additional config file config.d/pam.json
|
|
121
|
+
No top-level folder was specified. Reverting to default location
|
|
122
|
+
Testing configuration with user alice
|
|
123
|
+
Password for user alice:
|
|
124
|
+
✔ Checked PAM connection for user alice
|
|
125
|
+
✔ Verified uid (1000) for user alice
|
|
126
|
+
✔ Generated access token for user alice
|
|
127
|
+
✔ Checked database connection
|
|
128
|
+
✔ Checked log writing for user alice
|
|
129
|
+
✔ Read frontend index.html from /custom/frontend/path/build
|
|
130
|
+
[
|
|
131
|
+
'running sudo --preserve-env=CARTA_AUTH_TOKEN -n -u alice /usr/bin/carta_backend --no_http --debug_no_auth --port 3499 --top_level_folder /usr/share/carta --no_log /usr/share/carta'
|
|
132
|
+
]
|
|
133
|
+
[2021-11-30 12:28:48.207] [info] /usr/bin/carta_backend: Version 3.0.0-beta.2
|
|
134
|
+
[2021-11-30 12:28:48.209] [info] Listening on port 3499 with top level folder /usr/share/carta, starting folder /usr/share/carta. The number of OpenMP worker threads will be handled automatically.
|
|
135
|
+
✔ Backend process started successfully
|
|
136
|
+
[2021-11-30 12:28:50.169] [info] Session 1 [127.0.0.1] Connected. Num sessions: 1
|
|
137
|
+
✔ Backend process accepted connection
|
|
138
|
+
[ 'running sudo -u alice ./scripts/carta_kill_script.sh 54275' ]
|
|
139
|
+
✔ Backend process killed correctly
|
|
140
|
+
Controller tests with user alice succeeded
|
|
141
|
+
|
|
142
|
+
.. note::
|
|
143
|
+
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``.
|
package/docs/src/index.rst
CHANGED
|
@@ -10,7 +10,8 @@ CARTA Controller
|
|
|
10
10
|
|
|
11
11
|
CARTA is the Cube Analysis and Rendering Tool for Astronomy. This document describes the installation and configuration process for the controller component.
|
|
12
12
|
|
|
13
|
-
Detailed
|
|
13
|
+
Detailed step-by-step instructions are provided for :ref:`Ubuntu 20.04 (Focal Fossa)<focal_instructions>` and :ref:`CentOS 8<centos8_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.
|
|
14
15
|
|
|
15
16
|
.. toctree::
|
|
16
17
|
:maxdepth: 2
|
|
@@ -20,13 +21,15 @@ Detailed :ref:`step-by-step instructions<focal_instructions>` are provided for U
|
|
|
20
21
|
installation
|
|
21
22
|
configuration
|
|
22
23
|
ubuntu_focal_instructions
|
|
24
|
+
centos8_instructions
|
|
23
25
|
schema
|
|
26
|
+
schema_backend
|
|
24
27
|
|
|
25
|
-
.. |backend-github| image:: https://img.shields.io/badge/CARTA%20Version-3.0.0--beta.
|
|
28
|
+
.. |backend-github| image:: https://img.shields.io/badge/CARTA%20Version-3.0.0--beta.2-brightgreen
|
|
26
29
|
:alt: View this backend version on GitHub
|
|
27
|
-
:target: https://github.com/CARTAvis/carta-backend/releases/tag/v3.0.0-beta.
|
|
30
|
+
:target: https://github.com/CARTAvis/carta-backend/releases/tag/v3.0.0-beta.2
|
|
28
31
|
|
|
29
|
-
.. |npm-package| image:: https://img.shields.io/npm/v/carta-controller/
|
|
32
|
+
.. |npm-package| image:: https://img.shields.io/npm/v/carta-controller/beta.svg?style=flat
|
|
30
33
|
:alt: View this project on npm
|
|
31
34
|
:target: https://npmjs.org/package/carta-controller
|
|
32
35
|
|
|
@@ -8,7 +8,7 @@ Installation
|
|
|
8
8
|
Installing the backend
|
|
9
9
|
----------------------
|
|
10
10
|
|
|
11
|
-
We provide `binary Debian packages <https://launchpad.net/~cartavis-team/+archive/ubuntu/carta>`_ of the latest
|
|
11
|
+
We provide `binary Debian packages <https://launchpad.net/~cartavis-team/+archive/ubuntu/carta>`_ of the latest beta and release versions of the CARTA backend for Ubuntu 20.04 (Focal Fossa) and Ubuntu 18.04 (Bionic Beaver). You can install the beta version with all dependencies by adding our PPA to your system and running ``apt-get install carta-backend-beta``. Please refer to our :ref:`Ubuntu Focal instructions<focal_instructions>` for more details.
|
|
12
12
|
|
|
13
13
|
.. note::
|
|
14
14
|
|
|
@@ -28,7 +28,7 @@ If you install the controller from NPM, the corresponding packaged version of th
|
|
|
28
28
|
Installing the controller
|
|
29
29
|
-------------------------
|
|
30
30
|
|
|
31
|
-
You can install the
|
|
31
|
+
You can install the beta version of the CARTA controller from NPM by running ``npm install -g carta-controller@beta``, or from GitHub by cloning the `controller repository <https://github.com/CARTAvis/carta-controller/>`_ and running ``npm install``.
|
|
32
32
|
|
|
33
33
|
.. _run_controller:
|
|
34
34
|
|
|
@@ -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.
|
|
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.2`` 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
|
|
|
@@ -19,7 +19,7 @@ Install the CARTA backend and other required packages
|
|
|
19
19
|
sudo add-apt-repository ppa:cartavis-team/carta
|
|
20
20
|
sudo apt-get update
|
|
21
21
|
|
|
22
|
-
# Install the
|
|
22
|
+
# Install the beta backend package with all dependencies
|
|
23
23
|
sudo apt-get install carta-backend-beta
|
|
24
24
|
|
|
25
25
|
# Install additional packages
|
|
@@ -74,7 +74,7 @@ Install CARTA controller
|
|
|
74
74
|
sudo apt-get install -y nodejs build-essential
|
|
75
75
|
|
|
76
76
|
# Install carta-controller (includes frontend config)
|
|
77
|
-
sudo npm install -g --unsafe-perm carta-controller@
|
|
77
|
+
sudo npm install -g --unsafe-perm carta-controller@beta
|
|
78
78
|
|
|
79
79
|
# Install PM2 node service
|
|
80
80
|
sudo npm install -g pm2
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "carta-controller",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.2",
|
|
4
4
|
"description": "NodeJS-based controller for CARTA",
|
|
5
5
|
"repository": "https://github.com/CARTAvis/carta-controller",
|
|
6
6
|
"homepage": "https://www.cartavis.org",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"ajv": "^8.2.0",
|
|
24
24
|
"ajv-formats": "^2.1.0",
|
|
25
25
|
"body-parser": "^1.19.0",
|
|
26
|
-
"carta-frontend": "^3.0.0-beta.
|
|
26
|
+
"carta-frontend": "^3.0.0-beta.2b",
|
|
27
27
|
"chalk": "^4.1.1",
|
|
28
28
|
"compression": "^1.7.4",
|
|
29
29
|
"cookie-parser": "^1.4.5",
|
package/views/templated.pug
CHANGED