intranetBatoi

Servei Selenium per a SAO en producció

Objectiu

Selenium dona suport als fluxos que entren en SAO/ITACA des de la intranet, sobretot la descàrrega i signatura d’annexos FCT. En producció el servei corre com a contenidor separat i Laravel s’hi connecta per HTTP.

Fitxers clau:

Serveis i volums

En producció, docker-compose.prod.yml defineix:

laravel.prod:
  volumes:
    - selenium-downloads:/srv/documentsfct
  depends_on:
    - selenium

selenium:
  image: selenium/standalone-firefox:latest
  ports:
    - '${FORWARD_SELENIUM_PORT:-4444}:4444'
    - '127.0.0.1:${FORWARD_SELENIUM_VNC_PORT:-7900}:7900'
  volumes:
    - selenium-downloads:/home/seluser/Downloads

El navegador descarrega en /home/seluser/Downloads dins del contenidor Selenium. Laravel veu el mateix volum en /srv/documentsfct.

Variables recomanades en .env:

SELENIUM_URL=selenium:4444
SELENIUM_URL_SAO=https://foremp.edu.gva.es/index.php
SELENIUM_URL_ITACA=https://acces.edu.gva.es/sso/login.xhtml?callbackUrl=https://acces.edu.gva.es/escriptori/
SAO_DOWNLOAD_DIR=/srv/documentsfct
SAO_DOWNLOAD_WAIT_SECONDS=10
SAO_NAVIGATION_SLEEP_SECONDS=1

No publiques el port VNC fora de localhost. En producció el patró recomanat és 127.0.0.1:7900:7900 i accés per túnel SSH si cal veure el navegador.

Arrancada

Des del directori de desplegament:

docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d selenium laravel.prod
docker compose -f docker-compose.prod.yml ps

Comprovacions mínimes:

docker compose -f docker-compose.prod.yml exec laravel.prod php artisan config:clear
docker compose -f docker-compose.prod.yml exec laravel.prod php artisan tinker

En tinker, comprova que Laravel resol el host de Selenium:

config('services.selenium.url'); // selenium:4444
config('sao.download.directory'); // /srv/documentsfct

Flux de depuració

  1. Revisa estat dels contenidors:
docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml logs --tail=100 selenium
docker compose -f docker-compose.prod.yml logs --tail=100 laravel.prod
  1. Revisa logs SAO de Laravel:
docker compose -f docker-compose.prod.yml exec laravel.prod tail -n 200 storage/logs/sao.log
docker compose -f docker-compose.prod.yml exec laravel.prod tail -n 200 storage/logs/laravel.log
  1. Comprova el volum compartit:
docker compose -f docker-compose.prod.yml exec selenium ls -lah /home/seluser/Downloads
docker compose -f docker-compose.prod.yml exec laravel.prod ls -lah /srv/documentsfct

Si el fitxer apareix en Selenium però no en Laravel, el problema és el muntatge del volum. Si no apareix en Selenium, el problema és navegació, credencials, selector o descàrrega bloquejada.

  1. Mira el navegador amb VNC només si cal:
ssh -L 7900:127.0.0.1:7900 usuari@servidor

Després obri http://127.0.0.1:7900 des del teu equip. No deixes este port exposat públicament.

Errors habituals

Reinici controlat

Per reiniciar només Selenium:

docker compose -f docker-compose.prod.yml restart selenium

Per actualitzar la imatge i conservar volums:

docker compose -f docker-compose.prod.yml pull selenium
docker compose -f docker-compose.prod.yml up -d selenium

No esborres el volum selenium-downloads durant una incidència si encara necessites inspeccionar fitxers descarregats.

Checklist postcanvi