Configuration avancée

Databasus fonctionne d'emblée avec des valeurs par défaut raisonnables : une installation standard en un seul conteneur ne demande aucune configuration. Chaque variable de cette page est optionnelle et inutile dans 99 % des déploiements en production.

OAuth

Par défaut, Databasus utilise la connexion par e-mail et mot de passe. Vous pouvez en plus permettre la connexion avec un compte Google ou GitHub. Le bouton d'un fournisseur apparaît dès que son client ID est défini, mais la connexion n'aboutit que lorsque les deux valeurs, client ID et client secret, sont présentes.

Quand vous enregistrez l'application OAuth, définissez son URL de redirection (callback) sur https://<your-domain>/auth/callback. À cause de cette redirection, la connexion OAuth exige que votre instance soit servie en HTTPS sur un domaine public (voir la note ci-dessous).

HTTPS est requis pour la connexion et l'e-mail. La connexion OAuth et l'e-mail exigent tous deux que votre instance soit joignable en HTTPS sur un domaine public : les fournisseurs OAuth redirigent le navigateur vers https://<your-domain>/auth/callback, et les liens contenus dans les e-mails doivent s'ouvrir chez leurs destinataires. Une instance limitée à localhost ou en HTTP simple ne peut pas utiliser ces fonctionnalités. Le moyen le plus simple d'obtenir HTTPS est la configuration reverse proxy Caddy.

Google

