Saltar para o conteúdo

Atualização e migração

Os componentes do Riversoft® STCP DirectLink são distribuídos como pacotes RPM no repositório Riversoft e são atualizados pelo gerenciador de pacotes do sistema, dnf ou yum:

ComponentePacote
Riversoft STCP DirectLinkstcpdirectlink
Riversoft STCP DirectLink Portalstcpdirectlink-portal
Riversoft STCP Gemini APIstcpgemini-api
Riversoft Console Portalstcpgemini-portal

A migração da versão 8 para a versão 9 tem procedimento próprio, descrito em Migração da versão 8 para a versão 9.

Boas práticas

  • Leia as notas de versão de todas as versões entre a instalada e a de destino. Elas informam mudanças de comportamento, novos parâmetros e procedimentos específicos.
  • Atualize primeiro um ambiente de homologação e repita os testes dos fluxos críticos antes de atualizar a produção.
  • Planeje uma janela de manutenção e comunique os parceiros quando houver indisponibilidade das transferências.
  • Faça backup da configuração e dos bancos de dados antes de cada atualização.
  • Atualize uma versão de destino por vez e mantenha a mesma versão em todos os servidores do ambiente.
  • Registre a versão anterior de cada pacote para poder fazer a reversão.

Antes de atualizar

Levantamento

  • Registre as versões instaladas:

    rpm -q stcpgemini-api stcpgemini-portal stcpdirectlink stcpdirectlink-portal
  • Confira as versões disponíveis no repositório:

    dnf makecache
    dnf list --showduplicates stcpgemini-api stcpgemini-portal stcpdirectlink stcpdirectlink-portal
  • Identifique as transferências em andamento e os links de download ainda válidos.

  • Defina o responsável pela mudança e o plano de reversão.

Backup

  • Arquivos de configuração:

    ItemArquivo
    Riversoft STCP DirectLink/usr/local/stcpdirectlink/configs/config.json
    Riversoft STCP DirectLink Portal/usr/local/stcpdirectlink/static/portal/assets/configs/config.json
    Riversoft STCP Gemini API/usr/local/stcpgemini-api/configs/config.json
    Riversoft Console Portal/usr/local/stcpgemini-api/portal/app/configs/config.json
  • Arquivo de licença (applLicense) e arquivos de segredos referenciados na configuração.

  • Banco de configuração e banco de log, conforme as políticas de backup da organização.

  • Certificados e chaves usados pelos serviços.

Procedimento de atualização

Pare os serviços

Pare o Riversoft STCP DirectLink antes da API:

systemctl stop stcpdirectlink
systemctl stop stcpgemini-api

Atualize os pacotes

Atualize os metadados do repositório e os pacotes:

dnf clean all
dnf makecache
dnf upgrade stcpgemini-api stcpgemini-portal stcpdirectlink stcpdirectlink-portal

Para atualizar para uma versão específica, informe a versão no nome do pacote, por exemplo dnf upgrade stcpdirectlink-9.0.1.

Revise a configuração

Os arquivos de configuração em uso, inclusive o do Riversoft STCP DirectLink Portal, não são substituídos pela atualização. Compare cada config.json com o modelo (example-config.json) da nova versão para identificar parâmetros novos ou alterados, conforme as notas de versão. Se o gerenciador de pacotes criar arquivos com a extensão .rpmnew, compare-os com os arquivos em uso:

find /usr/local/stcpgemini-api /usr/local/stcpdirectlink -name "*.rpmnew"

Atualize o banco de dados, quando necessário

Quando a nova versão exigir alterações no banco de dados, as notas de versão informam os scripts e a ordem de execução. Execute-os com o acompanhamento da equipe de DBA.

Inicie os serviços

Inicie a API antes do Riversoft STCP DirectLink e confirme que os dois estão em execução:

systemctl start stcpgemini-api
systemctl start stcpdirectlink
systemctl status stcpgemini-api stcpdirectlink

Nota

Quando o Riversoft STCP Gemini também estiver instalado, a Riversoft STCP Gemini API e o Riversoft Console Portal são compartilhados pelos dois produtos: atualize-os uma única vez, antes dos produtos, conferindo nas notas de versão a compatibilidade entre as versões.

