this repo has no description
fly.io knot deployment notes#
the actual issue#
fly.io's shared IPv4 does not support raw TCP services like SSH. connections get closed immediately at key exchange.
the fix: allocate a dedicated IPv4 ($2/mo):
fly ips allocate-v4 --yes
then release the shared IP to avoid DNS confusion:
fly ips release <shared-ip>
other learnings#
-
the
tngl/knot:latestdocker image uses s6-overlay which requires PID 1 - doesn't work on fly.io. bypass with custom entrypoint. -
knot server has built-in SSH that binds to
FLY_PRIVATE_IP:22. fly's proxy expects0.0.0.0:22. run your own sshd on0.0.0.0:22instead. -
fly's
hallpassprocess runs on every machine forfly ssh console. it binds to the fly private IPv6 address on port 22. doesn't conflict with sshd on0.0.0.0:22. -
fly proxy(wireguard tunnel) works even when edge TCP routing doesn't - useful for debugging.
working config#
- sshd listening on
0.0.0.0:22 - fly.toml:
[[services]]withinternal_port = 22, externalport = 2222 - dedicated IPv4 allocated
~/.ssh/configentry pointing to dedicated IP until DNS propagates