How to Install and Configure Superdesk Publisher with Superdesk

This guide describes the functions of Superdesk Publisher and Superdesk, along with the required steps to run both applications concurrently in a production environment on two different servers. (However, both applications can also work on a single machine.)

This guide assumes that you have:

  • A working instance of Superdesk
  • A working instance of Superdesk Publisher

For this guide, we will assume your Superdesk server runs on superdesk.example.com and your Publisher server runs on example.com.

Install the Superdesk Publisher Component in Superdesk

Login to the server where Superdesk is installed.

Superdesk Publisher Component is a JavaScript component that is a separate dependency and can be included in Superdesk to manage your Superdesk Publisher application.

To add this component as a dependency edit /opt/superdesk/client/package.json and include the Superdesk Publisher repository:

1
2
3
4
"dependencies": {
        ....,
        "superdesk-publisher": "superdesk/superdesk-publisher#2.0"
}

You can replace master with whichever branch you require.

Next, run the following command to install the package.json dependencies:

1
npm install

Update Your Superdesk Configuration File

Inside /opt/superdesk/client directory on your server open the superdesk.config.js and integrate the following code with your existing configuration:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
apps: [
        ....,
        'superdesk-publisher'
],
importApps: [
        ....,
        'superdesk-publisher'
]
publisher: {
        protocol: 'http',                /* http or https */
        tenant: '',                      /* tenant - semantically subdomain, '' is allowed */
        domain: 'example.com',           /* domain name for the publisher */
        base: 'api/v2',                  /* api base path */

        wsProtocol: 'wss',                /* ws or wss (websocket); if unspecified or '' defaults to 'wss' */
        wsDomain: 'WebSocketDomain.com',  /* domain name (usually domain as above) */
                                                                          /* e.g.: example.com, abc.example.com */
                                                                          /* tenant, as above, is NOT used for websocket */
        wsPath: '/ws',                    /* path to websocket root dir */
        wsPort: '8080'                    /* if not specified: defaults to 443 for wss, 80 for ws */
},

Finally, rebuild the front-end by running this command:

1
grunt build

Update Your Publisher Configuration File

Login to the server where Publisher is installed.

Edit (or create, if it doesn’t already exist) the file /var/www/publisher/.env.local and add the following:

1
2
SUPERDESK_SERVERS='["superdesk.example.com"]'
CORS_ALLOW_ORIGIN=http://superdesk.example.com

Note

For CORS_ALLOW_ORIGIN, it is important to include the protocol your Superdesk server uses (http or https) and to not have a trailing slash after your domain name (e.g. your value should not be http://superdesk.example.com/).

Clear the Publisher server cache for the change to take effect:

1
php bin/console cache:clear

That’s it! Now, when you log in to Superdesk in the left hamburger menu, you will see the Publisher Settings menu item available:

Superdesk Publisher

Configure Subscriber to Publish Content from Superdesk to Superdesk Publisher

You can read more about this in the official Superdesk Publisher documentation.