1. The problem I’m having:
Is there a way to set up ECH without giving caddy DNS access? Like by preparing the records in a file for the user to manually place into DNS?
I dont want a webserver to have full control over the DNS Server I use to handle my domains and stuff.
The docs seem to indicate that DNS integration is currently needed.
2. Error messages and/or full log output:
Does not apply
3. Caddy version:
2.11.1
4. How I installed and ran Caddy:
a. System environment:
Debian 13
b. Command
If it isn’t already running
Sudo systemctl start caddy
c. Service/unit file
I think this file was already supplied this way by the package.
# caddy.service
#
# For using Caddy with a config file.
#
# Make sure the ExecStart and ExecReload commands are correct
# for your installation.
#
# See https://caddyserver.com/docs/install for instructions.
#
# WARNING: This service does not use the --resume flag, so if you
# use the API to make changes, they will be overwritten by the
# Caddyfile next time the service is restarted. If you intend to
# use Caddy's API to configure it, add the --resume flag to the
# `caddy run` command or use the caddy-api.service file instead.
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
Type=notify
User=caddy
Group=caddy
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
d. My complete Caddy config:
# The Caddyfile is an easy way to configure your Caddy web server.
#
# Unless the file starts with a global options block, the first
# uncommented line is always the address of your site.
#
# To use your own domain name (with automatic HTTPS), first make
# sure your domain's A/AAAA DNS records are properly pointed to
# this machine's public IP, then replace ":80" below with your
# domain name.
#:80 {
# Set this path to your site's directory.
# root * /usr/share/caddy
# Enable the static file server.
# file_server
# Another common task is to set up a reverse proxy:
# reverse_proxy localhost:8080
# Or serve a PHP site through php-fpm:
# php_fastcgi localhost:9000
#}
# Refer to the Caddy docs for more information:
# https://caddyserver.com/docs/caddyfile
https://ovpn.my1.dedyn.io {
reverse_proxy https://192.168.5.202:9443 {
transport http {
tls_trust_pool file /etc/caddy/my1-rootca-ec.pem
tls_server_name ovpn.my1.dedyn.io
}
header_up Host ovpn.my1.dedyn.io
}
}
https://pwsafe.my1.dedyn.io {
reverse_proxy https://192.168.5.203:8000 {
transport http {
tls_trust_pool file /etc/caddy/my1-rootca-ec.pem
tls_server_name pwsafe.my1.dedyn.io
}
header_up Host pwsafe.my1.dedyn.io
}
rewrite /admin /404
}
(stupid question while we are at it, why are IPs, domains etc. so important to not redact them?)