En Debian se lleva años actualizando aplicaciones de servidores de alta
producción usando el sistema de paquetes. El sistema de paquetes es un
trabajo hecho y depurado a lo largo de estos años y permite que
actualizaciones muy complejas o de aplicaciones que casi no pueden parar se
hagan de una forma bastante trivial.
Además, la logística de actualizaciones (bajar los paquetes en cada
máquina) está resuelta, hay control de versiones (y de dependencias, para
las funcionalidades nuevas que requieran las actualizaciones), hay
mecanismos para propagar actualizaciones basadas en diferentes parámetros
(como las de seguridad) y los paquetes se firman con una clave GPG para
poder asegurar la autenticidad. Y en todo esto no importa si el programa
está en Java, Python o C.
Este sistema cumple los requisitos de tecnología abierta (es código libre)
y un sistema muy probado (desde hace años en un buen número de escritorios
y otro buen número de servidores) y el esquema que sigue es casi una copia
del esqueleto de pasos que has escrito en tu mensaje.
Lógicamente para usar este sistema hay que usar Debian GNU/Linux tanto en
el servidor como en los clientes y hay que tener conocimientos de
empaquetamiento de aplicaciones. Pero si todas las máquinas van a tener el
mismo hardware y al final lo que se va a usar es un navegador, quizás los
requisitos del sistema operativo no son tan importantes. Y para empaquetar
hay mucho manual y mucha gente a tiro para ayudar. :)