References

Outpost Configuration

Global configurations are provided through env variables or a YAML file. ConfigMap can be used if deploying with Kubernetes.

Environment Variables

VariableDefaultRequired
SERVICEnilNo
CONFIGnilNo
ORGANIZATION_NAMEdefaultYes
API_KEYnilYes
API_PORT3333Yes
API_JWT_SECRETnilOnly for using JWT Auth
AES_ENCRYPTION_SECRETnilYes
TOPICS''No
REDIS_PORT6379Yes
REDIS_HOST127.0.0.1Yes
REDIS_PASSWORDnilYes
REDIS_DATABASE0Yes
RABBITMQ_SERVER_URLnilNo
RABBITMQ_EXCHANGEoutpostNo
RABBITMQ_DELIVERY_QUEUEoutpost-deliveryNo
RABBITMQ_LOG_QUEUEoutpost-logNo
AWS_SQS_REGIONnilNo
AWS_SQS_ACCESS_KEY_IDnilNo
AWS_SQS_SECRET_ACCESS_KEYnilNo
AWS_SQS_DELIVERY_QUEUEoutpost-deliveryNo
AWS_SQS_LOG_QUEUEoutpost-logNo
GCP_PUBSUB_PROJECTnilNo
GCP_PUBSUB_SERVICE_ACCOUNT_CREDENTIALSnilNo
GCP_PUBSUB_DELIVERY_TOPICoutpost-deliveryNo
GCP_PUBSUB_DELIVERY_SUBSCRIPTIONoutpost-delivery-subNo
GCP_PUBSUB_LOG_TOPICoutpost-logNo
GCP_PUBSUB_LOG_SUBSCRIPTIONoutpost-log-subNo
PUBLISH_RABBITMQ_SERVER_URLnilNo
PUBLISH_RABBITMQ_QUEUEnilNo
PUBLISH_AWS_REGIONnilNo
PUBLISH_AWS_SQS_ACCESS_KEY_IDnilNo
PUBLISH_AWS_SQS_SECRET_ACCESS_KEYnilNo
PUBLISH_AWS_SQS_QUEUEnilNo
PUBLISH_GCP_PUBSUB_PROJECTnilNo
PUBLISH_GCP_PUBSUB_SERVICE_ACCOUNT_CREDENTIALSnilNo
PUBLISH_GCP_PUBSUB_TOPICnilNo
PUBLISH_GCP_PUBSUB_SUBSCRIPTIONnilNo
PUBLISH_MAX_CONCURRENCY10No
DELIVERY_MAX_CONCURRENCY10Yes
LOG_MAX_CONCURRENCY10Yes
LOG_RETRY_LIMIT5Yes
RETRY_INTERVAL_SECONDS30Yes
MAX_RETRY_LIMIT10Yes
DELIVERY_TIMEOUT_SECONDS5Yes
HTTP_USER_AGENTOutpost 1.0Yes
MAX_EVENT_SIZE_KB256Yes
MAX_DESTINATIONS_PER_TENANT20Yes
LOG_BATCH_SIZE1000Yes
LOG_BATCH_THRESHOLD_SECONDS10Yes
DESTINATIONS_WEBHOOK_HEADER_PREFIXx-No
DESTINATIONS_WEBHOOK_DISABLE_EVENT_ID_HEADERfalseNo
DESTINATIONS_WEBHOOK_DISABLE_SIGNATURE_HEADERfalseNo
DESTINATIONS_WEBHOOK_DISABLE_TIMESTAMP_HEADERfalseNo
DESTINATIONS_WEBHOOK_DISABLE_TOPIC_HEADERfalseNo
DESTINATIONS_WEBHOOK_SIGNATURE_VALUE_TEMPLATE{{.Timestamp.Unix}}.{{.Body}}No
DESTINATIONS_WEBHOOK_SIGNATURE_HEADER_TEMPLATEt=\{\{.Timestamp.Unix}},v0={{.Signatures | join ","\}\}No
DESTINATIONS_WEBHOOK_SIGNATURE_ENCODINGhexNo
DESTINATIONS_WEBHOOK_SIGNATURE_ALGORITHMhmac-sha256No
ALERT_CALLBACK_URLnilNo
ALERT_DEBOUNCING_INTERVAL_SECOND3600No
ALERT_CONSECUTIVE_FAILURE_COUNT20No
ALERT_FAILURE_WINDOW_SECOND60No
ALERT_FAILURE_RATE0.1No
ALERT_AUTO_DISABLE_DESTINATIONtrueNo
PORTAL_REFERER_URLnilYes
PORTAL_FAVICON_URLnilNo
PORTAL_LOGOnilNo
PORTAL_FORCE_THEMEnilNo
PORTAL_ACCENT_COLORnilNo
PORTAL_BRAND_COLORnilNo
PORTAL_OUTPOST_BRANDINGtrueNo
DISABLE_TELEMETRYfalseYes
LOG_LEVELinfoYes
AUDIT_LOGtrueYes
OTEL_SERVICE_NAMEnilNo
OTEL_*nilhttps://opentelemetry.io/docs/languages/sdk-configuration/general/
DESTINATIONS_METADATA_PATHconfig/outpost/destinationsNo

YAML

# Outpost Configuration Example
# This is a comprehensive list of available configuration options.
# While all options can be configured here, it is recommended to use environment variables
# for sensitive values (secrets, credentials, API keys, etc.) instead of storing them in this file.
# Each configuration option can be overridden by its corresponding environment variable.

# Service
service: "" # Service type: "", "api", "log", "delivery" (empty string for singular mode that runs all services)

