--- layout: default navsection: installguide title: Install the websocket server ... {% comment %} Copyright (C) The Arvados Authors. All rights reserved. SPDX-License-Identifier: CC-BY-SA-3.0 {% endcomment %} The arvados-ws server provides event notifications to websocket clients. It can be installed anywhere with access to Postgres database and the Arvados API server, typically behind a web proxy that provides SSL support. See the "godoc page":http://godoc.org/github.com/curoverse/arvados/services/ws for additional information. # "Update config.yml":#update-config # "Update nginx configuration":#update-nginx # "Install arvados-ws package":#install-packages # "Start the service":#start-service # "Restart the API server and controller":#restart-api # "Confirm working installation":#confirm-working h2(#configure). Update config.yml Edit the cluster config at @/etc/arvados/config.yml@ and set @Services.Websocket.ExternalURL@ and @Services.Websocket.InternalURLs@. Replace @zzzzz@ with your cluster id.
    Services:
      Websocket:
        InternalURLs:
	  "http://ws.ClusterID.example.com:8005": {}      
        ExternalURL: wss://ws.ClusterID.example.com/websocket
h2(#update-nginx). Update Nginx configuration The arvados-ws service will be accessible from anywhere on the internet, so we recommend using SSL for transport encryption. Use a text editor to create a new file @/etc/nginx/conf.d/arvados-ws.conf@ with the following configuration. Options that need attention are marked with "TODO".
upstream arvados-ws {
  server                127.0.0.1:8005;
}

server {
  listen                [your public IP address]:443 ssl;
  server_name           ws.uuid_prefix.your.domain;

  proxy_connect_timeout 90s;
  proxy_read_timeout    300s;

  ssl                   on;
  ssl_certificate       YOUR/PATH/TO/cert.pem;
  ssl_certificate_key   YOUR/PATH/TO/cert.key;

  location / {
    proxy_pass          http://arvados-ws;
    proxy_set_header    Upgrade         $http_upgrade;
    proxy_set_header    Connection      "upgrade";
    proxy_set_header    Host            $host;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
h2(#install-packages). Install arvados-ws h3. Centos 7
# yum install arvados-ws
h3. Debian and Ubuntu
# apt-get --no-install-recommends install arvados-ws
h3. Start the service If your system does not use systemd, skip this section and follow the "runit instructions":#runit instead. If your system uses systemd, the arvados-ws service should already be set up. Start it and check its status:
~$ sudo systemctl restart arvados-ws
~$ sudo systemctl status arvados-ws
● arvados-ws.service - Arvados websocket server
   Loaded: loaded (/lib/systemd/system/arvados-ws.service; enabled)
   Active: active (running) since Tue 2016-12-06 11:20:48 EST; 10s ago
     Docs: https://doc.arvados.org/
 Main PID: 9421 (arvados-ws)
   CGroup: /system.slice/arvados-ws.service
           └─9421 /usr/bin/arvados-ws

Dec 06 11:20:48 zzzzz arvados-ws[9421]: {"level":"info","msg":"started","time":"2016-12-06T11:20:48.207617188-05:00"}
Dec 06 11:20:48 zzzzz arvados-ws[9421]: {"Listen":":9003","level":"info","msg":"listening","time":"2016-12-06T11:20:48.244956506-05:00"}
Dec 06 11:20:48 zzzzz systemd[1]: Started Arvados websocket server.
If it is not running, use @journalctl@ to check logs for errors:
~$ sudo journalctl -n10 -u arvados-ws
...
Dec 06 11:12:48 zzzzz systemd[1]: Starting Arvados websocket server...
Dec 06 11:12:48 zzzzz arvados-ws[8918]: {"level":"info","msg":"started","time":"2016-12-06T11:12:48.030496636-05:00"}
Dec 06 11:12:48 zzzzz arvados-ws[8918]: {"error":"pq: password authentication failed for user \"arvados\"","level":"fatal","msg":"db.Ping failed","time":"2016-12-06T11:12:48.058206400-05:00"}
h2(#restart-api). Restart the API server and controller After adding the SSO server to the Services section, make sure the cluster config file is up to date on the API server host, and restart the API server and controller processes to ensure the changes are applied.
# systemctl restart nginx arvados-controller
h3(#confirm). Confirm working installation Confirm the service is listening on its assigned port and responding to requests.
~$ curl http://0.0.0.0:8005/status.json
{"Clients":1}