@@ -30,6 +30,7 @@ La ingesta de datasets y variantes se realiza mediante `impact-tools`, instalado
3030- [ Backup antes de actualizar] ( #backup-antes-de-actualizar )
3131- [ Preparar permisos y SELinux] ( #preparar-permisos-y-selinux )
3232- [ Construir y arrancar el stack] ( #construir-y-arrancar-el-stack )
33+ - [ Gestión de usuarios administrativos] ( #gestión-de-usuarios-administrativos )
3334- [ Comprobaciones posteriores] ( #comprobaciones-posteriores )
3435- [ Actualizar el despliegue] ( #actualizar-el-despliegue )
3536- [ Rollback] ( #rollback )
@@ -65,7 +66,7 @@ El usuario que ejecuta Podman debe ser siempre el mismo usuario que gestiona la
6566Los ejemplos de esta guía utilizan:
6667
6768``` text
68- /opt/beacon/beacon2-pi-api-isciii
69+ /opt/containers_apps/ beacon/beacon2-pi-api
6970```
7071
7172Las rutas reales se configuran en ` .env ` .
@@ -119,7 +120,7 @@ ${APACHE_LOG_DIR}/
119120En la instalación validada:
120121
121122``` dotenv
122- APP_ROOT=/opt/beacon/beacon2-pi-api-isciii
123+ APP_ROOT=/opt/containers_apps/ beacon/beacon2-pi-api
123124BIND_ROOT=/srv/containers/bind/beacon
124125APP_LOG_DIR=/var/log/local/beacon/apps
125126APACHE_LOG_DIR=/var/log/local/beacon/apache
@@ -164,27 +165,20 @@ En `dcontainers00` se utiliza:
164165### Instalación nueva
165166
166167``` bash
167- cd /opt/beacon
168+ cd /opt/containers_apps/ beacon
168169
169170git clone \
170- https://github.com/BU-ISCIII/beacon2-pi-api.git \
171- beacon2-pi-api-isciii
171+ https://github.com/BU-ISCIII/beacon2-pi-api.git
172172
173- cd beacon2-pi-api-isciii
174- ```
175-
176- Selecciona la rama de despliegue:
177-
178- ``` bash
179- git switch isciii-installation-v2.1.0
173+ cd beacon2-pi-api
180174```
181175
182176### Instalación existente
183177
184178Entra en el repositorio con el mismo usuario que ejecuta Podman:
185179
186180``` bash
187- cd /opt/beacon/beacon2-pi-api-isciii
181+ cd /opt/containers_apps/ beacon/beacon2-pi-api
188182
189183git status
190184git fetch --all --prune
@@ -195,7 +189,7 @@ No actualices el código mientras existan cambios locales sin revisar.
195189Para actualizar una rama ya configurada:
196190
197191``` bash
198- git switch isciii-installation-v2.1.0
192+ git checkout main
199193git pull --ff-only
200194```
201195
@@ -262,7 +256,7 @@ ${BIND_ROOT}/etc/certs/beacon_server.crt
262256${BIND_ROOT}/etc/certs/beacon_server.key
263257```
264258
265- ** Pendiente:** certificados institucionales y terminación TLS en Apache de cara al exterior.
259+ ** Pendiente:** certificados institucionales y terminación TLS en Apache para acceso exterior.
266260
267261## Backup antes de actualizar
268262
@@ -450,6 +444,96 @@ apache-beacon
450444
451445Los nombres concretos se obtienen de ` .env ` .
452446
447+ ## Gestión de usuarios administrativos
448+
449+ Los usuarios administrativos se gestionan de forma independiente en Admin UI, Keycloak y MongoDB.
450+
451+ Antes de utilizar los comandos de esta sección, carga las variables del despliegue:
452+
453+ ``` bash
454+ set -a
455+ source .env
456+ set +a
457+ ```
458+
459+ ### Admin UI
460+
461+ Para crear un superusuario de Django:
462+
463+ ``` bash
464+ podman exec -it " ${ADMIN_UI_CONTAINER} " \
465+ python manage.py createsuperuser --skip-checks
466+ ```
467+
468+ El comando solicita de forma interactiva el nombre de usuario, el correo electrónico y la contraseña.
469+
470+ Los usuarios existentes pueden consultarse desde el panel de administración:
471+
472+ ``` text
473+ ${PUBLIC_SCHEME}://${PUBLIC_HOST}:${PUBLIC_PORT}/admin-ui/admin/
474+ ```
475+
476+ ### Keycloak
477+
478+ El administrador inicial de Keycloak se define en ` .env ` antes del primer arranque:
479+
480+ ``` dotenv
481+ KEYCLOAK_ADMIN=admin
482+ KEYCLOAK_ADMIN_PASSWORD=<contraseña-segura>
483+ ```
484+
485+ Estas variables crean el administrador únicamente durante la inicialización. Si PostgreSQL ya contiene una instalación de Keycloak, modificar sus valores en ` .env ` no cambia automáticamente la contraseña del usuario existente.
486+
487+ Los usuarios adicionales, sus contraseñas y sus roles deben gestionarse desde la consola de administración:
488+
489+ ``` text
490+ ${PUBLIC_SCHEME}://${PUBLIC_HOST}:${PUBLIC_PORT}${KEYCLOAK_RELATIVE_PATH}/admin/
491+ ```
492+
493+ Para conceder permisos administrativos, asigna al usuario los roles correspondientes desde la sección ** Role mapping** de Keycloak.
494+
495+ ### MongoDB
496+
497+ El usuario administrador inicial de MongoDB se configura en ` .env ` :
498+
499+ ``` dotenv
500+ MONGO_ROOT_USERNAME=root
501+ MONGO_ROOT_PASSWORD=<contraseña-segura>
502+ ```
503+
504+ Estas variables solo crean el usuario cuando se inicializa una base de datos vacía. Modificarlas después no actualiza las credenciales almacenadas en una instalación existente.
505+
506+ Para acceder a la consola administrativa:
507+
508+ ``` bash
509+ podman exec -it " ${MONGO_CONTAINER} " \
510+ mongosh \
511+ -u " ${MONGO_ROOT_USERNAME} " \
512+ -p \ # -p "${MONGO_ROOT_PASSWORD}" \
513+ --authenticationDatabase " ${MONGO_AUTH_SOURCE} "
514+ ```
515+
516+ El parámetro ` -p ` solicita la contraseña de forma interactiva y evita incluirla directamente en el historial de la terminal.
517+
518+ ### Mongo Express
519+
520+ Mongo Express no mantiene usuarios propios. Su acceso web utiliza autenticación básica configurada mediante variables de entorno.
521+
522+ ``` dotenv
523+ MONGO_EXPRESS_USERNAME=<usuario>
524+ MONGO_EXPRESS_PASSWORD=<contraseña-segura>
525+ ```
526+
527+ Para comprobar el acceso:
528+
529+ ``` bash
530+ curl -s -u " ${MONGO_EXPRESS_USERNAME} :${MONGO_EXPRESS_PASSWORD} " \
531+ -o /dev/null -w " HTTP %{http_code}\n" \
532+ " ${PUBLIC_SCHEME} ://${PUBLIC_HOST} :${PUBLIC_PORT} /mongo-express/"
533+ ```
534+
535+ No deben utilizarse las credenciales predeterminadas ` admin:pass ` .
536+
453537## Comprobaciones posteriores
454538
455539### Estado de los contenedores
@@ -460,6 +544,17 @@ podman compose ps
460544
461545Ningún contenedor debe permanecer en estado ` Restarting ` o ` Exited ` .
462546
547+ ### Comprobar que todos los endpoints funcionan
548+
549+ Desde la raíz del repositorio, ejecuta:
550+
551+ ``` bash
552+ chmod +x deploy/check_endpoints.sh
553+ ./deploy/check_endpoints.sh
554+ ```
555+
556+ El script comprueba el acceso a Template UI, Beacon API, Keycloak, Admin UI y Mongo Express. Todos los endpoints deben devolver OK.
557+
463558### Template UI
464559
465560``` bash
@@ -577,10 +672,10 @@ Guarda primero un backup siguiendo la sección anterior.
577672Actualiza el código:
578673
579674``` bash
580- cd /opt/beacon/beacon2-pi-api-isciii
675+ cd /opt/containers_apps/ beacon/beacon2-pi-api
581676
582677git fetch --all --prune
583- git switch isciii-installation-v2.1.0
678+ git checkout main
584679git pull --ff-only
585680```
586681
@@ -624,7 +719,7 @@ Recupera el commit anterior:
624719
625720``` bash
626721PREVIOUS_COMMIT=" $( cat " ${BACKUP_DIR} /git_commit.txt" ) "
627- git switch --detach " ${PREVIOUS_COMMIT} "
722+ git checkout --detach " ${PREVIOUS_COMMIT} "
628723```
629724
630725Restaura ` .env ` :
@@ -661,10 +756,11 @@ podman compose up -d
661756
662757Comprueba contenedores y endpoints.
663758
664- Una vez validado el rollback, vuelve a una rama de despliegue normal antes de realizar nuevos cambios :
759+ Mantén la instalación en este commit mientras se investiga el problema. Una vez resuelta la causa del fallo y cuando quieras volver a la versión actual :
665760
666761``` bash
667- git switch isciii-installation-v2.1.0
762+ git checkout main
763+ git pull --ff-only
668764```
669765
670766## Reparar permisos
@@ -675,7 +771,7 @@ Ejecuta `fix_permissions.sh` cuando:
675771- se hayan restaurado datos desde un backup;
676772- hayan cambiado propietarios en el host;
677773- hayan cambiado los UIDs o GIDs definidos en ` .env ` ;
678- - Admin UI no pueda guardar configuraciones;
774+ - Admin UI no pueda guardar configuraciones (error en botón "save") ;
679775- un contenedor falle con ` Permission denied ` ;
680776- se hayan perdido o modificado las etiquetas SELinux;
681777- se haya movido la instalación a otra ruta.
@@ -786,6 +882,32 @@ podman system df
786882podman info --format ' {{.Store.GraphRoot}}'
787883```
788884
885+ ### Restablecer permisos de un servicio concreto
886+
887+ Detén el servicio, repara sus permisos y vuelve a arrancarlo:
888+
889+ ``` bash
890+ podman compose stop < servicio>
891+ ./deploy/fix_permissions.sh < servicio>
892+ podman compose up -d < servicio>
893+ ```
894+
895+ Servicios admitidos:
896+
897+ - ` db ` (mongodb)
898+ - ` idp-db ` (postgresql)
899+ - ` admin-ui `
900+ - ` beaconprod `
901+ - ` apache-beacon `
902+ - ` template-ui `
903+
904+ Para reparar todo el despliegue:
905+ ``` bash
906+ podman compose down
907+ ./deploy/fix_permissions.sh
908+ podman compose up -d
909+ ```
910+
789911## Troubleshooting
790912
791913### ` Permission denied ` en un bind mount
@@ -798,6 +920,10 @@ podman compose down
798920podman compose up -d
799921```
800922
923+ ### Gestionar usuarios administrativos
924+
925+ Consulta la sección [ Gestión de usuarios administrativos] ( #gestión-de-usuarios-administrativos ) .
926+
801927### Admin UI no puede guardar cambios
802928
803929Un error como:
@@ -811,9 +937,9 @@ sobre un fichero en `/home/app/web/beacon/` indica que falta la ACL del UID inte
811937Repara los permisos:
812938
813939``` bash
814- podman compose down
815- ./deploy/fix_permissions.sh
816- podman compose up -d
940+ podman compose stop admin-ui
941+ ./deploy/fix_permissions.sh admin-ui
942+ podman compose up -d admin-ui
817943```
818944
819945### MongoDB no arranca por ownership
0 commit comments