Closed celsiusnarhwal closed 2 months ago
Can you run caddy build-info
, we'll need to see which version of layer4 you have. Make sure you have the latest (try building again now).
Below is the output of caddy build-info
both before and after downloading a new build of Caddy from the downloads page (with the github.com/mholt/caddy-l4
plugin included, of course).
The newly-downloaded binary yields the same error as the original one.
github.com/mholt/caddy-l4 v0.0.0-20240604210608-ce9789f602eb
Yeah that's an older commit (from June 4th).
You should try building with xcaddy
directly instead. The build server (the Download page) might have old versions cached for now.
It works when building with xcaddy
. Thanks!
@francislavoie
Sorry to bother you but I have the same problem and it's not working :/
caddyfile
{
layer4 {
127.0.0.1:5000 {
route {
echo
}
}
}
}
error
docker run --rm -it -v $(pwd)/caddyfile:/etc/caddy/Caddyfile test
2024/08/05 15:42:29.764 INFO using config from file {"file": "/etc/caddy/Caddyfile"}
Error: adapting config using caddyfile: parsing caddyfile tokens for 'layer4': getting module named 'layer4.handlers.echo': module not registered: layer4.handlers.echo, at /etc/caddy/Caddyfile:5
build-info
docker run --rm -it -v $(pwd)/caddyfile:/etc/caddy/Caddyfile test caddy build-info | grep l4
dep github.com/caddyserver/caddy/v2 v2.8.4 h1:q3pe0wpBj1OcHFZ3n/1nl4V4bxBrYoSoab7rL9BMYNk=
dep github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
dep github.com/mholt/caddy-l4 v0.0.0-20240802211152-352413454ba9 h1:2qW01rgYyqv4DybMWvGp7Ppv11ImQ5+opMhNzG9b1X0=
dep github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
Dockerfile
FROM caddy:2.8.4-builder-alpine AS builder
RUN xcaddy build \
--with github.com/mholt/caddy-l4/layer4@352413454ba91946a196ba37ee4e3f86f3cd733e
FROM caddy:2.8.4-alpine
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
COPY caddyfile /etc/caddy/Caddyfile
list-modules
docker run --rm -it -v $(pwd)/caddyfile:/etc/caddy/Caddyfile test caddy list-modules | grep layer4
caddy.listeners.layer4
layer4
layer4.matchers.local_ip
layer4.matchers.not
layer4.matchers.remote_ip
Your --with
is wrong, remove the /layer4
at the end. It should be just --with github.com/mholt/caddy-l4
without /layer4
.
Your
--with
is wrong, remove the/layer4
at the end. It should be just--with github.com/mholt/caddy-l4
without/layer4
.
Perfect...! Thanks... ! :)
I just copied from https://caddyserver.com/docs/modules/layer4
Ah, that's probably a bug in our module doc generator
I feel like I have to be missing something fundamental, but I cannot get this plugin to work with the Caddyfile at all. Copying and pasting the most basic configuration example in the README:
causes
caddy start
to yield the following output:My Caddyfile in its entirety is comprised solely of the above example; it has no other content. The corresponding JSON configuration provided in the README works fine.
I know very little of Go, but as far as I can understand from the code,
layer4
does in fact go in the global options block.Environment Details
Operating system: macOS Sonoma 14.5 (arm64) Output of
caddy version
:v2.8.4 h1:q3pe0wpBj1OcHFZ3n/1nl4V4bxBrYoSoab7rL9BMYNk=
Output of
caddy list-modules
``` admin.api.load admin.api.metrics admin.api.pki admin.api.reverse_proxy caddy.adapters.caddyfile caddy.config_loaders.http caddy.filesystems caddy.listeners.http_redirect caddy.listeners.proxy_protocol caddy.listeners.tls caddy.logging.encoders.append caddy.logging.encoders.console caddy.logging.encoders.filter caddy.logging.encoders.filter.cookie caddy.logging.encoders.filter.delete caddy.logging.encoders.filter.hash caddy.logging.encoders.filter.ip_mask caddy.logging.encoders.filter.query caddy.logging.encoders.filter.regexp caddy.logging.encoders.filter.rename caddy.logging.encoders.filter.replace caddy.logging.encoders.json caddy.logging.writers.discard caddy.logging.writers.file caddy.logging.writers.net caddy.logging.writers.stderr caddy.logging.writers.stdout caddy.storage.file_system events http http.authentication.hashes.bcrypt http.authentication.providers.http_basic http.encoders.gzip http.encoders.zstd http.handlers.acme_server http.handlers.authentication http.handlers.copy_response http.handlers.copy_response_headers http.handlers.encode http.handlers.error http.handlers.file_server http.handlers.headers http.handlers.intercept http.handlers.invoke http.handlers.log_append http.handlers.map http.handlers.metrics http.handlers.push http.handlers.request_body http.handlers.reverse_proxy http.handlers.rewrite http.handlers.static_response http.handlers.subroute http.handlers.templates http.handlers.tracing http.handlers.vars http.ip_sources.static http.matchers.client_ip http.matchers.expression http.matchers.file http.matchers.header http.matchers.header_regexp http.matchers.host http.matchers.method http.matchers.not http.matchers.path http.matchers.path_regexp http.matchers.protocol http.matchers.query http.matchers.remote_ip http.matchers.vars http.matchers.vars_regexp http.precompressed.br http.precompressed.gzip http.precompressed.zstd http.reverse_proxy.selection_policies.client_ip_hash http.reverse_proxy.selection_policies.cookie http.reverse_proxy.selection_policies.first http.reverse_proxy.selection_policies.header http.reverse_proxy.selection_policies.ip_hash http.reverse_proxy.selection_policies.least_conn http.reverse_proxy.selection_policies.query http.reverse_proxy.selection_policies.random http.reverse_proxy.selection_policies.random_choose http.reverse_proxy.selection_policies.round_robin http.reverse_proxy.selection_policies.uri_hash http.reverse_proxy.selection_policies.weighted_round_robin http.reverse_proxy.transport.fastcgi http.reverse_proxy.transport.http http.reverse_proxy.upstreams.a http.reverse_proxy.upstreams.multi http.reverse_proxy.upstreams.srv pki tls tls.ca_pool.source.file tls.ca_pool.source.http tls.ca_pool.source.inline tls.ca_pool.source.pki_intermediate tls.ca_pool.source.pki_root tls.ca_pool.source.storage tls.certificates.automate tls.certificates.load_files tls.certificates.load_folders tls.certificates.load_pem tls.certificates.load_storage tls.client_auth.verifier.leaf tls.get_certificate.http tls.get_certificate.tailscale tls.handshake_match.local_ip tls.handshake_match.remote_ip tls.handshake_match.sni tls.issuance.acme tls.issuance.internal tls.issuance.zerossl tls.leaf_cert_loader.file tls.leaf_cert_loader.folder tls.leaf_cert_loader.pem tls.leaf_cert_loader.storage tls.permission.http tls.stek.distributed tls.stek.standard Standard modules: 121 caddy.listeners.layer4 layer4 layer4.handlers.echo layer4.handlers.proxy layer4.handlers.proxy_protocol layer4.handlers.socks5 layer4.handlers.subroute layer4.handlers.tee layer4.handlers.throttle layer4.handlers.tls layer4.matchers.http layer4.matchers.ip layer4.matchers.local_ip layer4.matchers.not layer4.matchers.postgres layer4.matchers.proxy_protocol layer4.matchers.socks4 layer4.matchers.socks5 layer4.matchers.ssh layer4.matchers.tls layer4.matchers.xmpp layer4.proxy.selection_policies.first layer4.proxy.selection_policies.ip_hash layer4.proxy.selection_policies.least_conn layer4.proxy.selection_policies.random layer4.proxy.selection_policies.random_choose layer4.proxy.selection_policies.round_robin tls.handshake_match.alpn Non-standard modules: 28 Unknown modules: 0 ```