Créez un client OAuth dans la Google Cloud Console (APIs & Services → Credentials → Create credentials → OAuth client ID, type d'application Web application) et ajoutez https://<your-domain>/auth/callback comme URI de redirection autorisée.

VariableDescription
GOOGLE_CLIENT_IDClient ID de votre client OAuth Google. Le définir affiche le bouton "Sign in with Google".
GOOGLE_CLIENT_SECRETClient secret de votre client OAuth Google. Requis avec le client ID pour que la connexion fonctionne.

GitHub

Créez une application OAuth dans les paramètres développeur GitHub (Settings → Developer settings → OAuth Apps → New OAuth App) et définissez l'URL de callback d'autorisation sur https://<your-domain>/auth/callback.

VariableDescription
GITHUB_CLIENT_IDClient ID de votre application OAuth GitHub. Le définir affiche le bouton "Sign in with GitHub".
GITHUB_CLIENT_SECRETClient secret de votre application OAuth GitHub. Requis avec le client ID pour que la connexion fonctionne.

E-mail (SMTP)

Connectez un serveur de messagerie pour que Databasus puisse envoyer les invitations aux espaces de travail, les codes de réinitialisation du mot de passe et les codes de connexion. Le serveur de messagerie est considéré comme configuré dès que SMTP_HOST est défini. Sans lui, l'écran des paramètres indique que le serveur de messagerie n'est pas configuré, et l'écran de connexion masque le lien de réinitialisation du mot de passe.

Il s'agit du serveur de messagerie de l'instance. Les canaux de notification par e-mail, qui signalent les sauvegardes, ont leurs propres paramètres SMTP dans le formulaire de chaque canal : un canal de notification qui délivre ses e-mails ne dit donc rien de ce serveur. Pour vérifier le serveur de messagerie de l'instance, ouvrez Databasus settings → Mail server et cliquez sur Send test email. Le message part vers votre propre adresse et, si la livraison échoue, vous voyez la réponse du serveur de messagerie.

Si votre relais ne propose pas STARTTLS, définissez SMTP_SECURITY=none avant la mise à jour. Sur tout port autre que 465, le mode par défaut est starttls, qui refuse de continuer sans chiffrement : un tel relais ne reçoit donc rien tant que la variable n'est pas définie. Si l'instance exige le code de connexion envoyé par e-mail, personne ne peut se connecter par mot de passe tant que les e-mails ne partent pas. Pour retrouver l'accès, désactivez le second facteur avec docker exec -it databasus ./main --disable-2fa (voir Cesser de demander un code à la connexion).

VariableDescription
SMTP_HOSTNom d'hôte du serveur de messagerie (par ex. smtp.gmail.com). Le définir active l'e-mail de l'instance.
SMTP_PORTPort du serveur de messagerie (par ex. 587). Doit être un entier positif quand SMTP_HOST est défini.
SMTP_SECURITYSécurité de la connexion : tls, starttls ou none, décrits plus bas. Vaut tls par défaut sur le port 465 et starttls sur tous les autres. Avec toute autre valeur, l'instance refuse de démarrer.
SMTP_USERNom d'utilisateur pour l'authentification SMTP.
SMTP_PASSWORDMot de passe pour l'authentification SMTP. Pour Gmail, utilisez un App Password, pas le mot de passe de votre compte.
SMTP_FROMAdresse de l'expéditeur, seule (noreply@example.com) ou avec un nom (Acme Backups <noreply@example.com>). Sans nom, les destinataires voient Databasus. Si elle n'est pas définie, SMTP_USER est utilisé s'il s'agit d'une adresse e-mail, sinon noreply@ suivi de SMTP_HOST : un nom d'utilisateur comme apikey ne devient donc jamais l'expéditeur. Si la valeur ne peut pas être lue comme une adresse, l'instance refuse de démarrer.
SMTP_HELO_NAMELe nom sous lequel l'instance se présente au serveur de messagerie. Par défaut, l'hôte de DATABASUS_URL, ou à défaut le nom de la machine. Doit être un nom d'hôte ou un littéral d'adresse comme [192.0.2.1] ou [IPv6:2001:db8::1], sinon l'instance refuse de démarrer.
SMTP_INSECURE_SKIP_VERIFYMettez true pour ignorer la vérification du certificat TLS dans les modes tls et starttls. Vaut false par défaut. À réserver aux serveurs avec un certificat auto-signé sur un réseau de confiance : cette option désactive la protection contre les attaques de l'homme du milieu.
DATABASUS_URLURL de base publique de votre instance (par ex. https://backup.example.com). Facultative : elle ajoute un lien aux e-mails d'invitation et fournit le nom annoncé par défaut. L'e-mail fonctionne sans elle.

SMTP_SECURITY choisit l'un des trois modes. Les canaux de notification par e-mail proposent le même choix dans Advanced settings.

ModeComportement
tlsLa connexion est chiffrée dès le premier octet. Habituel sur le port 465.
starttlsLa connexion démarre en clair puis passe en chiffré avant l'envoi du mot de passe ou de tout message. Si le serveur ne le propose pas, la livraison échoue au lieu de continuer sans chiffrement. Habituel sur le port 587.
noneLa connexion n'est jamais chiffrée. À utiliser pour un relais qui ne propose pas STARTTLS, comme un Postfix local sur le port 25.

none envoie le mot de passe SMTP et chaque message en clair, et toute personne placée entre Databasus et le relais peut les lire. Ne l'utilisez qu'avec un relais sur le même hôte ou sur un réseau privé de confiance.

Captcha à l'inscription (Cloudflare Turnstile)

Si votre instance est joignable depuis l'internet public, vous pouvez placer un défi Cloudflare Turnstile sur les formulaires d'inscription et de connexion pour tenir les bots à l'écart. Les deux clés viennent du tableau de bord Turnstile, et le défi ne s'active que lorsque les deux sont définies.

Pour bloquer complètement les inscriptions externes au lieu de simplement les filtrer, vous n'avez pas besoin de captcha : ouvrez Databasus settings → Allow sign up dans l'interface et désactivez l'option. Cela ferme entièrement le formulaire d'inscription.

VariableDescription
CLOUDFLARE_TURNSTILE_SITE_KEYClé de site Turnstile publique, utilisée pour afficher le widget dans le navigateur.
CLOUDFLARE_TURNSTILE_SECRET_KEYClé Turnstile secrète, utilisée par le backend pour valider les réponses au défi.

Permissions du stockage Docker

Databasus prend normalement les ID numériques de l'utilisateur et du groupe dans le répertoire pgdata existant, puis dans le mount des sauvegardes ou la racine des données. À défaut, il utilise 999. Définissez PUID ou PGID uniquement si ce choix automatique ne convient pas à votre bind mount, partage CIFS ou export NFS. Les valeurs doivent être des entiers décimaux de 1 à 4294967294.

VariableValeur automatiqueCompte
PUIDPropriétaire du mount ou 999Utilisateur databasus
PGIDGroupe du mount ou 999Groupe principal databasus

Databasus et PostgreSQL utilisent le même compte du système d'exploitation sans privilèges root, nommé databasus.

L'entrypoint démarre comme root dans le conteneur pour choisir les ID et tenter chown et chmod. Il vérifie ensuite tout le cycle des fichiers sous le compte databasus. Un mount peut fonctionner même s'il refuse les changements de propriétaire ou de mode. Une valeur Docker user: arbitraire n'est pas prise en charge.

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

Les quatre anciennes variables propres aux différents services ont été supprimées volontairement. Retirez-les de votre configuration lors de la mise à jour. Si les ID automatiques ne peuvent pas accéder à un mount, le démarrage s'arrête et indique l'opération en échec ainsi que le lien vers cette page.

Télémétrie

Databasus envoie par défaut une télémétrie d'usage anonyme et non identifiante. Elle ne contient aucune donnée personnelle et nous aide à comprendre comment le projet est utilisé. Vous pouvez lire exactement ce qui est collecté dans la politique de confidentialité, et vous pouvez la désactiver complètement.

VariableDéfautDescription
IS_DISABLE_ANONYMOUS_TELEMETRYfalseMettez true pour désactiver la télémétrie d'usage anonyme.

Journalisation

Databasus écrit ses journaux sur stdout et les duplique en JSON dans databasus.log sur le volume de données. Définissez OPEN_TELEMETRY_URL et il les exporte aussi via Open Telemetry vers un backend comme VictoriaLogs, Graylog, SigNoz, Grafana Loki, Datadog ou Honeycomb, ou vers un OpenTelemetry Collector, qui est lui-même un récepteur OTLP.

  • Le transport suit le schéma de l'URL. http:// et https:// envoient en OTLP/HTTP et utilisent l'URL telle quelle, chemin compris ; grpc:// et grpcs:// envoient en OTLP/gRPC et n'utilisent que l'hôte et le port.
  • L'authentification se met dans OPEN_TELEMETRY_HEADERS ou dans l'URL sous la forme user:password@host.
  • Les secrets (mots de passe, jetons, identifiants) dans les URL sont caviardés avant qu'un enregistrement ne quitte le processus.
  • Les entrées d'audit partent avec les journaux applicatifs, marquées log_type=audit, et ignorent LOG_LEVEL : élever le niveau ne fait donc jamais disparaître la piste d'audit.
VariableDéfautDescription
OPEN_TELEMETRY_URL—URL complète du point de terminaison OTLP, chemin compris. Laissez vide pour garder les journaux dans le conteneur. Une chaîne de requête, un hôte manquant ou un schéma inconnu arrête le conteneur au démarrage plutôt que d'exporter dans le vide.
OPEN_TELEMETRY_HEADERS—Paires key=value séparées par des virgules, envoyées avec chaque export, en général une clé API. Les valeurs sont décodées en pourcent, conformément au format standard OTEL_EXPORTER_OTLP_HEADERS.
LOG_LEVELinfoL'une des valeurs debug, info, warn ou error. Une valeur non reconnue retombe sur info.
LOG_FILE_IS_ENABLEDtrueÉcrit databasus.log à côté du reste des données, avec rotation à 5 Mo et conservation de 3 anciens fichiers. Mettez false si votre plateforme collecte déjà stdout.

Valeurs pour les backends courants, chacune avec l'en-tête qui l'authentifie. Remplacez les hôtes, régions et clés par les vôtres :

BackendOPEN_TELEMETRY_URLOPEN_TELEMETRY_HEADERS
VictoriaLogshttp://victoria-logs:9428/insert/opentelemetry/v1/logsAuthorization=Basic%20dXNlcjpwYXNzd29yZA== : les identifiants attendus par votre vmauth ou votre reverse proxy, puisque VictoriaLogs lui-même n'a pas d'authentification sur le chemin d'ingestion.
OpenTelemetry Collectorgrpc://otel-collector:4317Authorization=Bearer%20your-token : correspond à une extension bearertokenauth ou basicauth sur le récepteur. Un Collector joignable uniquement dans votre réseau n'en a en général pas besoin.
Graylog 6.2+grpc://graylog:4317Authorization=Bearer%20your-token : le jeton défini sur l'input OpenTelemetry (gRPC). L'input accepte aussi le mTLS à la place.
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:4317Aucun : l'Agent détient la clé API et transmet pour vous.

Les valeurs d'en-tête sont décodées en pourcent, donc l'espace après Basic ou Bearer s'écrit %20 et une virgule dans une valeur %2C. L'authentification Basic peut aussi aller directement dans l'URL sous la forme https://user:password@host/path : Databasus la transforme en le même en-tête et la garde hors des journaux. Sur http:// et grpc://, les clés et mots de passe circulent en clair, utilisez donc https:// ou grpcs:// en dehors d'un réseau de confiance.

Script d'analytique

Databasus peut injecter votre propre extrait d'analytique ou de suivi (Google Analytics, Plausible, Umami et similaires) dans l'application. Quand ANALYTICS_SCRIPT est défini, sa valeur est insérée dans le <head> de la page au démarrage.

Avertissement de sécurité : la valeur est injectée telle quelle, comme HTML et JavaScript bruts, et s'exécute avec un accès complet à l'interface Databasus dans le navigateur de chaque visiteur. Ne la définissez que sur un extrait que vous contrôlez et auquel vous faites entièrement confiance.

VariableDescription
ANALYTICS_SCRIPTBalisage <script> personnalisé injecté avant la balise fermante </head>. Laissez vide pour n'ajouter aucune analytique.