How to run Uptime Kuma in Docker in an IPv6-only environment

I use Uptime Kuma to check the availability of a few services that I run, with the most important one being my blog. It’s really nice.
Today I wanted to set it up on a different machine to help troubleshoot and confirm some latency issues that I’ve observed, and for that purpose I picked the cheapest ARM-based Hetzner Cloud VM hosted in Helsinki, Finland.
Hetzner provides a public IPv6 address for free, but you have to pay extra for an IPv4 address. I didn’t want to do that out of principle, so I went ahead and copied my Docker Compose definition over to the new server.
For some reason, Uptime Kuma would start up on the new IPv6-only VM, but it was unsuccessful in making requests to my services, which support both IPv4 and IPv6. The requests would time out and show up as “Pending” in the UI, and the service logs complained about not being able to deliver e-mails about the failures.
I confirmed IPv6 connectivity within the container by running docker exec -it uptime-kuma bash
and running a
few curl
and ping
commands with IPv6 flags, had no issues with those.
When I added a public IPv4 address to the container, everything started working again.
I fixed the issue by explicitly disabling the IPv4 network in the Docker Compose service definition, and that did the trick, Uptime Kuma made successful requests towards my services. It seems that the service defaults to IPv4 due to the internal Docker network giving it an IPv4 network to work with, and that causes issues when your machine doesn’t have any IPv4 network or public IPv4 address associated with it.
Here’s an example Docker Compose file:
name: uptime-kuma
services:
uptime-kuma:
container_name: uptime-kuma
networks:
- uptime-kuma
ports:
- 3001:3001
volumes:
- /path/to/your/storage:/app/data
image: docker.io/louislam/uptime-kuma
restart: always
networks:
uptime-kuma:
enable_ipv6: true
enable_ipv4: false
That’s it!
If you’re interested in different ways to set up IPv6 networking in Docker, check out this overview that I wrote a while ago.
Subscribe to new posts via the RSS feed.
Not sure what RSS is, or how to get started? Check this guide!
You can reach me via e-mail or LinkedIn.
If you liked this post, consider sharing it!