Configuration

Customize your Frontier gateway with frontier.yaml.

Save your configuration as frontier.yaml and mount it to the container at /usr/conf/frontier.yaml to take effect.

Minimal Configuration

To get started, you only need to configure the listening addresses for microservices and edge nodes:

# Microservice configuration
servicebound:
  listen:
    network: tcp
    addr: 0.0.0.0:30011

# Edge node configuration
edgebound:
  listen:
    network: tcp
    addr: 0.0.0.0:30012
  # Allow Frontier to allocate edgeID if no ID service is registered
  edgeid_alloc_when_no_idservice_on: true

TLS and mTLS

Frontier supports TLS for both microservices and edge nodes. It also supports mTLS where Frontier verifies the client certificate.

edgebound:
  listen:
    addr: 0.0.0.0:30012
    network: tcp
    tls:
      enable: true
      certs:
        - cert: edgebound.cert
          key: edgebound.key
      insecure_skip_verify: false

      # Enable mTLS: verify client certificates against a CA
      mtls: true
      ca_certs:
        - ca1.cert

External Message Queue (MQ) Routing

Frontier can automatically forward messages published by Edge nodes directly to external Message Queues based on topics.

Kafka

If an Edge node publishes to a topic listed in this array, Frontier will forward it to Kafka. If microservices also declare the same topic, Frontier hashes the traffic between them.

mqm:
  kafka:
    enable: true
    addrs:
      - "kafka:9092"
    producer:
      topics:
        - "sensor/temperature"
        - "device/events"

Redis

mqm:
  redis:
    enable: true
    addrs:
      - "redis:6379"
    db: 0
    password: "your-password"
    producer:
      channels:
        - "alerts"
        - "metrics"

Frontier also supports AMQP (RabbitMQ), NATS (with Jetstream support), and NSQ.

Routing Strategy & Database

dao:
  # Supports buntdb and sqlite3. Both use in-memory mode to keep Frontier stateless.
  # buntdb is recommended for maximum performance.
  backend: buntdb

exchange:
  # How Frontier hashes and routes traffic when multiple microservices subscribe
  # to the same topic/method. Options: edgeid, srcip, random
  hashby: edgeid