Validação após a atualização

  • rpm -q mostra a versão de destino de cada pacote.
  • systemctl status mostra running para a API e para o Riversoft STCP DirectLink, sem erros no log.
  • O Riversoft Console Portal abre e aceita o login.
  • O Riversoft STCP DirectLink Portal abre em /portal e aceita o login de um usuário de teste.
  • Um upload e um download de teste são concluídos pelo portal e pela API.
  • Os links seguros, as notificações e os conectores usados no ambiente funcionam.

Reversão (rollback)

Se a validação falhar e a causa não puder ser corrigida dentro da janela de manutenção:

  1. Pare os serviços.

  2. Volte os pacotes para a versão anterior registrada antes da atualização:

    dnf downgrade stcpgemini-api-<versão-anterior> stcpgemini-portal-<versão-anterior> stcpdirectlink-<versão-anterior> stcpdirectlink-portal-<versão-anterior>

    Também é possível desfazer a transação inteira com dnf history undo <id>, em que <id> é o identificador da transação mostrado em dnf history. Com yum, use yum downgrade e yum history undo.

  3. Restaure os arquivos de configuração do backup.

  4. Se scripts de banco tiverem sido executados, restaure o backup dos bancos de dados.

  5. Inicie os serviços e repita a validação.

Importante

A reversão depende de a versão anterior continuar disponível no repositório e de existir backup dos arquivos e dos bancos feito antes da atualização.

Migração da versão 8 para a versão 9

A migração da versão 8 para a versão 9 muda a forma de configuração e de autenticação e tem procedimento próprio, descrito nas seções a seguir. Ela é destinada aos administradores do ambiente e às equipes responsáveis pelas integrações com a API. Para outras versões, siga a atualização descrita acima e as notas de versão.

O que muda na versão 9

Na versão 8, parte da configuração operacional ficava no arquivo config.json. Na versão 9, a configuração passa a ser dividida entre o arquivo local e o banco de configuração da instância:

Origem na versão 9ConteúdoOnde é administrada
config.jsonInicialização local, conexão com os bancos, notificações, roteamento, KMS, telemetria e serviço.No servidor da aplicação. Veja Configuração.
Banco de configuraçãoConfiguração operacional da instância, JWT, SSO e lock externo.Riversoft Console Portal.

A versão 9 também consolida a autenticação da API:

MudançaEfeito
Rotas protegidas exigem token BearerUpload, listagens, relatório e logout deixam de aceitar Basic. Basic continua aceito somente no login (/auth/login).
API na versão v2O prefixo passa de /directlink/v1 para /directlink/v2, e a v1 não é mais atendida. Veja Migração da v1 para a v2.
Download de arquivo listado com token/download/file e /download/file/backup exigem o token Bearer ou o cookie de sessão do mesmo usuário que fez a listagem.
Campo time em ISO 8601As respostas da API informam a data e a hora no formato RFC 3339, por exemplo 2026-11-07T14:03:21-03:00.
Token aceito no header ou no cookieIntegrações usam Authorization: Bearer; o portal mantém a sessão no cookie __Host-dirl_session (HttpOnly, Secure, SameSite=Strict). O header tem prioridade.
/auth/token e /oauth2/token equivalentesOs dois endpoints emitem tokens por password grant ou token exchange, conforme os modos habilitados.
Token exchange com provedorO JWT de origem é validado pelo provedor informado no campo provider ou, como alternativa, no header X-STCPDIRECTLINK-JWT-ISSUER.
Identidade validadaO usuário identificado pelas credenciais ou claims precisa existir e corresponder ao perfil carregado da configuração.
Token de impersonaçãoIntegrações técnicas podem usar um token de longa duração, gerado na interface de supervisão, com identificador de sessão registrado.
Host validadoA API rejeita com 403 chamadas feitas por um host diferente do configurado para o serviço.
Cloudflare Turnstile (opcional)Login, primeiro acesso e recuperação de senha podem exigir a verificação da Cloudflare.

Parâmetros que saem do config.json

Os campos abaixo não devem ser copiados do config.json da versão 8. Na versão 9, eles são carregados da configuração da instância no banco:

