Saltar para o conteúdo

Guia

Faz parte de: Clube e acesso

Exportação automática: cópias de segurança encriptadas

Com a exportação automática (pacote Pro), a exportação completa do vosso clube chega-vos regularmente – recolhida por um script ou carregada por nós para o vosso destino. Vai sempre encriptada com a vossa própria chave: quem intercetar o ficheiro não o consegue ler, e connosco fica no máximo 24 horas.

10 minutos de leitura

Antes de mais: sem chave privada não há cópia de segurança

  • Cada exportação automática é encriptada com o age. Só se abre com a vossa chave privada (o ficheiro club-backup.key) ou com a vossa palavra-passe. Se ambas se perderem, todas as cópias ficam ilegíveis – nem nós as conseguimos recuperar.
  • Guardem por isso a chave privada em dois locais seguros (p. ex. uma pen USB encriptada no cofre do clube e o gestor de palavras-passe da direção) – mas não no computador ou no NAS onde estão as cópias.
  • A exportação automática só é configurada pelo proprietário. Cada configuração é confirmada com um código que enviamos para o endereço do proprietário.

Como funciona

  • Pacote Pro: a exportação automática faz parte do pacote Pro. A exportação completa manual com código de utilização única continua gratuita em todos os níveis.
  • Dois caminhos: uma chave de exportação permite a um script do vosso lado (Agendador de Tarefas do Windows, Synology, Linux) recolher a exportação. Ou indicam um destino (WebDAV/Nextcloud, SFTP, S3) e nós carregamos a exportação segundo um horário.
  • No máximo uma exportação automática por dia e por clube – recolha e carregamento em conjunto.
  • Sempre encriptada: a exportação é encriptada logo do nosso lado, antes de ser guardada. Depois da recolha ou do carregamento eliminamo-la de imediato; caso contrário, após 24 horas.
  • Depois de cada exportação automática, o proprietário recebe um e-mail com hora, tamanho e endereço – ou, se preferir, um resumo semanal.
  • Configura-se na Administração (/admin) em «Organização» → «Dados base» → «Exportação completa» → separador «Automática», na WebApp ou na app em «Definições» → «Área admin» → «Dados base».

Instalar o age

  1. O age é um pequeno programa de encriptação livre e gratuito (age-encryption.org). Precisam dele no computador onde criam a chave e abrem as cópias – não no NAS que apenas as recolhe.
  2. Windows: na linha de comandos ou no PowerShell, escrevam «winget install FiloSottile.age».
  3. macOS: «brew install age». Linux: através do gestor de pacotes, p. ex. «sudo apt install age».
  4. Verificar: «age --version» mostra a versão instalada.

Criar a chave

age-keygen -o club-backup.key
Public key: age1…   ← é esta a linha que introduzem na Administração

Configurar a encriptação – passo a passo

  1. Abram o separador «Automática» da exportação completa e cliquem em «Configurar encriptação».
  2. Escolham «Chave pública (recomendado)» e colem a linha que começa por age1.
  3. Cliquem em «Criar ficheiro de teste». É guardado o pequeno ficheiro test-automatischer-export.txt.age.
  4. Desencriptem-no do vosso lado: «age -d -i club-backup.key test-automatischer-export.txt.age». Aparece uma palavra de verificação como K7Q4-M2XD.
  5. Introduzam a palavra de verificação e cliquem em «Confirmar palavra de verificação». Enviamos um código ao proprietário; com o código, a encriptação fica ativa.
  6. Assim fica garantido que conseguem mesmo abrir as vossas cópias – uma chave mal copiada nota-se agora, e não numa emergência.

Palavra-passe em vez de chave

Em vez de uma chave, também é possível usar uma palavra-passe com pelo menos 12 caracteres. O ficheiro abre-se então com «age -d ficheiro.zip.age»; o age pede a palavra-passe.

