Files
sablier/docs/plugins/caddy.md
Alexis Couvreur fbb6e38d53 docs: add multiversioned documentation (#344)
Documentation is now published on the `gh-pages` branch.

The branch will have a folder `docs` containing the following structure:
- `./docs` the copy from the `main` docs, but only used for the `index.html` page to do the multi-version routing.
- `./docs/main` the copy from the `main` branch docs folder
- `./docs/beta` the copy from the `beta` branch docs folder

Closes #332
2024-10-01 17:30:14 -07:00

2.0 KiB

Caddy Sablier Plugin

Caddy Sablier Plugin.

Provider compatibility grid

Provider Dynamic Blocking
Docker
Docker Swarm
Kubernetes

Install the plugin to Caddy

Because Caddy does not do runtime evaluation, you need to build the base image with the plugin source code.

In order to use the custom plugin for Caddy, you need to bundle it with Caddy. Here I'll show you two options with Docker.

Using the provided Dockerfile

docker build https://github.com/acouvreur/sablier.git#v1.4.0-beta.3:plugins/caddy 
  --build-arg=CADDY_VERSION=2.6.4
  -t caddy:2.6.4-with-sablier

Updating your Caddy Dockerfile

ARG CADDY_VERSION=2.6.4
FROM caddy:${CADDY_VERSION}-builder AS builder

ADD https://github.com/acouvreur/sablier.git#v1.4.0-beta.3 /sablier

RUN xcaddy build \
    --with github.com/acouvreur/sablier/plugins/caddy=/sablier/plugins/caddy

FROM caddy:${CADDY_VERSION}

COPY --from=builder /usr/bin/caddy /usr/bin/caddy

Configuration

You can have the following configuration:

:80 {
	route /my/route {
    sablier [<sablierURL>=http://sablier:10000] {
			[names container1,container2,...]
			[group mygroup]
			[session_duration 30m]
			dynamic {
				[display_name This is my display name]
				[show_details yes|true|on]
				[theme hacker-terminal]
				[refresh_frequency 2s]
			}
			blocking {
				[timeout 1m]
			}
		}
    reverse_proxy myservice:port
  }
}

Exemple with a minimal configuration

Almost all options are optional and you can setup very simple rules to use the server default values.

:80 {
	route /my/route {
    sablier {
			group mygroup
			dynamic
		}
    reverse_proxy myservice:port
  }
}