Campo na versão 8Destino na versão 9
General.oauthTokenMethodJWTCfgInstance.Startup.JwtConfig.MethodName
General.oauthTokenExpireSecondsCfgInstance.Startup.JwtConfig.ExpirationTime
General.lockProvider.lockTypeCfgInstance.Startup.ExternalLock*
General.ssoProviders[]CfgInstance.Startup.SSOConfigs[]

Quando não informados, o método de assinatura dos tokens é HS256 e a expiração é de 3600 segundos. Sem lock externo configurado, a aplicação usa lock em sistema de arquivos no diretório local. Os campos de conexão com o banco de configuração (cfgProvider, cfgDbHost, cfgDbPort, cfgDbName, cfgDbUser e cfgDbPswd) não mudam.

Impacto nas integrações

Adeque os consumidores da API antes de liberar a versão 9:

Situação na versão 8Adequação para a versão 9
Cliente usando /directlink/v1Trocar o prefixo para /directlink/v2.
Download pelo linkURL sem tokenEnviar o token Bearer do mesmo usuário que fez a listagem.
Leitura do campo time no formato anteriorLer o campo no formato ISO 8601 (RFC 3339).
Basic enviado diretamente para /upload, /download/list ou /reportObter um token Bearer (login ou password grant) e enviar Authorization: Bearer <token>.
Token obtido por password grantConfirmar o modo habilitado, a rota, o formulário e a validade do novo token.
Token exchange sem providerInformar o provedor JWT no campo provider ou no header X-STCPDIRECTLINK-JWT-ISSUER.
Automação com token de longa duraçãoGerar e registrar um token de impersonação, proteger o segredo e testar a rotação.
Portal ou SPA recebendo o token pela URLUsar a sessão por cookie seguro emitida no login ou no SSO.
Cliente chamando rota ou método não registradoUsar o prefixo /directlink/v2 e o método indicado na referência da API.
Cliente acessando a API por outro nome de hostCorrigir URL, DNS, proxy ou header Host para o endereço configurado.

Antes de migrar

Levantamento da versão 8

  • Identifique a instância, o ambiente e o responsável pela mudança.
  • Faça uma cópia controlada do config.json da versão 8.
  • Registre o provider e os dados de conexão do banco de configuração.
  • Registre os serviços habilitados e os fluxos críticos de upload, download, autenticação e SSO.
  • Identifique as integrações que enviam Basic diretamente às rotas de transferência.
  • Identifique as integrações que usam password grant, token exchange ou token de longa duração, e os provedores e emissores dos tokens.
  • Liste os provedores SSO habilitados e o tipo de lock utilizado.
  • Registre o método e a expiração efetivos dos tokens JWT.
  • Defina uma janela de indisponibilidade e o plano de retorno.

Acessos e pré-requisitos

  • Acesso ao servidor da aplicação, ao banco de configuração e ao Riversoft Console Portal.
  • Backup do banco de configuração, do diretório de configuração e dos arquivos de controle.
  • Certificados, chaves e segredos disponíveis no mecanismo seguro do ambiente.
  • Espaço em disco e permissões do diretório da versão 9 conferidos.

Procedimento de migração

Prepare a versão 9

  1. Instale a versão 9 no diretório definido para a instância.
  2. Prepare o config.json da versão 9, ajustando somente os parâmetros locais: diretórios, licença, conexão com os bancos, KMS, telemetria, notificações e serviço.
  3. Remova do arquivo os parâmetros que passaram para o banco.
  4. Confira proprietário, grupo e permissões dos arquivos e valide o JSON (por exemplo, com jq empty).

Prepare a configuração no banco

  1. Abra a instância no Riversoft Console Portal.
  2. Confira a configuração JWT (método de assinatura, expiração e material de assinatura).
  3. Confira os modos de autenticação habilitados para a API.
  4. Confira os provedores usados por token exchange e impersonação, o provider de lock e os provedores SSO. Habilite somente os provedores realmente usados.
  5. Salve e registre a data, o responsável e o ambiente da mudança.

Adeque e teste as integrações

  1. Altere os consumidores que usam Basic nas rotas protegidas para Authorization: Bearer.
  2. Informe o provedor do token exchange.
  3. Confirme o prefixo /directlink/v2 e o host configurado para a API.
  4. Atualize o armazenamento seguro dos tokens técnicos.
  5. Execute os testes de autenticação antes dos testes de transferência.

