--- 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/arvados/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 @config.yml@ and set @Services.Websocket.ExternalURL@ and @Services.Websocket.InternalURLs@. Replace @zzzzz@ with your cluster id. <notextile> <pre><code> Services: Websocket: InternalURLs: "http://localhost:8005"</span>: {} ExternalURL: <span class="userinput">wss://ws.ClusterID.example.com/websocket</span> </span></code></pre> </notextile> 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 in <span class="userinput">red</span>. <notextile><pre> upstream arvados-ws { server 127.0.0.1:<span class="userinput">8005</span>; } server { listen 443 ssl; server_name ws.<span class="userinput">ClusterID.example.com</span>; proxy_connect_timeout 90s; proxy_read_timeout 300s; ssl on; ssl_certificate <span class="userinput">/YOUR/PATH/TO/cert.pem</span>; ssl_certificate_key <span class="userinput">/YOUR/PATH/TO/cert.key</span>; 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; } } </pre></notextile> {% assign arvados_component = 'arvados-ws' %} {% include 'install_packages' %} {% include 'start_service' %} {% include 'restart_api' %} h2(#confirm). Confirm working installation Confirm the service is listening on its assigned port and responding to requests. <notextile> <pre><code>~$ <span class="userinput">curl https://<span class="userinput">ws.ClusterID.example.com</span>/websocket</span> not websocket protocol </code></pre> </notextile>