Skip to content

fix(compose): serve TLS ingest via dfe-proxy and mount file input - #401

Merged
catinspace-au merged 3 commits into
mainfrom
fix/ingest-tls-and-file-mount
Nov 15, 2026
Merged

catinspace-au merged 3 commits into
mainfrom
fix/ingest-tls-and-file-mount

Conversation

@catinspace-au

Copy link
Copy Markdown
Contributor

Docker installs could not take TLS ingest from external pushers. File sources had no input mount.

  • Optional DFE_RECEIVER_HTTPS_PORT publishes a TLS listener on dfe-proxy (container port 8443) that forwards to dfe-receiver:8080. make rejects DFE_RECEIVER_HTTPS_PORT without DFE_PROXY_TLS=true.
  • The listener and console share a YAML anchor for the certificate and TLS settings.
  • Optional DFE_FETCHER_INPUT_DIR mounts a host directory read only at /mnt/input in dfe-fetcher.
  • With neither key set the compose chain is unchanged.

Done when a pusher that trusts ca.crt can POST to the published port and a sources.file source can read from /mnt/input.

On the pinned Envoy, a 7.9 MB TLS POST reached a stand-in receiver. Plain http to the port got no reply.

An external pusher could not verify a deployment CA against the receiver on Docker because /ingest answers plain http only. A `sources.file` source had no files to read because dfe-fetcher mounts only its spool and cursor volumes.

`DFE_RECEIVER_HTTPS_PORT` publishes a TLS listener on dfe-proxy (container port 8443). It serves the console's certificate with the console's TLS settings. It forwards to dfe-receiver:8080 on the compose network.

The listener exists only under `DFE_PROXY_TLS=true`. It binds `DFE_INGRESS_BIND_HOST`. With TLS off, `make` refuses `DFE_RECEIVER_HTTPS_PORT`. In-network callers keep posting plain http.

`DFE_FETCHER_INPUT_DIR` mounts a host directory read only at `/mnt/input` in dfe-fetcher. A missing path stops startup. With neither key set the stack renders as before.
The receiver sees dfe-proxy as the TCP peer on the HTTPS ingest port. Its `ip_filter` cannot tell pushers apart there. `server.trusted_proxies` has no environment variable name when the receiver runs from a config file.

The docs explain that fetcher dump sources use `paths`. Tail sources use `include`. The directory must be readable by uid 1000. An unreadable directory causes a failure when the source runs.

The route timeout comment in envoy.tls.yaml describes only what the timeout limits.
The receiver runs from a config file on Docker, so it reads only a fixed set of flat env keys. `DFE_RECEIVER_FLOW_ENABLED` is one of them. The documented `DFE_RECEIVER_SYSLOG__ENABLED` and `DFE_RECEIVER_GRPC__ENABLED` keys have no effect.

The docs now say to change the engine config and run `make apply` for syslog and the Vector gRPC listener. `make demo` turns syslog on this way. The docs still explain why syslog needs `accept_unauthenticated`.
@catinspace-au
catinspace-au merged commit cd82ccf into main Nov 15, 2026
16 checks passed
@catinspace-au
catinspace-au deleted the fix/ingest-tls-and-file-mount branch November 15, 2026 18:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant