Saltar a contenido

Instalar sin contenedores#

Empowerment Center también se puede instalar sin Docker: el backend como un servicio Java del sistema y la aplicación web en un servidor web que haga de proxy inverso. Esta página explica qué cambia respecto a la instalación con Docker Compose.

Antes de empezar#

  • Una JRE 25 en el servidor del backend.
  • El fichero de la aplicación, ecenter-8.0.0.jar.
  • Los ficheros de la aplicación web (la carpeta browser de la compilación del frontal).
  • Un PostgreSQL 18 con PostGIS 3.6 preparado como dice Requisitos: un usuario dueño de la base de datos sin ser superusuario y las extensiones postgis y pg_trgm.
  • Un servidor web (nginx, Apache, HAProxy…) con el certificado TLS.

1. El backend#

  1. Cree un usuario del sistema sin privilegios para ECenter (por ejemplo, ecenter) y una carpeta para él (/opt/ecenter).
  2. Copie allí el jar.
  3. Cree un fichero de entorno legible solo por ese usuario (/etc/ecenter/ecenter.env, permisos 600) con las variables de Variables de entorno y, además, estas, que en Docker Compose ponía compose.yaml:

    Variable Ejemplo Para qué
    ECENTER_DB_URL jdbc:postgresql://bd.example.org:5432/ecenter La BD propia. Sin ella el backend no arranca.
    ECENTER_DB_USER ecenter Su usuario. Sin él el backend no arranca.
    ECENTER_DB_PASSWORD Su contraseña. Sin ella el backend no arranca.
    SERVER_PORT 8080 El puerto del backend, si no es el 8080.
    SERVER_FORWARD_HEADERS_STRATEGY framework Para que lea de los X-Forwarded-* del proxy el esquema, el nombre y la dirección originales: de ahí salen las direcciones de vuelta del proveedor de identidad y las cookies seguras detrás de TLS.
    ECENTER_EMBEDDING_INDEX_LOCATION file:/srv/ecenter/frontend/index.html El index.html de la aplicación web, que el backend sirve a la incrustación.
    ECENTER_INSTANCE_NAME ecenter-1 Un nombre fijo para la instancia. Por defecto es el del equipo.
    JAVA_TOOL_OPTIONS -Xmx3g -XX:+ExitOnOutOfMemoryError El montón de la JVM (véase el aviso de abajo).
  4. Arránquelo como un servicio del sistema que ejecute, con ese usuario y ese fichero de entorno:

    java -jar /opt/ecenter/ecenter-8.0.0.jar
    

Un ejemplo con systemd, que conviene adaptar (la ruta de la JRE 25, el usuario y las carpetas):

# /etc/systemd/system/ecenter.service
[Unit]
Description=Empowerment Center
Wants=network-online.target
After=network-online.target

[Service]
User=ecenter
WorkingDirectory=/opt/ecenter
EnvironmentFile=/etc/ecenter/ecenter.env
ExecStart=/usr/bin/java -jar /opt/ecenter/ecenter-8.0.0.jar
SuccessExitStatus=143
TimeoutStopSec=45
Restart=on-failure

[Install]
WantedBy=multi-user.target

TimeoutStopSec=45 deja al backend terminar ordenadamente las peticiones y los trabajos en curso al pararlo, y SuccessExitStatus=143 hace que systemd no tome por un fallo la salida de la JVM tras SIGTERM.

Un application.yml propio se pone en /opt/ecenter/config/application.yml (la carpeta config del directorio de trabajo) y se lee además del de la aplicación (véase Configuración).

Importante

Sin el límite de memoria de un contenedor, la JVM tomaría para su montón una parte de toda la memoria del equipo. Fije el montón con -Xmx (por ejemplo, -Xmx3g en un equipo de 4 GB dedicado al backend) y deje sitio a la BD propia y al navegador sin interfaz si van en el mismo equipo. La alerta de memoria de la consola de operación se mide contra ese máximo.

2. La aplicación web y el proxy#

  1. Copie los ficheros de la aplicación web a una carpeta del servidor web (/srv/ecenter/frontend/).
  2. Configure el servidor web como dice Otro servidor web en lugar del frontal: las rutas que van al backend, la vuelta a index.html, las cabeceras, las esperas y el tamaño máximo del cuerpo.
  3. La configuración de nginx de la imagen del frontal sirve de punto de partida: frontend/nginx/ecenter.conf.template y frontend/nginx/security-headers.conf, cambiando las variables ${ECENTER_…} por sus valores.
  4. Si quiere los manuales en /ayuda/ (los abre el menú Ayuda de la aplicación), constrúyalos con manuales/construir.sh y sírvalos como dice ese mismo apartado, con frontend/nginx/help-headers.conf para sus cabeceras.

3. Arrancar y comprobar#

  1. Arranque el servicio del backend y siga su registro. La primera vez crea el esquema de la BD propia y el primer administrador.
  2. Compruebe https://ecenter.example.org/api/about: tiene que responder con la versión.
  3. Siga con La licencia y Primer arranque y puesta en marcha.

El backend registra por la salida estándar. Con systemd, sus líneas van al diario (journalctl -u ecenter), que tiene su propia rotación.

Los servicios opcionales#

El navegador sin interfaz y el motor de rutas se prueban como imágenes de contenedor (chromedp/headless-shell y valhalla-scripted). Si no puede ejecutarlas, déjelos apagados: ECenter funciona sin ellos (véase Servicios opcionales). Para el motor de rutas también vale el servicio en la nube de OpenRouteService.

Véase también#