Pomoc jak zbudować serwer caddy z modułami

SiewcaRyżu

Kimchi & Pikachu
Q's Architect
9 Październik 2023
889
3
586
93
22
QNAP
null
Ethernet
null
1. stworzyć folder dla projektu mkdir -p /exploit/scripts/tools/docker/xcaddy_builder
2. stworzyć plik Dockerfile nano /exploit/scripts/tools/docker/xcaddy_builder/Dockerfile z zawartością
Kod:
FROM caddy:builder AS builder

RUN xcaddy build \
--with github.com/shift72/caddy-geo-ip \
--with github.com/caddy-dns/ovh \
--with github.com/greenpau/caddy-security

FROM caddy:latest

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

Gdzie linie zawierające --with github.com/xxxx wskazują na repozytorium pluginu Download Caddy
dla OVH ->


adres repo to github.com/caddy-dns/ovh

logika jest prosta - nie używasz czegoś - wywalasz linie --with z tym wpisem


Zapisujesz zmiany ...
3. Tworzymy pomocnika do roboty nano /exploit/scripts/tools/docker/xcaddy_builder/buildCaddy.sh
Wrzucamy mu kod
Bash:
cd /exploit/scripts/tools/docker/xcaddy_builder
docker build --output type=tar,dest=./xcaddy.tar .
tar -xvf xcaddy.tar tmp/caddy
rm /exploit/scripts/tools/docker/xcaddy_builder/xcaddy.tar
mv /exploit/scripts/tools/docker/xcaddy_builder/tmp/caddy /exploit/scripts/tools/docker/xcaddy_builder/caddy
rmdir /exploit/scripts/tools/docker/xcaddy_builder/tmp/

co robi kod:
bazując na pliku Dockerfile , buduje obraz caddy z wskazanymi pluginami, ale zapisuje go do pliku TAR w wskazanej lokacji
następnie z pliku TAR wyciąga binarke caddy
usuwa plik tar
przesuwa plik caddy obok skryptu
usuwa zbędny katalog

4. na koniec warto dodać prawo wykonywania skryptowi chmod +x /exploit/scripts/tools/docker/xcaddy_builder/buildCaddy.sh
5. Odpalamy plik budujący i czekamy na plik wyjściowy /exploit/scripts/tools/docker/xcaddy_builder/buildCaddy.sh
6. Wynik działania:
2024-10-15 18:54:52 ⌚ kanapa in /exploit/scripts/tools/docker/xcaddy_builder
○ → ll
total 57836
drwxr-xr-x 2 pigers pigers 4096 Oct 15 18:38 .
drwxr-xr-x 20 pigers pigers 4096 Oct 15 18:37 ..
-rwxr-xr-x 1 pigers pigers 353 Oct 15 18:38 buildCaddy.sh
-rwxr-xr-x 1 pigers pigers 59199640 Oct 15 18:31 caddy
-rw-r--r-- 1 pigers pigers 233 Oct 15 18:28 Dockerfile
Połączono posty:

Następnie warto przetestować plik dla wersji :
2024-10-15 18:57:29 ⌚ kanapa in /exploit/scripts/tools/docker/xcaddy_builder
○ → ./caddy version
v2.8.4 h1:q3pe0wpBj1OcHFZ3n/1nl4V4bxBrYoSoab7rL9BMYNk=
warto wspomnieć że to moja wersja, każdy bedzie miał inną sume kontrolną zależną od modułów ( .. Sherlock co nie ?).

i dla zintegrowanych pluginów:
2024-10-15 18:57:23 ⌚ kanapa in /exploit/scripts/tools/docker/xcaddy_builder
○ → ./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

dns.providers.ovh
http.authentication.providers.authorizer
http.handlers.authenticator
http.handlers.geoip
security

Non-standard modules: 5

Unknown modules: 0