actions/checkout тянет свой код с github.com и берёт URL из внутреннего
server_url — оба варианта требуют сети, которой у джоб-контейнера
раннера нет вообще (ни наружу, ни туда). Ручной git clone по
http://gitea:3000/... остаётся внутри docker-сети раннера/Gitea.
actions/checkout использует внутренний server_url Gitea (http://gitea:3000/...),
который джоб-контейнер раннера не резолвит (не в docker-сети Gitea).
Явный git clone по https://git.cactoz.su/... не зависит от этой внутренней сети.
.gitea/workflows/deploy.yml: пуш в main -> build+up прямо на runner'е
(docker.sock смонтирован, registry и SSH не нужны).
docker-compose.prod.yml: внешняя сеть caddy_net, container_name cactoz-nginx
для reverse_proxy из Caddy.
gameserver/Dockerfile: зависимости (uSockets/json) вынесены в отдельный
кэшируемый слой — пересборка после правки src/ упала с ~6.5 мин до ~9 сек.