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 for additional information.
Edit the cluster config at config.yml and set Services.Websocket.ExternalURL and Services.Websocket.InternalURLs.  Replace zzzzz with your cluster id.
    Services:
      Websocket:
        InternalURLs:
	  "http://localhost:8005": {}
        ExternalURL: wss://ws.ClusterID.example.com/websocket
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 in red.
upstream arvados-ws {
  server                127.0.0.1:8005;
}
server {
  listen                443 ssl;
  server_name           ws.ClusterID.example.com;
  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;
  }
}
# dnf install arvados-ws
# apt install arvados-ws
# systemctl enable --now arvados-ws
# systemctl status arvados-ws
[...]
If systemctl status indicates it is not running, use journalctl to check logs for errors:
# journalctl --since -5min -u arvados-ws
Make sure the cluster config file is up to date on the API server host then restart the API server and controller processes to ensure the configuration changes are visible to the whole cluster.
# systemctl restart nginx arvados-controller
# arvados-server check
We recommend using the Cluster diagnostics tool.
Here are some other checks you can perform manually.
Confirm the service is listening on its assigned port and responding to requests.
~$ curl https://ws.ClusterID.example.com/websocket
not websocket protocol
          
  
            
      
      
      
    
  
  
            
      
      
      
            
      
      
      
    
  
  
            
      
      
      
            
      
      
      
    
  
  
            
      
      
      
            
      
      
      
            
      
      
      
    
  
  
            
      
      
      
            
      
      
      
    
  
  
            
      
      
      
            
      
      
      
    
  
  
            
      
      
      
            
      
      
      
            
      
      
      
            
      
      
      
            
      
      
      
            
      
      
      
            
      
      
      
    
  
  
            
      
      
      
            
      
      
      
            
      
      
        
The content of this documentation is licensed under the
Creative
  Commons Attribution-Share Alike 3.0 United States licence.
Code samples in this documentation are licensed under the
Apache License, Version 2.0.