diff --git a/caddy/Caddyfile b/caddy/Caddyfile new file mode 100644 index 0000000..741cb06 --- /dev/null +++ b/caddy/Caddyfile @@ -0,0 +1,29 @@ +{ + email [your email] + order rate_limit before basicauth +} + +:80, :443 { + redir * https://[your domain] +} + +[your domain] { + reverse_proxy [host]:[port] + log { + output file [path] { + roll_size 10GiB + roll_keep 10 + } + level INFO + } + handle_errors { + respond "{http.error.status_code} {http.error.status_text}" + } + rate_limit { + zone dynamic { + key {remote_host} + events 2 + window 5s + } + } +} diff --git a/caddy/Dockerfile b/caddy/Dockerfile new file mode 100644 index 0000000..b277b91 --- /dev/null +++ b/caddy/Dockerfile @@ -0,0 +1,8 @@ +FROM caddy:builder AS builder + +RUN xcaddy build \ + --with github.com/mholt/caddy-ratelimit \ + --with github.com/caddy-dns/cloudflare +FROM caddy:latest + +COPY --from=builder /usr/bin/caddy /usr/bin/caddy \ No newline at end of file diff --git a/caddy/README.md b/caddy/README.md new file mode 100644 index 0000000..92af9a1 --- /dev/null +++ b/caddy/README.md @@ -0,0 +1,5 @@ +# caddy + +This folder contains a sample configuration for caddy with ratelimiting enabled. this will allow 2 requests per IP every 5 seconds. For more on that, check here: https://github.com/mholt/caddy-ratelimit + +I have also included a dockerfile to build caddy with the ratelimiting module. \ No newline at end of file diff --git a/caddy/build.sh b/caddy/build.sh new file mode 100755 index 0000000..6a37f43 --- /dev/null +++ b/caddy/build.sh @@ -0,0 +1 @@ +xcaddy build --with github.com/mholt/caddy-ratelimit \ No newline at end of file