Superdesk Installation Script

***EDIT 11/18/2020***

I have sporadically been working on moving my material to this domain. The first code line should be disregarded. If you wish to install with one of these scripts, please use the second code line.

****

I have thrown this page together real quick to get this installer out there. I just want to share what I have done.

You should be able to run it from console by typing the command:

*This first one should be mostly ignored, unless you want to see how I destroyed the original script or compare to the second one, which works better.

curl -s http://bmg.dirigo.us/install | sudo bash

I have an early version available now for Ubuntu 20.04. I will be updating it to remove some of the garbage but it’s been requested. You can run that with:

curl -s https://bmgid.com/public/install20 | sudo bash

Alternatively, you can download the scripts themselves and run them locally. They are simply modified versions of what is used on github.com/superdesk/superdesk. They are as yet incomplete in my opinion and need testing. They are set to use the master branch at present. I have not had the chance to test everything.

Please email comments to bmg@dirigo.us or directly on this post.

Help me keep this site up…

9 thoughts on “Superdesk Installation Script

  1. As a quick note, I have tried the install20 script on 18 with moderate success. I did also notice some errors with the language translations. I think that is due to the upgrade in Node.js but I could be wrong. I will be doing some more testing in the coming days on different versions of Ubuntu as well as different versions of elasticsearch and Node.js.

    I am presently using Node.js 12. I remember reading an issue with something in the 10.x versions. In the end I decided to upgrade from the 7.x version due to issues during install on newer OS versions (more specificially with node-sass on Ubuntu versions 18.04 and up).

    Once again, all feedback and questions are welcome.

    1. Bryan
      I used your script install20 successfully about two weeks ago.
      On the first pass it quit after failing to install MongoDB which I then installed manually. Second pass when to completion with the Oauth errors and many deprecated Node libraries but worked as expected.

      A few days later the login fuction stopped working, I am guessing a service stoped, but which one, I am still to figure out.

      I rebuilt a 20.04LTS server to run the script again. This time thew manual Mongo install work-around is not working.

      I will keep trying. Suggestions welcome

      Geoff

      1. The Oauth errors and deprecated libraries are within the superdesk files themselves. You will get those same errors regardless of installation method.

        Truthfully, I have not had issues with mongo not installing. It’s possible it’s on their end being they are/have release 4.4.

        I have actually had more issues with elasticsearch not starting as it should. I would try restarting that service to see if it help anything.

        As for not being able to log in, if it’s telling you invalid username/password then the database was probably dropped. I have had that happen a couple times myself. Be sure to run mongodump at the very least to backup your database once you have information in there such as users, roles, desk or anything else. You will be able to use mongorestore to bring it back if that is the case. Definitely configure mongodb to use authentication and use a password and configure superdesk to use that. The default install of mongodb leaves the database wide open to anybody everywhere.

  2. Hey, Bryan!

    Wonderful job. Tried their install script in vain for couple of days.
    However, running your install script on new Ubuntu 20.04 on vultr, I’ve run in an elasticsearch error:

    ERROR:superdesk:ConnectionError(: Failed to establish a new connection: [Errno 111] Connection refused) caused by: NewConnectionError(: Failed to establish a new connection: [Errno 111] Connection refused)
    Traceback (most recent call last):
    File “/opt/superdesk/env/lib/python3.8/site-packages/urllib3/connection.py”, line 159, in _new_conn
    conn = connection.create_connection(
    File “/opt/superdesk/env/lib/python3.8/site-packages/urllib3/util/connection.py”, line 84, in create_connection
    raise err
    File “/opt/superdesk/env/lib/python3.8/site-packages/urllib3/util/connection.py”, line 74, in create_connection
    sock.connect(sa)
    ConnectionRefusedError: [Errno 111] Connection refused

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “/opt/superdesk/env/lib/python3.8/site-packages/elasticsearch/connection/http_urllib3.py”, line 228, in perform_request
    response = self.pool.urlopen(
    File “/opt/superdesk/env/lib/python3.8/site-packages/urllib3/connectionpool.py”, line 724, in urlopen
    retries = retries.increment(
    File “/opt/superdesk/env/lib/python3.8/site-packages/urllib3/util/retry.py”, line 379, in increment
    raise six.reraise(type(error), error, _stacktrace)
    File “/opt/superdesk/env/lib/python3.8/site-packages/urllib3/packages/six.py”, line 735, in reraise
    raise value
    File “/opt/superdesk/env/lib/python3.8/site-packages/urllib3/connectionpool.py”, line 670, in urlopen
    httplib_response = self._make_request(
    File “/opt/superdesk/env/lib/python3.8/site-packages/urllib3/connectionpool.py”, line 392, in _make_request
    conn.request(method, url, **httplib_request_kw)
    File “/usr/lib/python3.8/http/client.py”, line 1240, in request
    self._send_request(method, url, body, headers, encode_chunked)
    File “/usr/lib/python3.8/http/client.py”, line 1286, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
    File “/usr/lib/python3.8/http/client.py”, line 1235, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
    File “/usr/lib/python3.8/http/client.py”, line 1006, in _send_output
    self.send(msg)
    File “/usr/lib/python3.8/http/client.py”, line 946, in send
    self.connect()
    File “/opt/superdesk/env/lib/python3.8/site-packages/urllib3/connection.py”, line 187, in connect
    conn = self._new_conn()
    File “/opt/superdesk/env/lib/python3.8/site-packages/urllib3/connection.py”, line 171, in _new_conn
    raise NewConnectionError(
    urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “/opt/superdesk/env/src/superdesk-core/superdesk/__init__.py”, line 56, in __call__
    res = self.run(*args, **kwargs)
    File “/opt/superdesk/env/src/superdesk-core/apps/prepopulate/app_initialize.py”, line 264, in run
    app.data.init_elastic(app)
    File “/opt/superdesk/env/src/superdesk-core/superdesk/datalayer.py”, line 52, in init_elastic
    self.elastic.init_index()
    File “/opt/superdesk/env/lib/python3.8/site-packages/eve_elastic/elastic.py”, line 342, in init_index
    self._init_index(es, index, settings, mappings)
    File “/opt/superdesk/env/lib/python3.8/site-packages/eve_elastic/elastic.py”, line 353, in _init_index
    if not es.indices.exists(index):
    File “/opt/superdesk/env/lib/python3.8/site-packages/elasticsearch/client/utils.py”, line 92, in _wrapped
    return func(*args, params=params, headers=headers, **kwargs)
    File “/opt/superdesk/env/lib/python3.8/site-packages/elasticsearch/client/indices.py”, line 303, in exists
    return self.transport.perform_request(
    File “/opt/superdesk/env/lib/python3.8/site-packages/elasticsearch/transport.py”, line 355, in perform_request
    status, headers_response, data = connection.perform_request(
    File “/opt/superdesk/env/lib/python3.8/site-packages/elasticsearch/connection/http_urllib3.py”, line 241, in perform_request
    raise ConnectionError(“N/A”, str(e), e)
    elasticsearch.exceptions.ConnectionError: ConnectionError(: Failed to establish a new connection: [Errno 111] Connection refused) caused by: NewConnectionError(: Failed to establish a new connection: [Errno 111] Connection refused)

    1. I too, have had issues with elasticsearch not connecting. I am working on a revision of the script at present. I noticed that the service occasionally does not start correctly, usually something with the config. I have also had times when a simple restart of services is sufficient. I will see what I can do on my end. Please, keep me posted.

  3. OK. New install of Ubuntu 20.04, updated.

    First glitch:

    + systemctl disable rsyslog
    Synchronizing state of rsyslog.service with SysV service script with /lib/systemd/systemd-sysv-install.
    Executing: /lib/systemd/systemd-sysv-install disable rsyslog
    Removed /etc/systemd/system/syslog.service.
    Removed /etc/systemd/system/multi-user.target.wants/rsyslog.service.
    + systemctl stop rsyslog
    + cat
    + logrotate /etc/logrotate.conf
    Failed to kill unit rsyslog.service: Unit rsyslog.service not loaded.
    error: error running non-shared postrotate script for /var/log/syslog of ‘/var/log/syslog

    After I’ve restarted the service manually, the install runs smoothly.

    Although, in the server part of the install I’ve got this:
    ERROR: requests-oauthlib 1.3.0 has requirement oauthlib>=3.0.0, but you’ll have oauthlib 2.1.0 which is incompatible.
    ERROR: wooper 0.4.2 has requirement requests==2.3.0, but you’ll have requests 2.23.0 which is incompatible.

  4. Bryan
    After a rebuild of 20.04 LTS, apt update and apt upgrade your install20 script ran uninterrupted with success.
    FYI the service provider for the server was Linode. To allow emails to users you need to request support for the ouitbound email port be enabled.
    Thanks
    Geoff

  5. Hi!

    I had lots of problems installing Superdesk on Ubuntu 18.04. After a lot of tries, this were the steps that I took in orden tu have a successful installation:

    – Ubuntu 18.04 fresh install.
    – sudo apt update
    – sudo apt upgrade
    – sudo shutdown -r now
    – Had problemas with elasticsearch, so I followed this guide: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-elasticsearch-on-ubuntu-18-04-es
    – I had problemas with your first script, so I used the second one:
    curl -s http://bmg.dirigo.us/install20 | sudo bash

    Hope this helps somebody.

Leave a Reply

Your email address will not be published. Required fields are marked *