Tenham em conta: para encriptar, o nosso servidor tem de conhecer a palavra-passe. Guardamo-la apenas encriptada, mas o operador poderia tecnicamente desencriptá-la. Com uma chave pública isso é impossível – por isso recomendamos a chave.

Criar uma chave de exportação para um script

  1. Em «Chaves de exportação», introduzam uma designação, p. ex. «NAS na sede do clube», e escolham a validade (no máximo 12 meses).
  2. Opcional: se tiverem um endereço IP fixo, introduzam-no em «só a partir destes endereços IP» – a chave passa a funcionar só a partir daí.
  3. Cliquem em «Criar chave de exportação» e introduzam o código do e-mail.
  4. A chave é mostrada uma única vez. Guardem-na de imediato num local seguro para o script – não no próprio script.
  5. Avisamos por e-mail 30 e 7 dias antes de expirar. «Renovar» cria uma chave nova; a antiga continua válida mais 7 dias, para poderem alterar o script com calma.

Windows: script para o Agendador de Tarefas (PowerShell)

# backup-export.ps1 – recolhe a exportação completa encriptada
# Install-Module CredentialManager -Scope CurrentUser   (einmalig / once)
# New-StoredCredential -Target 'drinklist-export' -UserName export -Password '<Export-Schlüssel / export key>' -Persist LocalMachine
$key  = (Get-StoredCredential -Target 'drinklist-export').GetNetworkCredential().Password
$base = 'https://drinklist.app/api/v1'
$h    = @{ Authorization = "Bearer $key" }
$export = Invoke-RestMethod -Method Post -Uri "$base/exports" -Headers $h
do { Start-Sleep -Seconds 30; $state = Invoke-RestMethod -Uri "$base/exports/$($export.id)" -Headers $h } while ($state.status -in 'Waiting','Running')
if ($state.status -ne 'Ready') { throw "Export: $($state.status)" }
$file = "D:\Backup\Verein\komplettexport-$(Get-Date -Format yyyy-MM-dd).zip.age"
Invoke-WebRequest -Uri "$base/exports/$($export.id)/download" -Headers $h -OutFile $file
# Abrir só quando for preciso, num computador de confiança: age -d -i club-backup.key -o export.zip <ficheiro>

Configurar o Agendador de Tarefas do Windows

  1. Guardem o script como backup-export.ps1, p. ex. em C:\Scripts. Guardem uma vez a chave de exportação com New-StoredCredential no Gestor de Credenciais do Windows (linhas 2 e 3 do script).
  2. Abram o Agendador de Tarefas → «Criar Tarefa» → nome «Cópia do clube», «Executar quer o utilizador tenha sessão iniciada ou não».
  3. Acionador: diário, p. ex. às 03:30. Ação: programa «powershell.exe», argumentos «-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\backup-export.ps1».
  4. Executem-no uma vez à mão e verifiquem se aparece um ficheiro *.zip.age na pasta de cópias.

Synology/NAS ou Linux: script para cron

#!/bin/sh
# backup-export.sh – recolhe a exportação completa encriptada
set -eu
KEY=$(cat /volume1/scripts/.drinklist-export-key)   # chmod 600
BASE=https://drinklist.app/api/v1
ID=$(curl -fsS -X POST -H "Authorization: Bearer $KEY" "$BASE/exports" | sed -n 's/.*"id":\([0-9]*\).*/\1/p')
while :; do
  STATUS=$(curl -fsS -H "Authorization: Bearer $KEY" "$BASE/exports/$ID" | sed -n 's/.*"status":"\([A-Za-z]*\)".*/\1/p')
  [ "$STATUS" = "Ready" ] && break
  case "$STATUS" in Waiting|Running) sleep 30 ;; *) echo "Export: $STATUS" >&2; exit 1 ;; esac
done
curl -fsS -H "Authorization: Bearer $KEY" -o "/volume1/backup/verein/export-$(date +%F).zip.age" "$BASE/exports/$ID/download"
# O NAS não precisa do age – os ficheiros só se abrem num computador de confiança

