Configuração avançada

O Databasus já vem com valores padrão sensatos: uma instalação típica de container único não precisa de nenhuma configuração. Cada variável desta página é opcional e desnecessária em 99% dos ambientes de produção.

OAuth

Por padrão o Databasus usa login com email e senha. Você também pode permitir o login com conta Google ou GitHub. O botão de um provedor aparece assim que o seu client ID é definido, mas o login só se completa quando tanto o client ID quanto o client secret estão presentes.

Ao registrar a aplicação OAuth, defina a URL de redirecionamento (callback) como https://<your-domain>/auth/callback. Por causa desse redirecionamento, o login OAuth exige que a sua instância seja servida por HTTPS num domínio público — veja a nota abaixo.

HTTPS é obrigatório para login e email. Tanto o login OAuth quanto o email precisam que a sua instância esteja acessível por HTTPS num domínio público: os provedores OAuth redirecionam o navegador de volta para https://<your-domain>/auth/callback, e os links dentro dos emails precisam abrir para quem os recebe. Uma instância apenas em localhost ou em HTTP puro não pode usar esses recursos. A forma mais simples de obter HTTPS é a configuração do reverse proxy Caddy.

Google

Crie um cliente OAuth no Google Cloud Console (APIs & Services → Credentials → Create credentials → OAuth client ID, tipo de aplicação Web application) e adicione https://<your-domain>/auth/callback como URI de redirecionamento autorizada.

VariávelDescrição
GOOGLE_CLIENT_IDClient ID do seu cliente OAuth do Google. Defini-lo faz aparecer o botão "Sign in with Google".
GOOGLE_CLIENT_SECRETClient secret do seu cliente OAuth do Google. Necessário junto com o ID para o login funcionar.

GitHub

Crie uma aplicação OAuth em GitHub Developer settings (Settings → Developer settings → OAuth Apps → New OAuth App) e defina a URL de callback de autorização como https://<your-domain>/auth/callback.

VariávelDescrição
GITHUB_CLIENT_IDClient ID da sua aplicação OAuth do GitHub. Defini-lo faz aparecer o botão "Sign in with GitHub".
GITHUB_CLIENT_SECRETClient secret da sua aplicação OAuth do GitHub. Necessário junto com o ID para o login funcionar.

Email (SMTP)

Conecte um servidor de e-mail para que o Databasus possa enviar convites para espaços de trabalho, códigos de redefinição de senha e códigos de acesso. O servidor de e-mail é considerado configurado assim que SMTP_HOST é definido. Sem ele, a tela de configurações informa que o servidor de e-mail não está configurado, e a tela de login esconde o link de redefinição de senha.

Este é o servidor de e-mail da instância. Os canais de notificação por e-mail, que avisam sobre os backups, têm configurações SMTP próprias no formulário de cada canal. Por isso, um canal de notificação que entrega e-mails não diz nada sobre este servidor. Para testar o servidor de e-mail da instância, abra Databasus settings → Mail server e clique em Send test email. A mensagem vai para o seu próprio endereço e, se a entrega falhar, você vê a resposta do servidor de e-mail.

Se o seu relay não oferece STARTTLS, defina SMTP_SECURITY=none antes de atualizar. Em qualquer porta diferente da 465, o modo padrão é starttls, que não continua sem criptografia, então esse relay não recebe nada até a variável ser definida. Se a instância exige o código de acesso por e-mail, ninguém entra com senha enquanto os e-mails não forem entregues. Para recuperar o acesso, desative o segundo fator com docker exec -it databasus ./main --disable-2fa (veja Parar de pedir um código no login).

