¡Hola a todos!
¿Alguien tiene sugerencias / consejos sobre la plataforma de la aplicación Digitalocean? (https://www.digitalocean.com/products/app-platform/).
Por lo que tengo entendido, esto se ejecuta con Kubernetes en segundo plano. Por lo tanto, me preguntaba si puedo usar shinyproxy
allí y, de ser así, cuál sería la configuración más adecuada.
¡Gracias por adelantado!
Felipe
Hola
No creo que tengamos ninguna experiencia con esta plataforma. Pero, creo que si la API de Kubernetes está disponible para las aplicaciones que la ejecutan, debería ser posible usar ShinyProxy en ella.
¿Pudiste probar esto mientras tanto? Por supuesto, tenemos mucha curiosidad por saber si tuvo éxito con el uso de ShinyProxy en esta plataforma.
Terminé moviendo todo a AWS, pero tengo otro proyecto de prueba que voy a probar. Publicaré las actualizaciones aquí. ¡Gracias por la respuesta!
@fmmattioni puede usar su Dockerfile y seguir esta plantilla: https://github.com/digitalocean/sample-dockerfile es bastante sencillo.
Sí, me preguntaba más cuál de estas configuraciones sería más apropiada:
Hola @fmmattioni
Si es posible, siempre recomendaría utilizar nuestra imagen oficial de Docker . Esta imagen tiene algunas mejoras de seguridad (es decir, ejecutar ShinyProxy con un usuario que no es root).
¡Hmm, buen punto! ¡Yo no lo sabía! ¡Gracias por el aviso!
Solo una pregunta: he estado usando una versión anterior de shinyproxy, porque la última versión no funciona con la autenticación de AWS Cognito. ¿Puedo simplemente tomar esta versión anterior a través de la etiqueta allí también, o estas mejoras de seguridad solo existen en la última versión?
Hola @fmmattioni
Las mejoras de seguridad se incluyen en cualquier versión.
Mencionó que la última versión de ShinyProxy no funciona con AWS Cognito. No tenemos conocimiento de ningún problema con OIDC en la última versión (2.4.3). ¿Podrías abrir una nueva edición con más detalles sobre esto? (por ejemplo, qué comportamiento experimenta, errores registrados, etc.). Realmente queremos que ShinyProxy funcione sin problemas con cualquier proveedor de autenticación, por lo que si hay un error, realmente queremos resolverlo.
Solo para asegurarme de obtenerlo, esto es lo que debería tener en mi Dockerfile, ¿correcto?
FROM openanalytics/shinyproxy:latest
COPY application.yml /opt/shinyproxy/application.yml
WORKDIR /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]
En cuanto al problema con AWS Cognito, recuerdo que la última vez que lo configuré, los registros mencionaron que la opción server.useForwardHeaders
todavía no funcionaba en la última versión. Sin embargo, no recuerdo si esto fue 2.4.3 . Déjame hacer una prueba rápida y te lo haré saber.
¡Gracias por las respuestas!
Sí, ese es un archivo Docker adecuado para usar con ShinyProxy, aunque incluso puede acortarlo:
FROM openanalytics/shinyproxy:latest
COPY application.yml /etc/shinyproxy/application.yml
Si no especifica las directivas WORKDIR
o CMD
, Docker las tomará de la imagen base. Nuestra imagen base especifica /etc/shinyproxy
como directorio de trabajo, por lo que puede colocar el archivo de configuración allí.
Respecto a la propiedad server.useForwardHeaders
. Probablemente recibió el siguiente mensaje de advertencia:
WARNING: Using server.use-forward-headers will not work in this ShinyProxy release. See https://shinyproxy.io/documentation/security/#https-ssl--tls on how to change your configuration.
Entonces, a partir de 2.4.0, la propiedad que configura los encabezados de reenvío ha cambiado, pero los encabezados de reenvío aún funcionan. Solo necesita usar la siguiente configuración:
server:
forward-headers-strategy: native
en lugar de la antigua propiedad.
Noté que el mensaje de advertencia debería apuntar a https://shinyproxy.io/documentation/security/#forward -headers. Cambiaré eso para el próximo lanzamiento.
¡Esa es exactamente la advertencia que estaba recibiendo!
Lo siento, ni siquiera me molesté en leer la página con más atención ... Voy a probarla de nuevo, si tengo algún problema, ¡se lo haré saber!
¡Gracias!
Actualización rápida: la propiedad server.forward-headers-strategy
funciona correctamente con AWS Cognito. ¡Muchas gracias por señalarme en la dirección correcta!
Hola @LEDfan , mientras configuraba mi nueva configuración como se sugiere con la imagen de la ventana acoplable openanalytics/shinyproxy
, noté que siempre obtengo el siguiente error:
Este es mi Dockerfile:
FROM openanalytics/shinyproxy:latest
COPY application.yml /etc/shinyproxy/application.yml
Sin embargo, cuando cambio mi Dockerfile a:
FROM openjdk:8-jre
RUN mkdir -p /opt/shinyproxy/
RUN wget https://www.shinyproxy.io/downloads/shinyproxy-2.4.3.jar -O /opt/shinyproxy/shinyproxy.jar
COPY application.yml /opt/shinyproxy/application.yml
WORKDIR /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]
todo funciona como se esperaba.
¿Hay algo que deba cambiar en application.yml
o modificar una configuración específica en nginx
al usar el primer Dockerfile?
Avíseme si debo abrir una nueva edición o proporcionar más detalles.
Hola @fmmattioni
Olvidé mencionar que, dado que nuestra imagen utiliza un usuario que no es root, no tiene acceso al socket de la ventana acoplable de forma predeterminada.
Deberá ejecutar la imagen de la ventana acoplable ShinyProxy con el siguiente comando:
docker run -v /var/run/docker.sock:/var/run/docker.sock:ro --group-add $(getent group docker | cut -d: -f3) -p 8080:8080 openanalytics/shinyproxy
La parte $(getent group docker | cut -d: -f3)
determina el ID de grupo de la ventana acoplable. El parámetro --group-add
garantiza que el usuario que se ejecuta dentro del contenedor de la ventana acoplable ShinyProxy sea parte de ese grupo (es decir, el grupo de la ventana acoplable) y, como resultado, el contenedor de la ventana acoplable ShinyProxy tiene acceso al socket de la ventana acoplable.
Además, asegúrese de no haber configurado el atributo proxy.docker.url
. Solo si no lo proporciona, ShinyProxy accederá al socket de la ventana acoplable y no a algún puerto HTTP de la ventana acoplable.
¡Buena suerte!
¡Dulce! ¡Muchas gracias por la información detallada! Puedo confirmar que esto está funcionando ahora.
¡Gracias!