Deploying IPFS to Fly.io - problem setting the public IP with Addresses.Annouce

I just deployed a Kubo node to fly.io using the official Docker image, and now I’ve run into a problem with the node not advertising its public IP.

When I ssh into the deployed container and run ipfs id, I get:

{
	"ID": "12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
	"PublicKey": "CAESINJd0d4A1uiarVU0g+r+qYhv1i7Y2m9zrQ/AnD3NIm2q",
	"Addresses": [
		"/ip4/115.196.7.234/tcp/4001/p2p/12D3KooWJecc1MsmYT2sp2iS1KvNLQ187h8g6uQbniN8ghoEQzmp/p2p-circuit/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
		"/ip4/127.0.0.1/tcp/4001/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
		"/ip4/127.0.0.1/udp/4001/quic/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
		"/ip4/172.105.192.229/tcp/4001/p2p/12D3KooWD6ejSQDKsGYCXw2EBByj3WJJmgbqub5csdXFE5GqwJ5D/p2p-circuit/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
		"/ip4/172.105.192.229/udp/4001/quic/p2p/12D3KooWD6ejSQDKsGYCXw2EBByj3WJJmgbqub5csdXFE5GqwJ5D/p2p-circuit/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
		"/ip6/240e:390:434:84f1:5062:5af3:ba50:2860/tcp/4001/p2p/12D3KooWJecc1MsmYT2sp2iS1KvNLQ187h8g6uQbniN8ghoEQzmp/p2p-circuit/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
		"/ip6/240e:390:434:84f1:a130:508:158:d6cc/tcp/4001/p2p/12D3KooWJecc1MsmYT2sp2iS1KvNLQ187h8g6uQbniN8ghoEQzmp/p2p-circuit/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
		"/ip6/240e:390:434:84f1:a491:babc:7308:bf0/tcp/4001/p2p/12D3KooWJecc1MsmYT2sp2iS1KvNLQ187h8g6uQbniN8ghoEQzmp/p2p-circuit/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
		"/ip6/240e:390:434:84f1:f802:b338:cce0:bc18/tcp/4001/p2p/12D3KooWJecc1MsmYT2sp2iS1KvNLQ187h8g6uQbniN8ghoEQzmp/p2p-circuit/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
		"/ip6/64:ff9b::ac69:c0e5/tcp/4001/p2p/12D3KooWD6ejSQDKsGYCXw2EBByj3WJJmgbqub5csdXFE5GqwJ5D/p2p-circuit/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
		"/ip6/::1/tcp/4001/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru",
		"/ip6/::1/udp/4001/quic/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru"
	],
	"AgentVersion": "kubo/0.15.0/3ae52a4/docker",
	"ProtocolVersion": "ipfs/0.1.0",
	"Protocols": [
		"/ipfs/bitswap",
		"/ipfs/bitswap/1.0.0",
		"/ipfs/bitswap/1.1.0",
		"/ipfs/bitswap/1.2.0",
		"/ipfs/id/1.0.0",
		"/ipfs/id/push/1.0.0",
		"/ipfs/lan/kad/1.0.0",
		"/ipfs/ping/1.0.0",
		"/libp2p/autonat/1.0.0",
		"/libp2p/circuit/relay/0.1.0",
		"/libp2p/circuit/relay/0.2.0/stop",
		"/libp2p/dcutr",
		"/p2p/id/delta/1.0.0",
		"/x/"
	]
}

Since the container isn’t aware of the public IP, it isn’t showing up.

I tried to add it manually with the following configuration:
ipfs config Addresses.Announce --json '["/ip4/137.66.16.155/tcp/4001"]' However, even after setting this, kubo doesn’t seem to be aware of this public IP.

I tried looking up the peer records from another IPFS node and got the following:

ipfs dht findpeer 12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru
/ip6/240e:390:434:84f1:a491:babc:7308:bf0/tcp/4001/p2p/12D3KooWJecc1MsmYT2sp2iS1KvNLQ187h8g6uQbniN8ghoEQzmp/p2p-circuit
/ip6/240e:390:434:84f1:a130:508:158:d6cc/tcp/4001/p2p/12D3KooWJecc1MsmYT2sp2iS1KvNLQ187h8g6uQbniN8ghoEQzmp/p2p-circuit
/ip6/::1/udp/4001/quic
/ip6/::1/tcp/4001
/ip4/172.105.192.229/tcp/4001/p2p/12D3KooWD6ejSQDKsGYCXw2EBByj3WJJmgbqub5csdXFE5GqwJ5D/p2p-circuit
/ip6/240e:390:434:84f1:5062:5af3:ba50:2860/tcp/4001/p2p/12D3KooWJecc1MsmYT2sp2iS1KvNLQ187h8g6uQbniN8ghoEQzmp/p2p-circuit
/ip6/240e:390:434:84f1:f802:b338:cce0:bc18/tcp/4001/p2p/12D3KooWJecc1MsmYT2sp2iS1KvNLQ187h8g6uQbniN8ghoEQzmp/p2p-circuit
/ip4/127.0.0.1/tcp/4001
/ip4/115.196.7.234/tcp/4001/p2p/12D3KooWJecc1MsmYT2sp2iS1KvNLQ187h8g6uQbniN8ghoEQzmp/p2p-circuit
/ip4/127.0.0.1/udp/4001/quic
/ip4/172.105.192.229/udp/4001/quic/p2p/12D3KooWD6ejSQDKsGYCXw2EBByj3WJJmgbqub5csdXFE5GqwJ5D/p2p-circuit
/ip6/64:ff9b::ac69:c0e5/tcp/4001/p2p/12D3KooWD6ejSQDKsGYCXw2EBByj3WJJmgbqub5csdXFE5GqwJ5D/p2p-circuit

This indicates that the public IP (non circuit relay addresses) isn’t advertised.

To make sure that it’s actually possible to connect to the node, I ran:

ipfs swarm connect /ip4/137.66.16.155/tcp/4001/p2p/12D3KooWPyYm32rgQwU5vtip42ASH6tkSSLfPo1gnYMkkZyjxaru

Which worked successfully.

How can I make sure that the node advertises the hard-coded public IP set in Addresses.Announce? I also tried Addresses.AppendAnnounce which didn’t work

1 Like

Quick update:

It seems that eventually the address was announced. In the end, I used the AppendAnnounce config:

ipfs config --json Addresses.AppendAnnounce '["/ip4/137.66.16.155/tcp/4001"]'
1 Like