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
- 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.
- Windows: na linha de comandos ou no PowerShell, escrevam «winget install FiloSottile.age».
- macOS: «brew install age». Linux: através do gestor de pacotes, p. ex. «sudo apt install age».
- 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
- Abram o separador «Automática» da exportação completa e cliquem em «Configurar encriptação».
- Escolham «Chave pública (recomendado)» e colem a linha que começa por age1.
- Cliquem em «Criar ficheiro de teste». É guardado o pequeno ficheiro test-automatischer-export.txt.age.
- 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.
- 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.
- 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
- 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).
- 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í.
- Cliquem em «Criar chave de exportação» e introduzam o código do e-mail.
- A chave é mostrada uma única vez. Guardem-na de imediato num local seguro para o script – não no próprio script.
- 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
- 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).
- Abram o Agendador de Tarefas → «Criar Tarefa» → nome «Cópia do clube», «Executar quer o utilizador tenha sessão iniciada ou não».
- Acionador: diário, p. ex. às 03:30. Ação: programa «powershell.exe», argumentos «-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\backup-export.ps1».
- 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
- 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».
- Guardem o script como /volume1/scripts/backup-export.sh e tornem-no executável («chmod 700»).
- 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.
- Em Linux basta uma entrada no crontab: «30 3 * * * /volume1/scripts/backup-export.sh».
Sem script: nós carregamos para o vosso destino
- Em «Destino», escolham o tipo: WebDAV (Nextcloud, Synology com o pacote WebDAV Server, porta https 5006), SFTP ou S3.
- 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.
- 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.
- S3: endpoint (vazio = Amazon), região, bucket e um acesso que só possa escrever (PutObject) – não precisa de ler nem de apagar.
- Escolham a frequência (diária ou semanal) e a hora – aplica-se no fuso horário do vosso clube.
- «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.
- 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.