Inicie e acompanhe

  1. Pare a versão 8 conforme o procedimento operacional.
  2. Inicie a versão 9 e acompanhe o log de inicialização.
  3. Confirme que a instância carregou o banco de configuração sem erros de JWT, lock ou SSO.
  4. Confirme que o serviço está disponível antes de liberar os usuários.

Validação após a migração

  • O serviço inicia sem erro de conexão com o banco de configuração.
  • O host usado pelos clientes corresponde ao configurado para a API.
  • O login local com Basic em /auth/login funciona, inclusive com MFA, quando aplicável.
  • Um token é emitido com o método e a expiração esperados; password grant e token exchange funcionam nos modos habilitados.
  • O token é aceito no header Authorization e a sessão do portal funciona pelo cookie.
  • O logout remove o cookie e encerra o acesso aos recursos protegidos.
  • O token de impersonação válido funciona e um identificador não registrado é rejeitado.
  • O login de cada provedor SSO habilitado funciona, e os callbacks OAuth 2.0 e SAML 2.0 chegam à versão 9.
  • Upload, listagens, download autenticado, download por link seguro e relatório funcionam.
  • Credencial ausente ou inválida é rejeitada, e um token válido com conexão bloqueada recebe 403.
  • As notificações habilitadas funcionam e os logs não apresentam erros de configuração, autenticação ou permissão.

Registre as evidências (horário, instância, versão, rota, status HTTP e resultado). Nunca registre token, cookie, senha, PIN ou segredo nas evidências.

Problemas comuns na migração

SintomaVerificações
A versão 9 não iniciaCaminho e validade do JSON, licença, permissões e log de inicialização.
Erro de conexão com o bancoHost, porta, usuário, senha, cfgDbName, opções TLS e firewall.
Tokens com método ou expiração inesperadosConfiguração JWT da instância no Riversoft Console Portal.
/auth/token rejeita o password grantModo habilitado, método POST, Content-Type, grant_type, usuário e senha.
Token exchange rejeitadogrant_type, subject_token_type, subject_token, provider, cadastro do provedor JWT, issuer e audience.
Token válido recebe 401Assinatura, issuer, audience, expiração, provedor e correspondência do usuário com o perfil.
Token válido recebe 403Host configurado, conexão bloqueada, janela de horário, comando de pré-conexão, serviço, filtros e locks.
Basic deixou de funcionar no upload, na listagem ou no relatórioO cliente ainda usa o contrato da versão 8. Obtenha um token e use Authorization: Bearer.
O cookie não mantém a sessão do portalPublicação HTTPS, domínio, atributos Secure e SameSite, proxy e relógio.
Login SSO não aparece ou o callback falhaProvedor habilitado, nome usado na rota, URLs cadastradas no provedor, certificados e relógio.
Alteração no Portal não aparece na aplicaçãoInstância correta, salvamento e reinício ou recarga do serviço.

Reversão da migração

Execute a reversão quando a versão 9 não puder ser estabilizada dentro da janela de mudança:

  1. Interrompa a versão 9 e preserve os logs da tentativa.
  2. Restaure o arquivo de configuração e o binário da versão 8.
  3. Confirme que a versão 8 aponta para a configuração e os serviços esperados e inicie-a.
  4. Restaure nos clientes o contrato de autenticação da versão 8, se ele tiver sido alterado.
  5. Valide autenticação, emissão de token, upload, download e os fluxos críticos.
  6. Registre as configurações alteradas no Portal. Preserve esses cadastros até a análise da falha.

Segurança durante a migração

  • Não compartilhe o config.json completo fora do grupo autorizado nem registre segredos em chamados, e-mails ou evidências.
  • Mantenha os tokens técnicos em cofre de segredos e defina a rotação.
  • Habilite somente os modos de autenticação necessários ao ambiente.
  • Publique o portal e a API por HTTPS para preservar o cookie Secure.
  • Use tls=skip-verify na conexão com o banco somente em ambientes controlados de teste. Veja Requisitos › Conexão com TLS.
  • Troque as credenciais que tenham sido expostas.