REGISTRY_URL var was empty so docker login fell through to Docker Hub. Now strips protocol from gitea.server_url to get the registry hostname — no manual variable needed. docker-compose defaults to the known host. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>