Bug#1125111: apache2: Apache2 won't start, error "Read-only file system: AH10082: Can't change owner of /etc/apache2/md/challenges"

Moritz Schlarb <[email protected]> Sat, 10 Jan 2026 10:38:21 +0100
Newsgroups gmane.linux.debian.devel.apache
Message-ID <e2c45449245c3542a322d2d6d8fc9d637abf4e28.camel__27196.5017121815$1768038087$gmane$org@debian.org>
Hi everyone,

FWIW: If OP doesn't actually *use* mod_md for certificate handling (by having
at least an MDomain directive anywhere), he should just do `a2dismod md` and
restart the server and it should work as before.

As I'm a heavy user of mod_md, I'll chime in here with some background info.

mod_md implements the ACME protocol for certificate handling in Apache httpd
itself. It is written in pure C and does not use the python packages mentioned
earlier like certbot does. 

It does not need nor touch the /etc/letsencrypt directory.
For its own storage requirements, there is [1]:
> MDStoreDir Directive
> Description:	Path on the local file system to store the Managed Domains
> data.
> Syntax:	MDStoreDir path
> Default:	MDStoreDir md
> Context:	server config
> Status:	Experimental
> Module:	mod_md
> 
> Defines where on the local file system the Managed Domain data is stored.
> This is an absolute path or interpreted relative to the server root. The
> default will create a directory 'md' in your server root.
> 
> If you move this and have already data, be sure to move/copy the data first
> to the new location, reconfigure and then restart the server. If you
> reconfigure and restart first, the server will try to get new certificates
> that it thinks are missing.

(Keep in mind that server root != document root!)

Furthermore, mod_md uses that directory not only to store challenge content (in
md/challenges) (which is only temporary), but also the ACME account data
(md/accounts) as well as the actual certificates (md/domains, md/archive) -
including some intermediate steps while requesting (md/staging, md/tmp) and
OCSP data (md/ocsp).
So for some of the content, /var/cache might be appropriate (although it could
even be an actual tmpdir), but for others, it should at least be /var/lib, if
you are insistent on not having it write in /etc.

Also, IMHO, the current content of /etc/apache2/md needs to be copied/moved to
any alternate location that we decide on...

Or at least acknowledge mod_md explicitly in the NEWS entry for requiring
additional setup in the systemd.service and encourage the user to move the
directory itself?

Best regards,
Moritz

[1]: https://httpd.apache.org/docs/current/mod/mod_md.html#mdstoredir
signature.asc (application/pgp-signature, 862 B)
-----BEGIN PGP SIGNATURE-----

iQJIBAABCgAyFiEE3wEiR7/GVQGv8oRFDCS4Qcfduq8FAmliHg0UHG1vc2NobGFy
QGRlYmlhbi5vcmcACgkQDCS4Qcfduq9AxQ/+IUVqZcdwcUY/l6xXzJzYr6RzV/Av
/N4MTxa8E+E5vjcg+m8ipBGrRHfY+BEHxnDQLmK7oEgxtRru83SRVJTzHg90U3aa
XlXkzIDWu98KVjiRsrcMHJkfvMfCX5N+16yQJ/wCuvjs2MiQi0+6R0ZVgAz0XHr5
qIFuKW0z2LfCx2FRULWtfibDz0OoNm/vEj9MsmaYJxp33/V6bd6DCfYTH1CRfPBT
UMJJtQNc49NaMRkn8OoPhz8ugHv4+Tqli0ZMifrBhXbL99yxgXgJN+1JfOB45Pv5
LnDShTnL5iGgxB+FU+CRw8Xqlk4SbRuU529uvfqrwMG3dniPqhDRMkdEPT82lsWW
6PydNJTbPx7IP9ilgGgViNz0isJfTF6gQneiZPsvUyOHMB60TnCWS3ypI6Cu/RUd
w0NLlVQ5VmJgaLGewMoZ9kXqLSqMDb3mqyt9q5g7/ADX7gAS7CVf+kyumoOPmF63
xWBS7rRhX5wBnuDa+TTPm1LWUn/BjcZSJlM/hNM1X4QrPFBc8Yhw/bN0NcsXVQez
LwI7C3ccdSyOSE10lpoHN/R5oWGGjEO5ViToaAC4Bfy5pdAsuwSycWauSDxRZxXW
kx1JqGFuT9OnhdwCHzB6g9+294Nn5KbmSz5afwevUZersp+LAZ/cXgvhZydg6Xsc
0UZEotxzewsJbT8=
=PnUE
-----END PGP SIGNATURE-----