Synology: configurar o Agendador de tarefas

  1. Escrevam a chave de exportação num ficheiro (p. ex. /volume1/scripts/.drinklist-export-key) e tornem-no legível apenas para o utilizador de cópias com «chmod 600».
  2. Guardem o script como /volume1/scripts/backup-export.sh e tornem-no executável («chmod 700»).
  3. Painel de controlo → Agendador de tarefas → Criar → Tarefa agendada → Script definido pelo utilizador; utilizador: o utilizador de cópias; agendamento: diário às 03:30; comando: /volume1/scripts/backup-export.sh.
  4. Em Linux basta uma entrada no crontab: «30 3 * * * /volume1/scripts/backup-export.sh».

Sem script: nós carregamos para o vosso destino

  1. Em «Destino», escolham o tipo: WebDAV (Nextcloud, Synology com o pacote WebDAV Server, porta https 5006), SFTP ou S3.
  2. Nextcloud: usem o endereço da pasta, p. ex. https://cloud.club.org/remote.php/dav/files/backup/drinklist/, e uma palavra-passe de aplicação de um utilizador de cópias próprio. Criem antes a pasta.
  3. SFTP: introduzam servidor, porta (22 ou 2222), pasta, utilizador e palavra-passe ou uma chave SSH privada. Memorizamos a chave do servidor no primeiro teste – se mudar, paramos por motivos de segurança.
  4. S3: endpoint (vazio = Amazon), região, bucket e um acesso que só possa escrever (PutObject) – não precisa de ler nem de apagar.
  5. Escolham a frequência (diária ou semanal) e a hora – aplica-se no fuso horário do vosso clube.
  6. «Testar ligação e configurar»: escrevemos um pequeno ficheiro de teste. Se funcionar, o código segue para o proprietário; com o código, o destino fica ativo.
  7. Se o carregamento falhar, tentamos mais três vezes e enviamos um e-mail. Após três execuções falhadas seguidas, colocamos o destino em pausa até o voltarem a ativar.

Abrir uma cópia (desencriptar)

age -d -i club-backup.key -o full-export.zip komplettexport-2026-10-07.zip.age
age -d -o full-export.zip komplettexport-2026-10-07.zip.age   # variante com palavra-passe

A segurança num relance

  • Uma chave de exportação só pode recolher a exportação encriptada – nada de contas, registos ou outros dados.
  • Só o proprietário a pode criar, com confirmação por código enviado por e-mail; os administradores e o suporte não podem criar chaves de exportação.
  • Acessos a partir de um país novo ou pedidos recusados repetidos colocam a chave em pausa; o proprietário recebe um e-mail e pode voltar a ativá-la ou revogá-la.
  • Se a organização estiver bloqueada por uma infração, a exportação automática fica em pausa; a exportação manual na Administração continua disponível.
  • Se o proprietário mudar, as chaves e os destinos mantêm-se. O novo proprietário recebe um e-mail e pode revogá-los e configurar novamente a encriptação.

Se não funcionar

  • 429 «only one automatic export per day»: hoje já houve uma exportação automática – amanhã volta a funcionar.
  • 403 «export key paused»: a deteção de abusos colocou a chave em pausa. O proprietário volta a ativá-la na Administração com «Voltar a ativar».
  • 409 na transferência: a exportação já foi recolhida ou foi eliminada após 24 horas – peçam uma nova no dia seguinte.
  • 423: a organização está bloqueada; contactem o suporte.
  • Em vez de consultar a partir do script, um webhook pode comunicar o evento «export.ready» (Administração → Integrações).

Não conseguiu avançar?

Se um guia deixar uma dúvida em aberto ou algo parecer diferente do descrito, abra um ticket: respondemos dentro dele. O suporte funciona apenas por tickets, não por e-mail.