First deploy: fix Pulumi, image build, container DNS and DNS-01; Dependabot updates #2

Merged
JMR-dev merged 11 commits from deploy-prep into main 2026-10-10 09:04:19 +00:00
2 changed files with 25 additions and 3 deletions
Showing only changes of commit b4fad783e4 - Show all commits
+15 -2
View File
@@ -198,8 +198,21 @@ setup_nftables() {
systemctl disable --now firewalld >/dev/null 2>&1 || true
systemctl mask firewalld >/dev/null 2>&1 || true
install -m 0600 "${STATE_DIR}/nftables/gitea.nft" /etc/sysconfig/nftables.conf
nft -c -f /etc/sysconfig/nftables.conf || die "nftables ruleset failed validation"
[[ -n "${PODMAN_SUBNET}" && -n "${PODMAN_GATEWAY}" ]] \
|| die "podman-subnet/podman-gateway metadata missing; cannot render the ruleset"
# Validate BEFORE installing. A ruleset that fails to parse must never land
# in /etc/sysconfig: nftables.service would fail to load it on the next boot
# and the host would come up with no gitea_filter table at all.
local tmp
tmp=$(mktemp)
envsubst '${PODMAN_SUBNET} ${PODMAN_GATEWAY}' < "${STATE_DIR}/nftables/gitea.nft" > "${tmp}"
if ! nft -c -f "${tmp}"; then
rm -f "${tmp}"
die "nftables ruleset failed validation"
fi
install -m 0600 "${tmp}" /etc/sysconfig/nftables.conf
rm -f "${tmp}"
systemctl enable --now nftables
systemctl reload nftables
+10 -1
View File
@@ -1,6 +1,7 @@
#!/usr/sbin/nft -f
#
# Host firewall. Installed by vm/bootstrap.sh as /etc/sysconfig/nftables.conf.
# Host firewall. Rendered by vm/bootstrap.sh into /etc/sysconfig/nftables.conf,
# substituting ${PODMAN_SUBNET} and ${PODMAN_GATEWAY}.
#
# CRITICAL: this file must NEVER contain `flush ruleset`. The stock nftables
# config ships with one, and it would wipe podman/netavark's NAT and forward
@@ -37,6 +38,14 @@ table inet gitea_filter {
# DHCP renewal from the GCE metadata server.
udp sport 67 udp dport 68 accept
# Container DNS. aardvark-dns answers on the bridge gateway, so lookups
# from containers terminate on the host and arrive here, not in forward.
# Netavark accepts them in its own table, but a packet has to survive
# every input-hook chain, and this one's drop policy would discard it
# anyway. Without this rule containers resolve nothing -- Caddy cannot
# reach Let's Encrypt and Gitea cannot reach webhook or mirror hosts.
ip saddr ${PODMAN_SUBNET} ip daddr ${PODMAN_GATEWAY} meta l4proto { tcp, udp } th dport 53 accept comment "container DNS"
# Admin SSH: IAP TCP forwarding range only. There is no other path in --
# the VPC firewall enforces the same restriction as the outer layer.
ip saddr 35.235.240.0/20 tcp dport 22 accept comment "IAP SSH"