Skip to main content

Using Environment Variables as Secrets

Starting from DronaHQ 3.7.0-edge, you can store and access secrets using environment variables in self-hosted deployments. This allows you to centralize sensitive information (like API keys, database passwords, or access tokens) without hardcoding them in your application.

Version Availability

⚠️ This feature is available from 3.7.0-edge onwards.

You have two options:

  1. Define secrets directly in the main .env file
  2. Define each secret in its own file and reference the file path

Naming Convention

Every shared secret must start with the prefix:

DRONAHQ_SHARED_
  • Example:

    DRONAHQ_SHARED_DB_PASSWORD=my-secure-password

File-based Secrets

If you prefer to store secrets in separate files (for better security and maintainability), use the _FILE suffix:

DRONAHQ_SHARED_<VARIABLE_NAME>_FILE=/path/to/secret/file
  • The system will read the contents of the file and treat it as the secret value.

  • Example:

    DRONAHQ_SHARED_DB_PASSWORD_FILE=/etc/secrets/db_password.txt

    The secret will be loaded from the file /etc/secrets/db_password.txt.


Accessing Secrets in DronaHQ

Inside your DronaHQ connectors, you can reference the secrets using the following syntax:

%DRONAHQ_SHARED_<VARIABLE_NAME>%
  • Example:

    If you have defined:

    DRONAHQ_SHARED_DB_PASSWORD=my-secure-password

    You can access it as:

    %DRONAHQ_SHARED_DB_PASSWORD%

Providing Environment Variables in Docker

When deploying DronaHQ using Docker, you can supply environment variables in different ways:

1. Using .env file

Add variables in your .env file, and Docker Compose will automatically load them:

DRONAHQ_SHARED_DB_PASSWORD=my-secure-password
DRONAHQ_SHARED_API_KEY_FILE=/run/secrets/api_key.txt

Then in docker-compose.yml:

version: '3.8'
services:
dronahq:
image: dronahq/selfhosted:3.7.0-edge
env_file:
- .env
volumes:
- /run/secrets:/run/secrets:ro

2. Directly in docker-compose.yml

You can also define environment variables inline:

services:
dronahq:
image: dronahq/selfhosted:3.7.0-edge
environment:
- DRONAHQ_SHARED_DB_PASSWORD=my-secure-password
- DRONAHQ_SHARED_API_KEY_FILE=/run/secrets/api_key.txt

Providing Environment Variables in Kubernetes

For Kubernetes deployments, use Secrets and mount them as environment variables:

apiVersion: v1
kind: Secret
metadata:
name: dronahq-secrets
type: Opaque
stringData:
DRONAHQ_SHARED_DB_PASSWORD: "my-secure-password"
DRONAHQ_SHARED_API_KEY: "my-api-key"

Then reference them in your Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
name: dronahq
spec:
template:
spec:
containers:
- name: dronahq
image: dronahq/selfhosted:3.7.0-edge
envFrom:
- secretRef:
name: dronahq-secrets

Best Practices

  • Use _FILE based secrets in production for sensitive values (API keys, DB passwords, private certificates).
  • Keep your .env file or Kubernetes secrets restricted to the right users.
  • Do not commit .env files or secret files to version control (Git).
  • Rotate secrets regularly.

👉 With this feature (available from 3.7.0-edge), your self-hosted DronaHQ deployment can safely manage sensitive values in Docker or Kubernetes setups.