tpr-webmodule) de cada pod do Ayakaleaf Pro. Registre o cliente OAuth do Zotero como em Integração com Zotero, com a URL de callback ${OVERLEAF_SITE_URL}/user/zotero/oauth/callback, e depois configure o Kubernetes como abaixo.
Configuração
1
ConfigMap
30-config.yaml (changes)
ENABLED_LINKED_FILE_TYPES substitui o valor da instalação; mantenha os tipos que você já tem e adicione zotero (e mendeley, se usar ambos).2
Secret
ZOTERO_CIPHER_PASSWORD criptografa as chaves do Zotero dos usuários no MongoDB. Sem ele, cada pod gera um arquivo de chave no seu próprio /var/lib/overleaf/data. Com várias réplicas, cada nó passa a ter uma chave diferente, e um usuário atendido por outra réplica não consegue usar sua conta do Zotero vinculada. Defina-o antes que o primeiro usuário vincule o Zotero: alterá-lo depois faz com que todos os usuários precisem vincular o Zotero novamente.3
Aplicar e reiniciar
Várias réplicas
DefinaZOTERO_CIPHER_PASSWORD no Secret, veja acima. Sem ele, um arquivo importado em uma réplica não pode ser atualizado em outra: a atualização falha com “The remote service produced an error”, porque o arquivo de chave dessa réplica não consegue descriptografar a chave do Zotero do usuário. Com a senha no Secret, funciona em todas as réplicas; testamos os dois casos importando em overleaf-0 e atualizando em overleaf-1. O handshake OAuth mantém seu estado na sessão no Redis, então o callback pode chegar a qualquer réplica.
Testado no Kubernetes
Contra um mock do www.zotero.org e do api.zotero.org (confiável por meio deNODE_EXTRA_CA_CERTS a partir de overleaf-certs), no Kubernetes 1.37 com três réplicas atrás do HAProxy, nossos testes ponta a ponta do Zotero são aprovados (18 casos): vincular via OAuth 1.0a e desvincular, importar a biblioteca e os grupos para um arquivo .bib, atualizá-lo, revogar a chave no Zotero, solicitação para vincular novamente, referências pesquisáveis pelos colaboradores, somente quem importou pode atualizar, erros da API e conexões lentas com o Zotero.
