Woodpecker creates per-pipeline networks WITHOUT IPv6 unless WOODPECKER_BACKEND_DOCKER_ENABLE_IPV6=true. The daemon.json only covered the default bridge, which steps do not use — so step containers still had no v6. This sets the agent flag (pairs with daemon.json NAT) and defers the agent restart so the self-deploy survives.
Woodpecker creates per-pipeline networks WITHOUT IPv6 unless WOODPECKER_BACKEND_DOCKER_ENABLE_IPV6=true. The daemon.json only covered the default bridge, which steps do not use — so step containers still had no v6. This sets the agent flag (pairs with daemon.json NAT) and defers the agent restart so the self-deploy survives.
The daemon.json (PR #48) only gives the *default bridge* IPv6 — but
Woodpecker runs each step on a per-pipeline network, which it creates
WITHOUT IPv6 unless told to. So step containers still had no v6 and the
deploy to v6-only proxy-1 kept failing 'Network unreachable'.
Set WOODPECKER_BACKEND_DOCKER_ENABLE_IPV6=true on the agent so it creates
v6-enabled pipeline networks (pairs with the daemon.json ipv6/ip6tables
NAT). Also defer the woodpecker-agent restart (systemd-run timer) so the
agent self-deploy doesn't interrupt its own running pipeline.
Ref: https://woodpecker-ci.org/docs/administration/configuration/backends/docker
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Woodpecker creates per-pipeline networks WITHOUT IPv6 unless WOODPECKER_BACKEND_DOCKER_ENABLE_IPV6=true. The daemon.json only covered the default bridge, which steps do not use — so step containers still had no v6. This sets the agent flag (pairs with daemon.json NAT) and defers the agent restart so the self-deploy survives.