VariávelDescrição
SMTP_HOSTHost do servidor de e-mail (por exemplo, smtp.gmail.com). Definir esta variável ativa o e-mail da instância.
SMTP_PORTPorta do servidor de e-mail (por exemplo, 587). Precisa ser um inteiro positivo quando SMTP_HOST está definido.
SMTP_SECURITYSegurança da conexão: tls, starttls ou none, descritos abaixo. O padrão é tls na porta 465 e starttls em qualquer outra porta. Com outro valor, a instância não inicia.
SMTP_USERNome de usuário para a autenticação SMTP.
SMTP_PASSWORDSenha para a autenticação SMTP. No Gmail, use uma App Password, não a senha da conta.
SMTP_FROMEndereço do remetente, só o endereço (noreply@example.com) ou com um nome (Acme Backups <noreply@example.com>). Sem nome, os destinatários veem Databasus. Quando não está definido, é usado SMTP_USER se ele for um endereço de e-mail; caso contrário, noreply@ seguido de SMTP_HOST, então um usuário como apikey nunca vira o remetente. Se o valor não puder ser lido como endereço, a instância não inicia.
SMTP_HELO_NAMEO nome com que a instância se apresenta ao servidor de e-mail. O padrão é o host de DATABASUS_URL e, na falta dele, o nome da máquina. Precisa ser um nome de host ou um literal de endereço como [192.0.2.1] ou [IPv6:2001:db8::1]; caso contrário, a instância não inicia.
SMTP_INSECURE_SKIP_VERIFYDefina como true para pular a verificação do certificado TLS nos modos tls e starttls. O padrão é false. Use apenas para servidores com certificado autoassinado numa rede confiável: desativa a proteção contra ataques man-in-the-middle.
DATABASUS_URLURL base pública da sua instância (por exemplo, https://backup.example.com). Opcional: adiciona um link aos e-mails de convite e fornece o nome de saudação padrão. O e-mail funciona sem ela.

SMTP_SECURITY escolhe um de três modos. Os canais de notificação por e-mail oferecem a mesma escolha em Advanced settings.

ModoComportamento
tlsA conexão é criptografada desde o primeiro byte. Comum na porta 465.
starttlsA conexão começa sem criptografia e passa a ser criptografada antes do envio da senha ou de qualquer mensagem. Se o servidor não oferecer esse recurso, a entrega falha em vez de continuar sem criptografia. Comum na porta 587.
noneA conexão nunca é criptografada. Use para um relay que não oferece STARTTLS, como um Postfix local na porta 25.

none envia a senha SMTP e todas as mensagens sem criptografia, e qualquer pessoa entre o Databasus e o relay consegue lê-las. Use apenas com um relay no mesmo host ou numa rede privada confiável.

Captcha no registro (Cloudflare Turnstile)

Se a sua instância está acessível pela internet pública, você pode colocar um desafio do Cloudflare Turnstile nos formulários de registro e de login para barrar bots. As duas chaves vêm do painel do Turnstile, e o desafio só é ativado quando ambas estão definidas.

Para bloquear registros externos por completo, em vez de apenas desafiá-los, você não precisa de captcha nenhum: abra Databasus settings → Allow sign up na interface e desligue a opção. Isso fecha completamente o formulário de registro.

VariávelDescrição
CLOUDFLARE_TURNSTILE_SITE_KEYChave pública do site no Turnstile, usada para renderizar o widget no navegador.
CLOUDFLARE_TURNSTILE_SECRET_KEYChave secreta do Turnstile, usada pelo backend para validar as respostas ao desafio.

Permissões do armazenamento Docker

O Databasus normalmente usa os IDs numéricos do usuário e do grupo do diretório pgdata existente, depois do mount de backups ou da raiz de dados e, por fim, usa 999. Defina PUID ou PGID apenas quando essa escolha automática não servir para seu bind mount, compartilhamento CIFS ou exportação NFS. Os valores devem ser inteiros decimais de 1 a 4294967294.

VariávelValor automáticoConta
PUIDProprietário do mount ou 999Usuário databasus
PGIDGrupo do mount ou 999Grupo principal databasus

Databasus e PostgreSQL usam a mesma conta do sistema operacional sem privilégios root chamada databasus.

O entrypoint começa como root dentro do contêiner para escolher os IDs e tentar executar chown e chmod. Em seguida, ele verifica todo o ciclo de arquivos como databasus. Um mount pode funcionar mesmo que recuse mudanças de proprietário ou modo. Um valor arbitrário de Docker user: não é aceito.

ERROR: Databasus cannot write to local storage paths /databasus-data/temp and /databasus-data/backups as UID 999 and GID 999.
Required operation: save a file through local storage.
Set PUID and PGID or fix the mounted directory permissions: https://databasus.com/advanced-config/#docker-storage-permissions
Details: permission denied

As quatro variáveis anteriores específicas de cada serviço foram removidas de propósito. Remova-as da configuração ao atualizar. Se os IDs automáticos não conseguirem acessar um mount, a inicialização será interrompida e mostrará a operação que falhou e o link para esta documentação.

Telemetria

O Databasus envia por padrão telemetria de uso anônima e não identificável. Ela não carrega dados pessoais e nos ajuda a entender como o projeto é usado. Você pode ler exatamente o que é coletado na política de privacidade, e pode desativá-la por completo.

VariávelPadrãoDescrição
IS_DISABLE_ANONYMOUS_TELEMETRYfalseDefina como true para desativar a telemetria de uso anônima.

Logs

O Databasus escreve os seus logs no stdout e os espelha como JSON em databasus.log no volume de dados. Defina OPEN_TELEMETRY_URL e ele também os exporta por OpenTelemetry para um backend como VictoriaLogs, Graylog, SigNoz, Grafana Loki, Datadog ou Honeycomb, ou para um OpenTelemetry Collector, que é ele próprio um receptor OTLP.

  • O transporte segue o esquema da URL. http:// e https:// enviam OTLP/HTTP e usam a URL tal como está, caminho incluído; grpc:// e grpcs:// enviam OTLP/gRPC e usam apenas o host e a porta.
  • A autenticação vai em OPEN_TELEMETRY_HEADERS ou na própria URL como user:password@host.
  • Segredos (senhas, tokens, credenciais) dentro de URLs são censurados antes de uma entrada de log sair do processo.
  • As entradas de auditoria seguem junto com os logs da aplicação marcadas com log_type=audit e ignoram LOG_LEVEL, então subir o nível nunca descarta a trilha de auditoria.
VariávelPadrãoDescrição
OPEN_TELEMETRY_URL—URL completa do endpoint OTLP, incluindo o caminho. Deixe sem definir para manter os logs no container. Uma query string, um host ausente ou um esquema desconhecido impede o container de iniciar, em vez de exportar para lugar nenhum.
OPEN_TELEMETRY_HEADERS—Pares key=value separados por vírgula, enviados em cada exportação, normalmente uma chave de API. Os valores são decodificados de percent-encoding, seguindo o formato padrão OTEL_EXPORTER_OTLP_HEADERS.
LOG_LEVELinfoUm de debug, info, warn ou error. Um valor não reconhecido volta a info.
LOG_FILE_IS_ENABLEDtrueEscreve databasus.log junto com o resto dos dados, com rotação a 5 MB e 3 versões antigas guardadas. Defina como false se a sua plataforma já coleta o stdout.

Valores para backends comuns, cada um com o cabeçalho que o autentica. Substitua hosts, regiões e chaves pelos seus:

BackendOPEN_TELEMETRY_URLOPEN_TELEMETRY_HEADERS
VictoriaLogshttp://victoria-logs:9428/insert/opentelemetry/v1/logsAuthorization=Basic%20dXNlcjpwYXNzd29yZA== — as credenciais que o seu vmauth ou reverse proxy espera, já que o próprio VictoriaLogs não tem autenticação no caminho de ingestão.
OpenTelemetry Collectorgrpc://otel-collector:4317Authorization=Bearer%20your-token — corresponde a uma extensão bearertokenauth ou basicauth no receptor. Um Collector acessível apenas dentro da sua rede normalmente não precisa de nenhum.
Graylog 6.2+grpc://graylog:4317Authorization=Bearer%20your-token — o token definido no input OpenTelemetry (gRPC). O input também aceita mTLS em alternativa.
SigNoz Cloudgrpcs://ingest.eu.signoz.cloud:443signoz-ingestion-key=your-ingestion-key
Grafana Cloudhttps://otlp-gateway-prod-eu-west-0.grafana.net/otlp/v1/logsAuthorization=Basic%20<base64> — base64 de instance-id:api-token
Honeycombhttps://api.honeycomb.io/v1/logsx-honeycomb-team=your-api-key
Datadog Agentgrpc://datadog-agent:4317Nenhum — o Agent guarda a chave de API e reenvia por conta própria.

Os valores dos cabeçalhos são decodificados de percent-encoding, então o espaço depois de Basic ou Bearer se escreve como %20 e uma vírgula dentro de um valor como %2C. A autenticação Basic também pode ir direto na URL como https://user:password@host/path — o Databasus a transforma no mesmo cabeçalho e a mantém fora dos logs. Por http:// e grpc:// as chaves e senhas viajam em claro, então use https:// ou grpcs:// fora de uma rede confiável.

Script de análise

O Databasus pode injetar na aplicação o seu próprio snippet de análise ou rastreamento: Google Analytics, Plausible, Umami e semelhantes. Quando ANALYTICS_SCRIPT está definido, o seu valor é inserido no <head> da página na inicialização.

Aviso de segurança: o valor é injetado tal como está, como HTML e JavaScript puros, e executa com acesso total à interface do Databasus no navegador de cada visitante. Só o defina com um snippet que controla e no qual confia totalmente.

VariávelDescrição
ANALYTICS_SCRIPTMarcação <script> própria injetada antes da tag de fechamento </head>. Deixe sem definir para não adicionar nenhuma análise.