Closed Jaywann closed 3 years ago
This would be the simplest fix.
grep -iq 'hostname:' /etc/chasquid/chasquid.conf || echo "hostname: '$ONE_DOMAIN'" >> /etc/chasquid/chasquid.conf
Thanks a lot for finding and reporting this!
Would you mind giving commit 5305d584 a try? It's on the next
branch, and is also included registry.gitlab.com/albertito/chasquid:next
(since it is auto-built).
I've tested 5305d58 and it works a charm. I've also looked at the bash code a bit more. It seems that the hostname is taken from the certificates found under /configuration inside the container. I think this fix would require a complete remove of the container if only the certificate name changes, since the old certificate name would already exist in chasquid.conf and therefore not be updated.
I am however unaware if other parts of chasquid or the container scripts would require the deletion of the container anyways if the certificate name changes. If there is no other requirement I would propose the following change for the entrypoint.sh that also updates the hostname if it has changed.
CONF_FILE="/etc/chasquid/chasquid.conf"
if ! grep -iq "hostname: '$ONE_DOMAIN'" $CONF_FILE; then
sed -i '/^hostname:/d' $CONF_FILE
echo "hostname: '$ONE_DOMAIN'" >> $CONF_FILE
fi
Thank you for helping debug this and making chasquid better!
I think you're right, all the domain information is in the data volume (letsencrypt certs and /etc/chasquid/domains/
), so it's possible a user removes a domain from both directories and then restarts the container without re-creating it.
Under those circumstances, the hostname:
domain won't have a valid certificate. Thanks for finding this!
I like your suggested fix, although at this point I am more inclined to skip the conditional and always re-set it, so the flow is more direct:
sed -i '/^hostname:/d' /etc/chasquid/chasquid.conf
echo "hostname: '$ONE_DOMAIN'" >> /etc/chasquid/chasquid.conf
What do you think?
I absolutely agree with your point. This should solve the issue with no side effects and keeps the code clear and maintainable.
When the chasquid docker container is restarted, either manually or by docker, the entrypoint.sh echos the configuration option "hostname: < actual hostname >" into the chasquid.conf again resulting in:
this is simply due to this line in entrypoint.sh: