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.
@@ -0,0 +1,576 @@
1
+ .. _step_by_step:
2
+
3
+ Step-by-step instructions for a complete deployment
4
+ ===================================================
5
+
6
+ .. _sbs_overview:
7
+
8
+ Overview
9
+ --------
10
+
11
+ .. note::
12
+
13
+ These instructions aim to be a complete guide for installing CARTA for multiple users on a dedicated server, with authentication of local users via PAM, and other simple suggested defaults. If you are integrating CARTA into an existing system, you may need to adjust some of these steps. Please refer to the more detailed :ref:`installation` and :ref:`configuration` instructions for more options.
14
+
15
+ .. tabs::
16
+
17
+ .. tab:: Ubuntu
18
+
19
+ .. note::
20
+
21
+ CARTA version 4.x is supported on Ubuntu 20.04 (Focal Fossa) and 22.04 (Jammy Jellyfish). CARTA version 5.x is supported on Ubuntu 22.04 (Jammy Jellyfish) and 24.04 (Noble Numbat).
22
+
23
+ The Ubuntu instructions can be used almost unchanged on Ubuntu 20.04 (Focal Fossa). We note differences where they occur. They should also work on equivalent Ubuntu-based distributions, and may work with some adjustments on other Debian-based distributions and non-LTS Ubuntu releases.
24
+
25
+ .. tab:: AlmaLinux
26
+
27
+ .. note::
28
+
29
+ CARTA versions 4.x and 5.x are both supported on AlmaLinux 8 and 9. The AlmaLinux instructions should also work on other equivalent RPM-based distributions.
30
+
31
+ We also support legacy installations of CARTA 4.x on RHEL 7 and CentOS 7, but as both of these releases have reached end of life and are widely unsupported, we do not recommend using them for new installations. Adapting these instructions to these releases requires multiple workarounds, which are outside the scope of this document.
32
+
33
+ .. _sbs_prerequisites:
34
+
35
+ Prerequisites
36
+ ~~~~~~~~~~~~~
37
+
38
+ These instructions assume that you are logged in as an ordinary user with passwordless ``sudo`` access. Ubuntu server images have a default ``ubuntu`` user configured with these privileges. On AlmaLinux this user is called ``almalinux``.
39
+
40
+ We assume that your shell is ``bash``. ``curl`` and ``vim`` must be installed.
41
+
42
+ .. tabs::
43
+
44
+ .. tab:: Ubuntu
45
+
46
+ .. code-block:: shell
47
+
48
+ sudo apt-get install vim curl
49
+
50
+ .. tab:: AlmaLinux
51
+
52
+ .. code-block:: shell
53
+
54
+ sudo dnf install vim curl
55
+
56
+ We include instructions for configuring SSL in your webserver. This requires either a domain name and certificates provided by your organisation, or a domain from a provider compatible with Let's Encrypt (or your preferred certificate authority). Domain name setup is outside the scope of this document.
57
+
58
+ .. _sbs_dependencies:
59
+
60
+ Install dependencies
61
+ --------------------
62
+
63
+ .. _sbs_mongo:
64
+
65
+ Install MongoDB
66
+ ~~~~~~~~~~~~~~~
67
+
68
+ .. tabs::
69
+
70
+ .. tab:: Ubuntu
71
+
72
+ We recommend installing the `Community Edition Debian package of MongoDB <https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/>`_ on all supported Ubuntu versions.
73
+
74
+ .. note::
75
+
76
+ There is a ``mongodb`` package available from the official Ubuntu repositories on Ubuntu 20.04 (Focal Fossa). However, this package is older than the Community Edition package, and it has been discontinued in later LTS releases.
77
+
78
+ .. code-block:: shell
79
+
80
+ # Import public key for MongoDB repo
81
+ curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor
82
+
83
+ # Add MongoDB repository
84
+ echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
85
+
86
+ sudo apt-get update
87
+
88
+ # Install MongoDB
89
+ sudo apt-get install mongodb-org
90
+
91
+ # Start MongoDB
92
+ sudo systemctl start mongod
93
+
94
+ # Make MongoDB start automatically on system restart
95
+ sudo systemctl enable mongod
96
+
97
+ .. tab:: AlmaLinux
98
+
99
+ We recommend installing the `Community Edition RPM package of MongoDB <https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-red-hat/>`_ on all supported RPM-based distributions. These are instructions for installing version 8.0, which is available on AlmaLinux 8 and 9.
100
+
101
+ .. code-block:: shell
102
+
103
+ # Add MongoDB repository
104
+ sudo bash -c 'cat > /etc/yum.repos.d/mongodb-org.repo' << 'EOF'
105
+ [mongodb-org-8.0]
106
+ name=MongoDB Repository
107
+ baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/8.0/$basearch/
108
+ gpgcheck=1
109
+ enabled=1
110
+ gpgkey=https://www.mongodb.org/static/pgp/server-8.0.asc
111
+ EOF
112
+
113
+ sudo dnf update
114
+
115
+ # Install MongoDB:
116
+ sudo dnf install mongodb-org
117
+
118
+ # Start MongoDB
119
+ sudo systemctl start mongod
120
+
121
+ # Make MongoDB start automatically on system restart
122
+ sudo systemctl enable mongod
123
+
124
+ Please refer to the `detailed MongoDB installation instructions <https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/>`_ for more information.
125
+
126
+ .. _sbs_packages:
127
+
128
+ Install CARTA backend and other required packages
129
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
130
+
131
+ .. tabs::
132
+
133
+ .. tab:: Ubuntu
134
+
135
+ Ubuntu packages for CARTA components are available from our `Launchpad PPA <https://launchpad.net/~cartavis-team/+archive/ubuntu/carta>`_.
136
+
137
+ .. code-block:: shell
138
+
139
+ # Add CARTA PPA
140
+ sudo add-apt-repository ppa:cartavis-team/carta
141
+ sudo apt-get update
142
+
143
+ # Install the backend package with all dependencies
144
+ sudo apt-get install carta-backend
145
+
146
+ # Install additional packages
147
+ sudo apt-get install g++ make build-essential libpam0g-dev
148
+
149
+ .. note::
150
+
151
+ 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:
152
+
153
+ .. code-block:: shell
154
+
155
+ sudo apt-get install carta-backend-beta
156
+
157
+ These packages cannot be installed simultaneously, as they use the same install locations. If you install one, you will automatically be prompted to uninstall the other.
158
+
159
+ Make sure that you install the matching controller version (using the ``beta`` tag).
160
+
161
+ .. note::
162
+
163
+ Please note that Ubuntu packages for CARTA 4.x are only available for Focal and Jammy, and packages for CARTA 5.x are only available for Jammy and Noble.
164
+
165
+ .. tab:: AlmaLinux
166
+
167
+ RPM packages of the CARTA backend are available from our `Copr repository <https://copr.fedorainfracloud.org/coprs/cartavis/carta/>`_.
168
+
169
+ .. code-block:: shell
170
+
171
+ # Install EPEL repository
172
+ sudo dnf install epel-release
173
+
174
+ # Install the CARTA backend
175
+ sudo dnf install 'dnf-command(copr)'
176
+ sudo dnf copr enable cartavis/carta
177
+ sudo dnf install carta-backend
178
+
179
+ # Install additional packages
180
+
181
+ sudo dnf install python3 make gcc-c++ pam-devel
182
+
183
+ .. note::
184
+
185
+ A minimum Python version of 3.8 is required to build the controller. On AlmaLinux 8, install the ``python38`` or ``python39`` package instead. If multiple versions are installed, you must reconfigure the default.
186
+
187
+ .. code-block:: shell
188
+
189
+ sudo dnf install python38
190
+ sudo update-alternatives --config python3
191
+
192
+ Follow the prompts, and check that the default version is correct: ``python3 --version``.
193
+
194
+ .. note::
195
+
196
+ 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 ``carta-backend-beta`` instead:
197
+
198
+ .. code-block:: shell
199
+
200
+ sudo dnf install carta-backend-beta
201
+
202
+ We currently install the beta version of the backend package in a non-standard location, ``/opt/carta-beta``. This makes it possible to install the stable and beta packages simultaneously. When you use this package, remember to change the path to the backend executable to ``/opt/carta-beta/bin/carta_backend`` in both the sudoers file and the controller configuration.
203
+
204
+ Make sure that you install the matching controller version (using the ``beta`` tag).
205
+
206
+ .. _sbs_node:
207
+
208
+ Install Node.js
209
+ ~~~~~~~~~~~~~~~
210
+
211
+ We recommend installing the `latest LTS version <https://github.com/nodejs/release#release-schedule>`_ of Node.js (currently v22) from the `NodeSource repository <https://github.com/nodesource/distributions>`_. The minimum version required for CARTA 5.x is v20. The oldest version known to work with CARTA 4.x is v16.
212
+
213
+ .. tabs::
214
+
215
+ .. tab:: Ubuntu
216
+
217
+ .. code-block:: shell
218
+
219
+ # Install the latest Node.js LTS repo
220
+ curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
221
+
222
+ # Install Node.js (includes NPM)
223
+ sudo apt-get install nodejs
224
+
225
+ .. tab:: AlmaLinux
226
+
227
+ .. code-block:: shell
228
+
229
+ # Install the latest Node.js LTS repo
230
+ curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo -E bash -
231
+
232
+ # Install Node.js (includes NPM)
233
+ sudo dnf install nodejs
234
+
235
+ .. note::
236
+
237
+ Node.js and NPM can also be installed from the AlmaLinux AppStream repository on AlmaLinux 8 and 9. This version of ``npm`` installs executables into ``/usr/local/bin``. If you use it, be sure to update the kill script path in the sudoers file and controller configuration.
238
+
239
+ .. code-block:: shell
240
+
241
+ # Install Node.js and NPM
242
+ sudo dnf module enable nodejs:22
243
+ sudo dnf install nodejs npm
244
+
245
+ .. _sbs_install_controller:
246
+
247
+ Install CARTA controller
248
+ ------------------------
249
+
250
+ .. code-block:: shell
251
+
252
+ # Install carta-controller (includes frontend dependency)
253
+ sudo npm install -g --unsafe-perm carta-controller
254
+
255
+ .. note::
256
+
257
+ If you would like to install the latest **beta** release of CARTA, please install the ``beta`` tag of the controller instead:
258
+
259
+ .. code-block:: shell
260
+
261
+ sudo npm install -g --unsafe-perm carta-controller@beta
262
+
263
+ .. note::
264
+
265
+ Do not pass the ``--unsafe-perm`` flag to ``npm`` if using a custom installation of Node.js in a local directory.
266
+
267
+ .. _sbs_system_config:
268
+
269
+ System configuration
270
+ --------------------
271
+
272
+ .. _sbs_users_dirs:
273
+
274
+ Set up users and directories
275
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
276
+
277
+ All users who should have access to CARTA must belong to a group that identifies them (assumed here to be called ``carta-users``).
278
+
279
+ For security reasons, we do not recommend running the CARTA controller as the root user. Instead, create a dedicated user called ``carta`` for this purpose. The ``carta`` user should *not* be added to the ``carta-users`` group.
280
+
281
+ .. code-block:: shell
282
+
283
+ # Create a group to identify CARTA users
284
+ sudo groupadd carta-users
285
+
286
+ # Create a 'carta' user to run the controller
287
+ sudo useradd --system --create-home --home /var/lib/carta --shell=/bin/bash --user-group carta
288
+
289
+ # Create a log directory owned by carta
290
+ sudo mkdir -p /var/log/carta
291
+ sudo chown carta: /var/log/carta
292
+
293
+ # Create a config directory owned by carta
294
+ sudo mkdir -p /etc/carta
295
+ sudo chown carta: /etc/carta
296
+
297
+ .. _sbs_perms:
298
+
299
+ Set up permissions
300
+ ~~~~~~~~~~~~~~~~~~
301
+
302
+ .. warning::
303
+
304
+ If you are using PAM authentication of local users, the ``carta`` user needs read access to the shadow file. This step is not required if you are configuring a different form of user authentication (e.g. LDAP).
305
+
306
+ .. tabs::
307
+
308
+ .. tab:: Ubuntu
309
+
310
+ On Ubuntu by default the shadow file is group-owned by a shadow group which has read access. You only have to add the ``carta`` user to the group.
311
+
312
+ .. code-block:: shell
313
+
314
+ # Add 'carta' user to the shadow group
315
+ sudo usermod -a --groups shadow carta
316
+
317
+ .. tab:: AlmaLinux
318
+
319
+ On AlmaLinux by default the shadow file is accessible only by root and has minimal permissions. You have to create a new ``shadow`` group for the ``carta`` user and modify the file's permissions to provide access.
320
+
321
+ .. code-block:: shell
322
+
323
+ # Create 'shadow' group
324
+ sudo groupadd --system shadow
325
+
326
+ # Change group ownership and permissions of the shadow file
327
+ sudo chgrp shadow /etc/shadow
328
+ sudo chmod g+r /etc/shadow
329
+
330
+ # It's advisable to reboot before proceeding
331
+ sudo reboot
332
+
333
+ # Add 'carta' user to the shadow group
334
+ sudo usermod -a --groups shadow carta
335
+
336
+ The ``carta`` user must be given permission to execute the CARTA backend and the script to kill the CARTA backend on behalf of CARTA users using ``sudo`` without providing a password.
337
+
338
+ .. code-block:: shell
339
+
340
+ # Edit sudoers file to grant 'carta' user permission to execute
341
+ # the backend and kill script as any user in `carta-users` group
342
+ sudo visudo -f /etc/sudoers.d/carta_controller
343
+
344
+ An :ref:`example sudoers configuration<example_sudoers>` is provided in the configuration section. Make sure that the paths to the two executables in the file match their install locations on your system.
345
+
346
+ .. _sbs_webserver:
347
+
348
+ Configure webserver
349
+ -------------------
350
+
351
+ .. _sbs_nginx:
352
+
353
+ Install and configure Nginx
354
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
355
+
356
+ The CARTA controller requires a webserver. We provide instructions for `Nginx <https://www.nginx.com/>`_.
357
+
358
+ .. tabs::
359
+
360
+ .. tab:: Ubuntu
361
+
362
+ .. code-block:: shell
363
+
364
+ # Install Nginx
365
+ sudo apt-get install nginx
366
+
367
+ .. tab:: AlmaLinux
368
+
369
+ .. code-block:: shell
370
+
371
+ # Install Nginx
372
+ sudo dnf install nginx
373
+
374
+ # Start Nginx
375
+ sudo systemctl start nginx
376
+
377
+ # Make Nginx start automatically
378
+ sudo systemctl enable nginx
379
+
380
+ # Configure SELinux
381
+ sudo setsebool -P httpd_can_network_connect on
382
+
383
+ .. note::
384
+
385
+ If you have also installed a firewall on your server, ensure that it allows both HTTP and HTTPS traffic.
386
+
387
+ .. _sbs_ssl:
388
+
389
+ Configure SSL
390
+ ~~~~~~~~~~~~~
391
+
392
+ For security reasons, we strongly recommend configuring SSL on your server and redirecting all HTTP traffic to HTTPS. We provide instructions for obtaining certificates from `Let's Encrypt <https://letsencrypt.org>`_ using the `Certbot <https://certbot.eff.org/>`_ tool. Certbot will automatically renew your certificates for you. If your organisation can provide you with certificates for your domain, you can skip this step.
393
+
394
+ .. note::
395
+
396
+ Let's Encrypt only issues certificates for publically resolvable domain names, so make sure that you have configured DNS appropriately before this point, and that Nginx is already running and serving its default index page over HTTP at your public domain.
397
+
398
+ .. tabs::
399
+
400
+ .. tab:: Ubuntu
401
+
402
+ .. code-block:: shell
403
+
404
+ # Install certbot
405
+ sudo apt-get install certbot python3-certbot-nginx
406
+
407
+ # Run certbot and follow the prompts to generate the certificates
408
+ # Note the certificate and key locations which are printed out
409
+ sudo certbot certonly --nginx
410
+
411
+ .. note::
412
+
413
+ For simplicity we have provided instructions for installing Certbot from the Ubuntu repositories with ``apt``. However, these packages are far behind the latest version, particularly in older Ubuntu releases. The `official instructions <https://certbot.eff.org/instructions?ws=nginx&os=snap>`_ recommend installation via ``snap``.
414
+
415
+ .. tab:: AlmaLinux
416
+
417
+ .. code-block:: shell
418
+
419
+ # Install certbot
420
+ sudo dnf install certbot python3-certbot-nginx
421
+
422
+ # Run certbot and follow the prompts to generate the certificates
423
+ # Note the certificate and key locations which are printed out
424
+ sudo certbot certonly --nginx
425
+
426
+ .. note::
427
+
428
+ For simplicity we have provided instructions for installing Certbot from the EPEL repositories with ``dnf``. However, these packages are far behind the latest version, particularly in older AlmaLinux releases. The `official instructions <https://certbot.eff.org/instructions?ws=nginx&os=snap>`_ recommend installation via ``snap``.
429
+
430
+ Once you have obtained the certificates, edit the Nginx configuration. A :ref:`sample configuration file<example_nginx>` is provided in the configuration section. Adjust the paths to the certificate and the certificate key, using the paths printed by ``certbot`` in the previous step.
431
+
432
+ .. code-block:: shell
433
+
434
+ # Create an Nginx configuration file for CARTA
435
+ sudo vim /etc/nginx/conf.d/carta.conf
436
+
437
+ # Restart Nginx
438
+ sudo systemctl restart nginx
439
+
440
+ .. _sbs_config_controller:
441
+
442
+ Configure CARTA controller
443
+ --------------------------
444
+
445
+ .. _sbs_config_basic:
446
+
447
+ Basic configuration
448
+ ~~~~~~~~~~~~~~~~~~~
449
+
450
+ These configuration steps should be performed as the ``carta`` user. This user should own all the files in the ``/etc/carta`` directory.
451
+
452
+ The CARTA controller uses SSL keys for authentication.
453
+
454
+ .. code-block:: shell
455
+
456
+ # Switch to carta user
457
+ sudo su - carta
458
+
459
+ # Generate private/public keys
460
+ openssl genrsa -out /etc/carta/carta_private.pem 4096
461
+ openssl rsa -in /etc/carta/carta_private.pem -outform PEM -pubout -out /etc/carta/carta_public.pem
462
+
463
+ Edit ``/etc/carta/config.json`` to customise the appearance of the dashboard and other controller options. We recommend configuring options for the backend in a separate ``/etc/carta/backend.json`` file. We provide sample :ref:`controller<example_config>` and :ref:`backend<example_backend>` configuration files. Please refer to the :ref:`configuration` instructions for more details.
464
+
465
+ .. code-block:: shell
466
+
467
+ # Create a controller configuration file
468
+ vim /etc/carta/config.json
469
+
470
+ # Create a global backend configuration file
471
+ vim /etc/carta/backend.json
472
+
473
+ .. note::
474
+
475
+ If you use ``/etc/carta/backend.json``, please ensure that it is readable by all users in the ``carta-users`` group, *and* that ``/etc/carta/`` is readable and executable by these users.
476
+
477
+ .. _sbs_config_test:
478
+
479
+ Test CARTA controller
480
+ ~~~~~~~~~~~~~~~~~~~~~
481
+
482
+ To test that the controller is configured correctly, use the built-in test feature. You will need at least one user in the ``carta-users`` group.
483
+
484
+ .. code-block:: shell
485
+
486
+ # Switch back to user with sudo access
487
+ exit
488
+
489
+ # Create a test user in the 'carta-users' group
490
+ sudo useradd --create-home --groups carta-users alice
491
+ sudo passwd alice
492
+
493
+ # Switch to 'carta' user
494
+ sudo su - carta
495
+
496
+ # Run the controller test
497
+ carta-controller --verbose --test alice
498
+
499
+ Please refer to the detailed configuration instructions for more information about the :ref:`test feature<test-config>`.
500
+
501
+ .. _sbs_config_start:
502
+
503
+ Start CARTA controller
504
+ ~~~~~~~~~~~~~~~~~~~~~~
505
+
506
+ .. code-block:: shell
507
+
508
+ # Switch back to user with sudo access
509
+ exit
510
+
511
+ # Copy test image to user's home directory
512
+ sudo cp /usr/share/carta/default.fits /home/alice/test.fits
513
+ sudo chown alice: /home/alice/test.fits
514
+
515
+ # Switch to carta user
516
+ sudo su - carta
517
+
518
+ carta-controller
519
+
520
+ You should now be able to navigate to your domain, log into CARTA with your test user's credentials, and open and view the test image.
521
+
522
+ .. note::
523
+
524
+ In the example above, the default test image packaged with the CARTA backend is copied into the test user's home directory -- if you configured a different user directory structure, or installed a custom backend, please adjust these paths.
525
+
526
+ .. warning::
527
+
528
+ A known issue in the CARTA v5 beta release prevents the packaged test image from rendering correctly. Please use a different image to test this version of CARTA. Example FITS images can be downloaded from various astronomical `institutions <https://fits.gsfc.nasa.gov/fits_samples.html>`_ and `software projects <https://www.astropy.org/astropy-data/>`_.
529
+
530
+ .. _sbs_config_autostart:
531
+
532
+ Configure autostart
533
+ ~~~~~~~~~~~~~~~~~~~
534
+
535
+ The PM2 service will start the controller automatically after a reboot.
536
+
537
+ .. code-block:: shell
538
+
539
+ # Switch to user with sudo access
540
+ exit
541
+
542
+ # Install PM2 process manager
543
+ sudo npm install -g pm2
544
+
545
+ # Switch to carta user
546
+ sudo su - carta
547
+
548
+ # Generate startup script
549
+ pm2 startup
550
+
551
+ # Switch back to user with sudo privileges
552
+ exit
553
+
554
+ # Execute the output of the 'pm startup' command
555
+
556
+ # Switch back to the 'carta' user
557
+ sudo su - carta
558
+
559
+ # Start the controller
560
+ pm2 start carta-controller
561
+
562
+ # Save the running process
563
+ pm2 save
564
+
565
+ Please refer to the `PM2 documentation <https://pm2.keymetrics.io/docs/usage/startup/>`_ for more detailed instructions.
566
+
567
+ .. _sbs_config_cleanup:
568
+
569
+ Clean up
570
+ ~~~~~~~~
571
+
572
+ Once you have finished testing the controller, remove the test user.
573
+
574
+ .. code-block:: shell
575
+
576
+ sudo userdel --remove alice
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carta-controller",
3
- "version": "5.0.0-beta.1",
3
+ "version": "5.0.0-beta.1c",
4
4
  "description": "NodeJS-based controller for CARTA",
5
5
  "repository": "https://github.com/CARTAvis/carta-controller",
6
6
  "homepage": "https://www.cartavis.org",
@@ -24,7 +24,7 @@
24
24
  "ajv-formats": "^3.0.1",
25
25
  "axios": "^0.28.0",
26
26
  "body-parser": "^1.19.0",
27
- "carta-frontend": "^5.0.0-beta.1b",
27
+ "carta-frontend": "^5.0.0-beta.1c",
28
28
  "chalk": "^4.1.2",
29
29
  "compression": "^1.8.0",
30
30
  "cookie-parser": "^1.4.7",