Node 1
for item in `curl -sL http://localhost:14002/api/sno | jq '.satellites[].id' -r`; do
curl -s http://localhost:14002/api/sno/satellite/$item | \
jq '{id: .id, auditHistory: [.auditHistory.windows[] | select(.totalCount != .onlineCount)]}'
done
Returns the following:
{
"id": "1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE",
"auditHistory": []
}
{
"id": "121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6",
"auditHistory": []
}
{
"id": "12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S",
"auditHistory": [
{
"windowStart": "2025-04-13T12:00:00Z",
"totalCount": 8,
"onlineCount": 7
},
{
"windowStart": "2025-04-19T00:00:00Z",
"totalCount": 12,
"onlineCount": 11
},
{
"windowStart": "2025-04-21T00:00:00Z",
"totalCount": 11,
"onlineCount": 10
}
]
}
{
"id": "12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs",
"auditHistory": []
}
Node 2
for item in `curl -sL http://localhost:14003/api/sno | jq '.satellites[].id' -r`; do
curl -s http://localhost:14003/api/sno/satellite/$item | \
jq '{id: .id, auditHistory: [.auditHistory.windows[] | select(.totalCount != .onlineCount)]}'
done
Returns the following:
jq: error (at <stdin>:1): Cannot iterate over null (null)
{
"id": "121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6",
"auditHistory": []
}
{
"id": "12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S",
"auditHistory": [
{
"windowStart": "2025-04-21T00:00:00Z",
"totalCount": 7,
"onlineCount": 6
}
]
}
jq: error (at <stdin>:1): Cannot iterate over null (null)
Node 3
for item in `curl -sL http://localhost:14004/api/sno | jq '.satellites[].id' -r`; do
curl -s http://localhost:14004/api/sno/satellite/$item | \
jq '{id: .id, auditHistory: [.auditHistory.windows[] | select(.totalCount != .onlineCount)]}'
done
Returns the following:
jq: error (at <stdin>:1): Cannot iterate over null (null)
{
"id": "121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6",
"auditHistory": []
}
{
"id": "12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S",
"auditHistory": [
{
"windowStart": "2025-04-13T12:00:00Z",
"totalCount": 5,
"onlineCount": 4
}
]
}
{
"id": "12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs",
"auditHistory": []
}
Node 4
for item in `curl -sL http://localhost:14005/api/sno | jq '.satellites[].id' -r`; do
curl -s http://localhost:14005/api/sno/satellite/$item | \
jq '{id: .id, auditHistory: [.auditHistory.windows[] | select(.totalCount != .onlineCount)]}'
done
Returns the following:
{
"id": "1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE",
"auditHistory": []
}
{
"id": "121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6",
"auditHistory": []
}
{
"id": "12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S",
"auditHistory": [
{
"windowStart": "2025-04-13T12:00:00Z",
"totalCount": 4,
"onlineCount": 3
},
{
"windowStart": "2025-04-19T00:00:00Z",
"totalCount": 9,
"onlineCount": 8
},
{
"windowStart": "2025-04-21T00:00:00Z",
"totalCount": 12,
"onlineCount": 11
},
{
"windowStart": "2025-04-22T00:00:00Z",
"totalCount": 4,
"onlineCount": 3
}
]
}
{
"id": "12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs",
"auditHistory": []
}
Node 5
for item in `curl -sL http://localhost:14006/api/sno | jq '.satellites[].id' -r`; do
curl -s http://localhost:14006/api/sno/satellite/$item | \
jq '{id: .id, auditHistory: [.auditHistory.windows[] | select(.totalCount != .onlineCount)]}'
done
Returns the following:
jq: error (at <stdin>:1): Cannot iterate over null (null)
{
"id": "121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6",
"auditHistory": []
}
{
"id": "12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S",
"auditHistory": [
{
"windowStart": "2025-04-19T00:00:00Z",
"totalCount": 9,
"onlineCount": 8
}
]
}
{
"id": "12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs",
"auditHistory": []
}
Node 6
for item in `curl -sL http://localhost:14007/api/sno | jq '.satellites[].id' -r`; do
curl -s http://localhost:14007/api/sno/satellite/$item | \
jq '{id: .id, auditHistory: [.auditHistory.windows[] | select(.totalCount != .onlineCount)]}'
done
Returns the following:
{
"id": "1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE",
"auditHistory": []
}
{
"id": "121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6",
"auditHistory": []
}
{
"id": "12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S",
"auditHistory": [
{
"windowStart": "2025-04-19T00:00:00Z",
"totalCount": 6,
"onlineCount": 5
}
]
}
{
"id": "12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs",
"auditHistory": []
}
You can then check your router/firewall logs for those dates to see if connections were blocked and possibly why.
I tried with sudo grep "Lun 21 00:00:00" /var/log/ufw.log
and sudo grep "2025-04-21 00:00:00" /var/log/ufw.log
or sudo grep "Lun 21 00:00" /var/log/ufw.log
and sudo grep "2025-04-21 00:00" /var/log/ufw.log
but no logs were printed.
So I tried with a more specific command such as: sudo grep "Lun 21 00:" /var/log/ufw.log | awk '{if ($1 == "Lun" && $2 == "21" && $3 >= "00:00" && $3 <= "00:15") print $0}'
but again without success
You may also have messages like “ping satellite failed” in the node’s logs. In the last case please check that the DDNS updater is configured on your router (usually in DDNS section) instead of the app on your PC.
I tried with sudo docker logs <Node Name 1-2-3-4-5-6> | grep "Ping satellite failed"
but again no logs were printed.
Are we sure that the issue isn’t directly related to the servers themselves?
All the other servers never experienced any downtime and all the nodes still have 100% uptime.
PS: Also, does anyone know why my 3rd node has been already updated to 1.126.2 more than 3 days ago meanwhile the others nodes are still running 1.125.2?
Watchtower is running correctly and apparently working.