Shiny proxy para autenticar usuarios y más

shiny
webapps
Autor/a

Elio Lagunes-Díaz

Fecha de publicación

19 de enero de 2023

Tienes una aplicación de shiny; la aplicación la metes en un contenedor docker; estos contenedores docker son servidos todos juntos por shinyproxy, como si leyera la salida de:

sudo docker images

REPOSITORY                          TAG       IMAGE ID       CREATED         SIZE
openanalytics/shinyproxy-template   latest    6a50d43f792c   3 hours ago     1.37GB
openanalytics/shinyproxy-demo       latest    a4ad82a764ab   8 months ago    1.35GB

ventajas

  • Autenticación que es por lo que decidí probarlo, con administración de grupos siguiendo el protocolo LDAP Lightweight directory access protocol.
  • Usa java 8 el cual es el mismo que usa geoserver.
  • No necesita shiny-server, no es una gran ventaja pero por esto no requiere tantos permisos (recuerden el episodio del chown )
  • Algo importante, asegura fácilmente el tráfico hacia shiny (over TLS) y no tiene límites de uso concurrente.

imagen del shinyproxy andando, con una aplicación de ejemplo

La instalación es relativamente sencilla, solo se descarga el archivo jar; requiere de docker, el cual se instala según https://docs.docker.com/engine/installation/#server

Vienen unos ejemplos en el github,

Y la parte problemática (no tanto en realidad), es la configuración de docker para que escuche en el puerto 2375 con

sudo systemctl edit docker

esto nos abre la configuración de docker

cuidado con donde se especifica el puerto 2375

Yo lo puse varias veces hasta abajo del archivo y no se guardaba ese cambio… hasta que leí la parte que dice lines below this comment will be discarded

### Editing /etc/systemd/system/docker.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H unix:// -D -H tcp://127.0.0.1:2375

### Lines below this comment will be discarded

Guardamos y reiniciamos docker

sudo systemctl restart docker

troubleshooting

hay que limpiar (kill) los procesos que puedan estar ocupando el puerto que usa shinyproxy (8080 por default) sudo fuser -k 8080/tcp

hay que indicarle authentication: simple para que funcione con el usuario jack + password