Skip to content

FAQ

The current release, 0.3.0-alpha.1, is a pre-release. The proxy is covered by end-to-end tests (protocols, middlewares, smuggling vectors, limits, reloads under load) and fuzz targets, but the configuration format can still change between 0.x releases. If you run it in production, pin the version, read the changelog before upgrading and go through the production checklist.

Yes. ReverseDock is Apache-2.0 licensed, with no paid tier, no enterprise edition and no account. Contributions are made under the Developer Certificate of Origin instead of a contributor licence agreement, so nobody can relicense the project.

No. The binary does not contact any service on its own. It connects only to the backends, files and addresses you configure.

Can it get certificates from Let’s Encrypt automatically?

Section titled “Can it get certificates from Let’s Encrypt automatically?”

Not yet. Automatic HTTPS with ACME is since v0.3. Until then, provide certificates under certificates, for example ones you obtain with an ACME client, and ReverseDock reloads them when the files change. See Your own TLS certificate.

Yes, from v0.2 since v0.2: the Docker provider reads rdock.* labels and a documented subset of existing traefik.* labels, and rdock migrate traefik turns labels into YAML. See Docker containers and labels. In v0.1, routes are defined in rdock.yaml, and backends in Docker are reached by container name on a shared network.

Yes. Rules use the Traefik v3 grammar and the same default priority, so a rule from a Traefik router works unchanged in match. A few behaviours differ on purpose; see Migrate from Traefik.

No. A reload builds the new configuration completely, then switches to it at once. Requests in flight finish on the configuration they started with, and a configuration with errors is refused while the old one keeps serving. Listener changes apply without a restart. Upgrading the binary does need a restart; see Upgrade.

What happens if the configuration file is broken when rdock starts?

Section titled “What happens if the configuration file is broken when rdock starts?”

rdock starts with the last configuration it applied successfully, stored in /var/lib/rdock/state/lkg.json, and logs that it did. rdock status shows the origin as last-known-good. Without a stored copy, it exits with the errors.

Does it support HTTP/2, WebSocket and gRPC?

Section titled “Does it support HTTP/2, WebSocket and gRPC?”

Yes: HTTP/2 over TLS, h2c on plain listeners and to backends, WebSocket, server-sent events and gRPC with trailers. HTTP/3 is an experimental track for a later milestone. See WebSockets, SSE and gRPC.

Not yet. Active and passive health checks, retries, sticky sessions and further load-balancing policies are planned for v0.4. In 0.1 a service spreads requests over all its backends with weighted round-robin or random, and a failed request is not retried.

Not yet. TCP and UDP routing, SNI passthrough and the PROXY protocol are planned for v0.6.

Not yet. The dashboard and the REST API with history and rollback are planned for v0.5. Today the admin listener offers /healthz, /readyz, /metrics, /api/v1/status and /api/v1/config/reload, used by rdock status and rdock reload.

The configuration in /etc/rdock/rdock.yaml and state in /var/lib/rdock: the admin token in admin/token, the last-known-good copy and history in state/. See Files and directories.

Yes. A file with a .json extension is read as JSON; anything else is read as YAML. rdock schema prints the JSON Schema, which editors can use for completion.

How does it compare with NGINX, Traefik, Caddy and HAProxy?

Section titled “How does it compare with NGINX, Traefik, Caddy and HAProxy?”

ReverseDock aims to combine Traefik’s service discovery, Caddy’s automatic HTTPS, NGINX’s HTTP features and HAProxy’s reliability in one free binary. Version 0.1 covers host and path routing with your own certificates; the rest arrives over the milestones on the roadmap.