Skip to content

web_services

An HTTP service exposed by a node or by a Docker stack. This is the whole of how routes get into the proxy.

An entry without a proxy_name is tracked but not routed — useful for recording what a port is without publishing it.

Short form

A routed service is usually nothing but a name and a port, so a web_services block may be written as a map of proxy_name: port instead of a list:

web_services:
  nas: 8080
  pihole: 80

That is exactly the list below, spelled shorter:

web_services:
  - proxy_name: nas
    port: 8080
  - proxy_name: pihole
    port: 80

The choice is per block, not per entry — one web_services is either a map or a list. Use the list as soon as a service in that block needs access, https, or no proxy_name at all.

WebService

An HTTP service a node or stack exposes.

This is how routes get into the proxy: declaring a service next to the node that runs it is the whole configuration. An entry without a proxy_name is still tracked — useful for recording what a port is — but is not routed.

Key Type Default Description
port integer required The port the service listens on, on its node's address.
proxy_name string unset Publish this service at <proxy_name><proxy_suffix>. Omit to track the port without routing it. The value is both a DNS label and a Caddy matcher name, so it must be a legal label.
access list of string unset Which settings.proxy.access_lists may reach this service. Several lists are combined as a union. A bare string is accepted for a single list. Omit to use settings.proxy.default_access.
https boolean false Set when the upstream itself speaks HTTPS, such as Proxmox on :8006. Renders an https:// upstream with certificate verification skipped, since these services usually present a self-signed cert.