Actualización y migración
Los componentes de Riversoft® STCP DirectLink se distribuyen como paquetes RPM en el repositorio Riversoft y se actualizan con el gestor de paquetes del sistema, dnf o yum:
| Componente | Paquete |
|---|---|
| Riversoft STCP DirectLink | stcpdirectlink |
| Riversoft STCP DirectLink Portal | stcpdirectlink-portal |
| Riversoft STCP Gemini API | stcpgemini-api |
| Riversoft Console Portal | stcpgemini-portal |
La migración de la versión 8 a la versión 9 tiene un procedimiento propio, descrito en Migración de la versión 8 a la versión 9.
Buenas prácticas
- Lea las notas de la versión de todas las versiones entre la instalada y la de destino. Informan cambios de comportamiento, nuevos parámetros y procedimientos específicos.
- Actualice primero un entorno de homologación y repita las pruebas de los flujos críticos antes de actualizar producción.
- Planifique una ventana de mantenimiento y comunique a los socios cuando las transferencias no estén disponibles.
- Haga un backup de la configuración y de las bases de datos antes de cada actualización.
- Actualice a una versión de destino por vez y mantenga la misma versión en todos los servidores del entorno.
- Registre la versión anterior de cada paquete para poder revertir.
Antes de actualizar
Relevamiento
Registre las versiones instaladas:
rpm -q stcpgemini-api stcpgemini-portal stcpdirectlink stcpdirectlink-portalVerifique las versiones disponibles en el repositorio:
dnf makecache dnf list --showduplicates stcpgemini-api stcpgemini-portal stcpdirectlink stcpdirectlink-portalIdentifique las transferencias en curso y los enlaces de descarga todavía válidos.
Defina el responsable del cambio y el plan de reversión.
Backup
Archivos de configuración:
Elemento Archivo Riversoft STCP DirectLink /usr/local/stcpdirectlink/configs/config.jsonRiversoft STCP DirectLink Portal /usr/local/stcpdirectlink/static/portal/assets/configs/config.jsonRiversoft STCP Gemini API /usr/local/stcpgemini-api/configs/config.jsonRiversoft Console Portal /usr/local/stcpgemini-api/portal/app/configs/config.jsonArchivo de licencia (
applLicense) y archivos de secretos referenciados en la configuración.Base de configuración y base de log, según las políticas de backup de la organización.
Certificados y claves usados por los servicios.
Procedimiento de actualización
Detenga los servicios
Detenga Riversoft STCP DirectLink antes que la API:
systemctl stop stcpdirectlink
systemctl stop stcpgemini-apiActualice los paquetes
Actualice los metadatos del repositorio y los paquetes:
dnf clean all
dnf makecache
dnf upgrade stcpgemini-api stcpgemini-portal stcpdirectlink stcpdirectlink-portalPara actualizar a una versión específica, indique la versión en el nombre del paquete, por ejemplo dnf upgrade stcpdirectlink-9.0.1.
Revise la configuración
La actualización no sustituye los archivos de configuración en uso, incluido el de Riversoft STCP DirectLink Portal. Compare cada config.json con el modelo (example-config.json) de la nueva versión para identificar parámetros nuevos o modificados, según las notas de la versión. Si el gestor de paquetes crea archivos con la extensión .rpmnew, compárelos con los archivos en uso:
find /usr/local/stcpgemini-api /usr/local/stcpdirectlink -name "*.rpmnew"Actualice la base de datos, cuando sea necesario
Cuando la nueva versión exija cambios en la base de datos, las notas de la versión informan los scripts y el orden de ejecución. Ejecútelos con el acompañamiento del equipo de DBA.
Inicie los servicios
Inicie la API antes que Riversoft STCP DirectLink y confirme que ambos están en ejecución:
systemctl start stcpgemini-api
systemctl start stcpdirectlink
systemctl status stcpgemini-api stcpdirectlinkNota
Cuando Riversoft STCP Gemini también esté instalado, la Riversoft STCP Gemini API y el Riversoft Console Portal son compartidos por los dos productos: actualícelos una sola vez, antes de los productos, verificando en las notas de la versión la compatibilidad entre las versiones.
Validación después de la actualización
-
rpm -qmuestra la versión de destino de cada paquete. -
systemctl statusmuestrarunningpara la API y para Riversoft STCP DirectLink, sin errores en el log. - El Riversoft Console Portal se abre y acepta el inicio de sesión.
- Riversoft STCP DirectLink Portal se abre en
/portaly acepta el inicio de sesión de un usuario de prueba. - Una carga y una descarga de prueba se completan por el portal y por la API.
- Los enlaces seguros, las notificaciones y los conectores usados en el entorno funcionan.
Reversión (rollback)
Si la validación falla y la causa no puede corregirse dentro de la ventana de mantenimiento:
Detenga los servicios.
Vuelva los paquetes a la versión anterior registrada antes de la actualización:
dnf downgrade stcpgemini-api-<versión-anterior> stcpgemini-portal-<versión-anterior> stcpdirectlink-<versión-anterior> stcpdirectlink-portal-<versión-anterior>También es posible deshacer la transacción completa con
dnf history undo <id>, donde<id>es el identificador de la transacción mostrado endnf history. Conyum, useyum downgradeyyum history undo.Restaure los archivos de configuración del backup.
Si se ejecutaron scripts de base de datos, restaure el backup de las bases.
Inicie los servicios y repita la validación.
Importante
La reversión depende de que la versión anterior siga disponible en el repositorio y de que exista un backup de los archivos y de las bases hecho antes de la actualización.
Migración de la versión 8 a la versión 9
La migración de la versión 8 a la versión 9 cambia la forma de configuración y de autenticación y tiene un procedimiento propio, descrito en las secciones siguientes. Está destinada a los administradores del entorno y a los equipos responsables de las integraciones con la API. Para otras versiones, siga la actualización descrita arriba y las notas de la versión.
Qué cambia en la versión 9
En la versión 8, parte de la configuración operativa estaba en el archivo config.json. En la versión 9, la configuración se divide entre el archivo local y la base de configuración de la instancia:
| Origen en la versión 9 | Contenido | Dónde se administra |
|---|---|---|
config.json | Inicialización local, conexión con las bases, notificaciones, enrutamiento, KMS, telemetría y servicio. | En el servidor de la aplicación. Vea Configuración. |
| Base de configuración | Configuración operativa de la instancia, JWT, SSO y bloqueo externo. | Riversoft Console Portal. |
La versión 9 también consolida la autenticación de la API:
| Cambio | Efecto |
|---|---|
| Las rutas protegidas exigen un token Bearer | La carga, los listados, el informe y el cierre de sesión dejan de aceptar Basic. Basic sigue aceptándose solo en el inicio de sesión (/auth/login). |
API en la versión v2 | El prefijo pasa de /directlink/v1 a /directlink/v2, y la v1 ya no se atiende. Vea Migración de la v1 a la v2. |
| Descarga de archivo listado con token | /download/file y /download/file/backup exigen el token Bearer o la cookie de sesión del mismo usuario que hizo el listado. |
Campo time en ISO 8601 | Las respuestas de la API informan la fecha y la hora en formato RFC 3339, por ejemplo 2026-11-07T14:03:21-03:00. |
| Token aceptado en el header o en la cookie | Las integraciones usan Authorization: Bearer; el portal mantiene la sesión en la cookie __Host-dirl_session (HttpOnly, Secure, SameSite=Strict). El header tiene prioridad. |
/auth/token y /oauth2/token equivalentes | Ambos endpoints emiten tokens por password grant o token exchange, según los modos habilitados. |
| Token exchange con proveedor | El JWT de origen se valida con el proveedor indicado en el campo provider o, como alternativa, en el header X-STCPDIRECTLINK-JWT-ISSUER. |
| Identidad validada | El usuario identificado por las credenciales o claims debe existir y corresponder al perfil cargado de la configuración. |
| Token de suplantación | Las integraciones técnicas pueden usar un token de larga duración, generado en la interfaz de supervisión, con un identificador de sesión registrado. |
| Host validado | La API rechaza con 403 las llamadas realizadas por un host distinto del configurado para el servicio. |
| Cloudflare Turnstile (opcional) | El inicio de sesión, el primer acceso y la recuperación de contraseña pueden exigir la verificación de Cloudflare. |
Parámetros que salen del config.json
Los campos siguientes no deben copiarse del config.json de la versión 8. En la versión 9, se cargan desde la configuración de la instancia en la base de datos:
| Campo en la versión 8 | Destino en la versión 9 |
|---|---|
General.oauthTokenMethodJWT | CfgInstance.Startup.JwtConfig.MethodName |
General.oauthTokenExpireSeconds | CfgInstance.Startup.JwtConfig.ExpirationTime |
General.lockProvider.lockType | CfgInstance.Startup.ExternalLock* |
General.ssoProviders[] | CfgInstance.Startup.SSOConfigs[] |
Si no se informan, el método de firma de los tokens es HS256 y la caducidad es de 3600 segundos. Sin bloqueo externo configurado, la aplicación usa bloqueo en el sistema de archivos del directorio local. Los campos de conexión con la base de configuración (cfgProvider, cfgDbHost, cfgDbPort, cfgDbName, cfgDbUser y cfgDbPswd) no cambian.
Impacto en las integraciones
Adapte los consumidores de la API antes de liberar la versión 9:
| Situación en la versión 8 | Adaptación para la versión 9 |
|---|---|
Cliente que usa /directlink/v1 | Cambiar el prefijo a /directlink/v2. |
Descarga por el linkURL sin token | Enviar el token Bearer del mismo usuario que hizo el listado. |
Lectura del campo time en el formato anterior | Leer el campo en formato ISO 8601 (RFC 3339). |
Basic enviado directamente a /upload, /download/list o /report | Obtener un token Bearer (inicio de sesión o password grant) y enviar Authorization: Bearer <token>. |
| Token obtenido por password grant | Confirmar el modo habilitado, la ruta, el formulario y la vigencia del nuevo token. |
Token exchange sin provider | Informar el proveedor JWT en el campo provider o en el header X-STCPDIRECTLINK-JWT-ISSUER. |
| Automatización con token de larga duración | Generar y registrar un token de suplantación, proteger el secreto y probar la rotación. |
| Portal o SPA que recibe el token en la URL | Usar la sesión por cookie segura emitida en el inicio de sesión o en el SSO. |
| Cliente que llama a una ruta o método no registrado | Usar el prefijo /directlink/v2 y el método indicado en la referencia de la API. |
| Cliente que accede a la API por otro nombre de host | Corregir la URL, el DNS, el proxy o el header Host a la dirección configurada. |
Antes de migrar
Relevamiento de la versión 8
- Identifique la instancia, el entorno y el responsable del cambio.
- Haga una copia controlada del
config.jsonde la versión 8. - Registre el proveedor y los datos de conexión de la base de configuración.
- Registre los servicios habilitados y los flujos críticos de carga, descarga, autenticación y SSO.
- Identifique las integraciones que envían Basic directamente a las rutas de transferencia.
- Identifique las integraciones que usan password grant, token exchange o tokens de larga duración, y los proveedores y emisores de los tokens.
- Liste los proveedores SSO habilitados y el tipo de bloqueo utilizado.
- Registre el método y la caducidad efectivos de los tokens JWT.
- Defina una ventana de indisponibilidad y el plan de retorno.
Accesos y requisitos previos
- Acceso al servidor de la aplicación, a la base de configuración y al Riversoft Console Portal.
- Backup de la base de configuración, del directorio de configuración y de los archivos de control.
- Certificados, claves y secretos disponibles en el mecanismo seguro del entorno.
- Espacio en disco y permisos del directorio de la versión 9 verificados.
Procedimiento de migración
Prepare la versión 9
- Instale la versión 9 en el directorio definido para la instancia.
- Prepare el
config.jsonde la versión 9, ajustando solo los parámetros locales: directorios, licencia, conexión con las bases, KMS, telemetría, notificaciones y servicio. - Elimine del archivo los parámetros que pasaron a la base de datos.
- Verifique el propietario, el grupo y los permisos de los archivos y valide el JSON (por ejemplo, con
jq empty).
Prepare la configuración en la base de datos
- Abra la instancia en el Riversoft Console Portal.
- Verifique la configuración JWT (método de firma, caducidad y material de firma).
- Verifique los modos de autenticación habilitados para la API.
- Verifique los proveedores usados por token exchange y suplantación, el proveedor de bloqueo y los proveedores SSO. Habilite solo los proveedores que realmente se usan.
- Guarde y registre la fecha, el responsable y el entorno del cambio.
Adapte y pruebe las integraciones
- Cambie los consumidores que usan Basic en las rutas protegidas a
Authorization: Bearer. - Informe el proveedor del token exchange.
- Confirme el prefijo
/directlink/v2y el host configurado para la API. - Actualice el almacenamiento seguro de los tokens técnicos.
- Ejecute las pruebas de autenticación antes de las pruebas de transferencia.
Inicie y acompañe
- Detenga la versión 8 según el procedimiento operativo.
- Inicie la versión 9 y siga el log de inicialización.
- Confirme que la instancia cargó la base de configuración sin errores de JWT, bloqueo o SSO.
- Confirme que el servicio está disponible antes de liberarlo a los usuarios.
Validación después de la migración
- El servicio se inicia sin errores de conexión con la base de configuración.
- El host usado por los clientes corresponde al configurado para la API.
- El inicio de sesión local con Basic en
/auth/loginfunciona, incluso con MFA, cuando corresponde. - Se emite un token con el método y la caducidad esperados; el password grant y el token exchange funcionan en los modos habilitados.
- El token se acepta en el header
Authorizationy la sesión del portal funciona con la cookie. - El cierre de sesión elimina la cookie y termina el acceso a los recursos protegidos.
- Un token de suplantación válido funciona y se rechaza un identificador no registrado.
- El inicio de sesión de cada proveedor SSO habilitado funciona, y los callbacks OAuth 2.0 y SAML 2.0 llegan a la versión 9.
- La carga, los listados, la descarga autenticada, la descarga por enlace seguro y el informe funcionan.
- Se rechaza una credencial ausente o no válida, y un token válido con conexión bloqueada recibe
403. - Las notificaciones habilitadas funcionan y los logs no muestran errores de configuración, autenticación o permisos.
Registre las evidencias (hora, instancia, versión, ruta, estado HTTP y resultado). Nunca registre tokens, cookies, contraseñas, PIN ni secretos en las evidencias.
Problemas comunes en la migración
| Síntoma | Verificaciones |
|---|---|
| La versión 9 no se inicia | Ruta y validez del JSON, licencia, permisos y log de inicialización. |
| Error de conexión con la base de datos | Host, puerto, usuario, contraseña, cfgDbName, opciones TLS y firewall. |
| Tokens con método o caducidad inesperados | Configuración JWT de la instancia en el Riversoft Console Portal. |
/auth/token rechaza el password grant | Modo habilitado, método POST, Content-Type, grant_type, usuario y contraseña. |
| Token exchange rechazado | grant_type, subject_token_type, subject_token, provider, registro del proveedor JWT, issuer y audience. |
Un token válido recibe 401 | Firma, issuer, audience, caducidad, proveedor y correspondencia entre usuario y perfil. |
Un token válido recibe 403 | Host configurado, conexión bloqueada, ventana horaria, comando de preconexión, servicio, filtros y bloqueos. |
| Basic dejó de funcionar en la carga, el listado o el informe | El cliente todavía usa el contrato de la versión 8. Obtenga un token y use Authorization: Bearer. |
| La cookie no mantiene la sesión del portal | Publicación HTTPS, dominio, atributos Secure y SameSite, proxy y reloj. |
| El inicio de sesión SSO no aparece o el callback falla | Proveedor habilitado, nombre usado en la ruta, URL registradas en el proveedor, certificados y reloj. |
| Un cambio en el Portal no aparece en la aplicación | Instancia correcta, cambio guardado y reinicio o recarga del servicio. |
Reversión de la migración
Ejecute la reversión cuando la versión 9 no pueda estabilizarse dentro de la ventana de cambio:
- Detenga la versión 9 y conserve los logs del intento.
- Restaure el archivo de configuración y el binario de la versión 8.
- Confirme que la versión 8 apunta a la configuración y los servicios esperados e iníciela.
- Restaure en los clientes el contrato de autenticación de la versión 8, si se modificó.
- Valide la autenticación, la emisión de tokens, la carga, la descarga y los flujos críticos.
- Registre las configuraciones modificadas en el Portal. Consérvelas hasta analizar la falla.
Seguridad durante la migración
- No comparta el
config.jsoncompleto fuera del grupo autorizado ni registre secretos en tickets, correos o evidencias. - Mantenga los tokens técnicos en un almacén de secretos y defina su rotación.
- Habilite solo los modos de autenticación que el entorno necesita.
- Publique el portal y la API por HTTPS para conservar la cookie
Secure. - Use
tls=skip-verifyen la conexión con la base de datos solo en entornos de prueba controlados. Vea Requisitos › Conexión con TLS. - Cambie las credenciales que hayan quedado expuestas.