{"id":23104094,"url":"https://github.com/glueops/docker-compose-container-registry-pull-through-caches","last_synced_at":"2026-04-26T12:32:23.806Z","repository":{"id":214925941,"uuid":"737696954","full_name":"GlueOps/docker-compose-container-registry-pull-through-caches","owner":"GlueOps","description":"A Docker Compose configuration that sets up pull-through caches for multiple container registries (Docker Hub, Quay.io, GHCR, GCR, AWS ECR, MCR, GitLab). It helps reduce rate limiting and improve pull speeds by caching container images locally, running multiple registry mirrors on different ports.","archived":false,"fork":false,"pushed_at":"2026-04-15T23:48:06.000Z","size":53,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-16T01:25:29.996Z","etag":null,"topics":["cache","container-cache","container-registry","containers","docker","docker-compose","image-caching","mirror","proxy","pull-through","rate-limit-bypass","registry","registry-mirror"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GlueOps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-01T05:54:37.000Z","updated_at":"2025-09-20T15:56:51.000Z","dependencies_parsed_at":"2026-03-31T07:02:35.673Z","dependency_job_id":null,"html_url":"https://github.com/GlueOps/docker-compose-container-registry-pull-through-caches","commit_stats":null,"previous_names":["glueops/docker-compose-container-registry-pull-through-caches"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/GlueOps/docker-compose-container-registry-pull-through-caches","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GlueOps%2Fdocker-compose-container-registry-pull-through-caches","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GlueOps%2Fdocker-compose-container-registry-pull-through-caches/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GlueOps%2Fdocker-compose-container-registry-pull-through-caches/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GlueOps%2Fdocker-compose-container-registry-pull-through-caches/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GlueOps","download_url":"https://codeload.github.com/GlueOps/docker-compose-container-registry-pull-through-caches/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GlueOps%2Fdocker-compose-container-registry-pull-through-caches/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32297893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cache","container-cache","container-registry","containers","docker","docker-compose","image-caching","mirror","proxy","pull-through","rate-limit-bypass","registry","registry-mirror"],"created_at":"2024-12-17T00:31:18.984Z","updated_at":"2026-04-26T12:32:23.798Z","avatar_url":"https://github.com/GlueOps.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-compose-container-registry-pull-through-caches\n\n# Deployment\n\nTo deploy in hetzner, go to Hetzner cloud console and look for the project called \"container-registry-cache\".\n\nCreate a new instance in hetzner cloud:\n- 3 or more vCPU's (e.g. CPX21 or CPX32)\n- Keep a public IPv4\n- Remove IPv6 address\n- Attach the firewall rule that blocks all incoming connections\n- Use cloud-init config below but update the --authKey for tailscale.\n\n\nYou can create an authKey in tailscale as follows:\n\n\u003cimg width=\"745\" height=\"1164\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bfced0e9-e3e0-4f89-87ca-21b0497ad988\" /\u003e\n\n\n# cloud-init/config:\n\n```yaml\n#cloud-config\n\n# --- 1. System Configuration ---\n# Sets the system hostname and manages the /etc/hosts file.\n# :exclamation:️ Replace \"container-registry-cache-for-dev\" with your desired hostname.\nhostname: container-registry-cache-for-dev\nmanage_etc_hosts: true\n\n# --- 2. Setup Commands ---\nruncmd:\n  # Install Tailscale and Docker\n  - 'curl -fsSL https://tailscale.com/install.sh | sh'\n  - 'curl -fsSL https://get.docker.com -o get-docker.sh'\n  - 'sh get-docker.sh'\n  - 'sudo apt-get update \u0026\u0026 sudo apt install tmux git -y \u0026\u0026 sudo apt-get clean'\n\n  # Configure and connect to Tailscale in a single step\n  # :exclamation:️ Replace \"tskey-auth-...\" with your actual Tailscale auth key.\n  - ['tailscale', 'up', '--authkey=YOUR_TAILSCALE_AUTH_KEY_HERE', '--ssh']\n\n  # Secure the root account by disabling password login\n  - ['passwd', '-d', 'root']\n\n  # Deploy the Docker Compose application\n  # :exclamation:️ Replace the URL with the actual link to your compose file.\n  - 'cd /opt \u0026\u0026 git clone https://github.com/GlueOps/docker-compose-container-registry-pull-through-caches.git'\n  - 'cd /opt/docker-compose-container-registry-pull-through-caches \u0026\u0026 docker compose up -d'\n```\n\n\nOnce you have an instance running, update the `dev-only-registry` DNS entry to use the new tailscale IP of the node you just added and assuming everything is working destroy the old hetzner node and remove it from tailscale\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglueops%2Fdocker-compose-container-registry-pull-through-caches","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglueops%2Fdocker-compose-container-registry-pull-through-caches","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglueops%2Fdocker-compose-container-registry-pull-through-caches/lists"}