# Infrastructure Configuration
## Redis
redis:
  host: "127.0.0.1" # Default Redis host
  port: 6379 # Default Redis port
  password: "" # Redis password
  database: 0 # Redis database number

## ClickHouse
clickhouse:
  addr: "" # ClickHouse address (e.g., localhost:9000)
  username: "" # ClickHouse username
  password: "" # ClickHouse password
  database: "outpost" # Default database name

## Message Queue
mqs:
  # One of:

  # RabbitMQ Configuration Example
  rabbitmq:
    server_url: "amqp://user:pass@localhost:5672" # RabbitMQ server URL with credentials
    exchange: "outpost" # Exchange name for message routing
    delivery_queue: "outpost-delivery" # Queue for delivery events
    log_queue: "outpost-log" # Queue for log events

  # AWS SQS Configuration Example
  awssqs:
    access_key_id: "YOUR_AWS_ACCESS_KEY" # AWS access key ID
    secret_access_key: "YOUR_AWS_SECRET_KEY" # AWS secret access key
    region: "us-west-2" # AWS region
    endpoint: "https://sqs.us-west-2.amazonaws.com" # SQS endpoint (optional, for custom endpoints)
    delivery_queue: "outpost-delivery" # SQS queue name for delivery events
    log_queue: "outpost-log" # SQS queue name for log events

  # GCP Pub/Sub Configuration Example
  gcp_pubsub:
    project: "GCP_PUBSUB_PROJECT" # GCP project ID
    service_account_credentials: "GCP_PUBSUB_SERVICE_ACCOUNT_CREDENTIALS" # Contents of service account credentials JSON file
    delivery_topic: "outpost-delivery" # Pub/Sub topic for delivery events
    delivery_subscription: "outpost-delivery-sub" # Pub/Sub subscription for delivery events
    log_topic: "outpost-log" # Pub/Sub topic for log events
    log_subscription: "outpost-log-sub" # Pub/Sub subscription for log events

# Publish Message Queue
publishmq:
  # One of:

  # RabbitMQ Configuration Example
  rabbitmq:
    server_url: "amqp://user:pass@localhost:5672" # RabbitMQ server URL with credentials
    exchange: "outpost" # Exchange name for message routing
    queue: "publish" # Queue name for publishing events

  # AWS SQS Configuration Example
  aws_sqs:
    access_key_id: "YOUR_AWS_ACCESS_KEY" # AWS access key ID
    secret_access_key: "YOUR_AWS_SECRET_KEY" # AWS secret access key
    region: "us-west-2" # AWS region
    queue: "outpost-pub-queue" # SQS queue name for publishing events
    endpoint: "https://sqs.us-west-2.amazonaws.com" # SQS endpoint (optional, for custom endpoints)

  # GCP Pub/Sub Configuration Example
  gcp_pubsub:
    project: "GCP_PUBSUB_PROJECT" # GCP project ID
    service_account_credentials: "GCP_PUBSUB_SERVICE_ACCOUNT_CREDENTIALS" # Contents of service account credentials JSON file
    topic: "outpost-publish" # Pub/Sub to read for published events
    subscription: "outpost-publish-sub" # Pub/Sub subscription for published events

# Application Configuration
aes_encryption_secret: "" # Secret for AES encryption
topics: # List of topics to subscribe to
  - user.created
  - user.updated
  - user.deleted

## API
api_port: 3333 # Default port for the API server
api_key: "" # API key for authentication
api_jwt_secret: "" # JWT secret for authentication

## Delivery
max_destinations_per_tenant: 20 # Maximum destinations per tenant
delivery_timeout_seconds: 5 # Timeout for delivery operations

## Event Delivery Retry
retry_interval_seconds: 30 # Interval between event delivery retries
retry_max_limit: 10 # Maximum number of event delivery retries

## Consumer Settings
publish_max_concurrency: 1 # Max number of publish messages to process concurrently
delivery_max_concurrency: 1 # Max number of delivery messages to process concurrently
log_max_concurrency: 1 # Max number of log messages to process concurrently

## Log Batcher
log_batch_threshold_seconds: 10 # Time to wait before sending a batch of logs (env: LOG_BATCH_THRESHOLD_SECONDS)
log_batch_size: 1000 # Maximum number of logs to include in a batch (env: LOG_BATCH_SIZE)

## Portal
portal:
  organization_name: "Acme" # Organization name
  referer_url: "https://example.com" # Portal referer URL
  favicon_url: "https://example.com/favicon.svg" # Portal favicon URL
  brand_color: "#6122E7" # Portal brand color
  # logo: "https://example.com" # Portal logo URL
  #logo_dark: "https://example.com" # Portal logo URL for dark mode

# Destinations Configuration
destinations:
  metadata_path: "config/outpost/destinations" # Path to destination metadata
  webhook:
    header_prefix: "x-custom-" # Prefix for webhook headers
    # disable_default_event_id_header
    # disable_default_signature_header
    # disable_default_timestamp_header
    # disable_default_topic_header
    # signature_content_template: {{.Timestamp.Unix}}.{{.Body}}
    # signature_header_template: t={{.Timestamp.Unix}},v0={{.Signatures | join ","}}
    # signature_encoding: hex
    # signature_algorithm: hmac-sha256
# Note: OpenTelemetry Configuration
# It is recommended to configure OpenTelemetry using environment variables as they are better supported by the SDK.
# Example environment variables:
# - OTEL_SERVICE_NAME: Service name (if provided, OpenTelemetry will be enabled)
# - OTEL_EXPORTER_OTLP_ENDPOINT: OpenTelemetry collector endpoint
# - OTEL_EXPORTER_OTLP_PROTOCOL: Protocol (grpc or http)
yaml