pull-through кэширующее зеркало · rocketmirror.ru
Ускорьте свой CI.
Единое кэширующее зеркало пакетов и регистри рядом с вашими раннерами. Меньше внешних сетевых зависимостей, предсказуемые сборки, раздача из кэша — даже когда upstream недоступен.
# config.yaml — один источник = одно поле kind
sources:
- name: pypi
kind: pypi # apt | apk | pacman | rpm | oci | npm
upstreams: # cargo | rubygems | maven | composer
- https://pypi.org # go | gh | gl | http
cache: s3 # filesystem | s3 (rustfs)
- несколько upstream-зеркал с fallback
- пулы socks5/https-прокси
- метрики VictoriaMetrics
- облачные серверы — в России 🇷🇺
01
Что мы зеркалируем
Один движок кэширования и маршрутизации — тип источника задаётся полем kind.
Эндпоинты и доступ
Каждый источник — свой поддомен. Доступ ко всем зеркалам — по токену: в заголовке Authorization: Bearer <token> или прямо в URL (https://<token>@npm.rocketmirror.ru/…).
| Эндпоинт | Что зеркалирует |
|---|---|
| docker.rocketmirror.ru | Docker/OCI — registry-1.docker.io |
| npm.rocketmirror.ru | npm — registry.npmjs.org |
| pypi.rocketmirror.ru | PyPI — pypi.org |
| cargo.rocketmirror.ru | crates.io |
| gems.rocketmirror.ru | rubygems.org |
| maven.rocketmirror.ru | Maven Central |
| composer.rocketmirror.ru | Packagist |
| debian / ubuntu / debian-security.rocketmirror.ru | apt — несколько зеркал с fallback |
| alpine.rocketmirror.ru | apk — dl-cdn.alpinelinux.org |
| arch.rocketmirror.ru | pacman — зеркала Arch с fallback |
| gh / gl.rocketmirror.ru | github.com / gitlab.com — со следованием редиректам |
| rust-static.rocketmirror.ru | static.rust-lang.org — тулчейны rustup |
| nextest.rocketmirror.ru | get.nexte.st |
| nodejs.rocketmirror.ru | nodejs.org |
| dl-google.rocketmirror.ru | dl.google.com — Chrome и др. |
| raw-gh.rocketmirror.ru | raw.githubusercontent.com |
| dl-minio.rocketmirror.ru | dl.min.io — клиент MinIO |
# Токен — в заголовке или прямо в URL
curl -H "Authorization: Bearer $RM_TOKEN" https://pypi.rocketmirror.ru/simple/requests/
curl "https://$RM_TOKEN@pypi.rocketmirror.ru/simple/requests/"
# apt — /etc/apt/sources.list.d/rocketmirror.sources
deb https://$RM_TOKEN@debian.rocketmirror.ru bookworm main
# npm — .npmrc
registry=https://npm.rocketmirror.ru/
//npm.rocketmirror.ru/:_authToken=${RM_TOKEN}
# Docker — /etc/docker/daemon.json
{ "registry-mirrors": ["https://docker.rocketmirror.ru"] }
# rustup
export RUSTUP_DIST_SERVER="https://rust-static.rocketmirror.ru"
Открытый список всего, что лежит в кеше: страница кеша или JSON /api/assets. Короткие адреса вроде /sccache/sccache-v0.10.0-x86_64-unknown-linux-musl.tar.gz — декларативные алиасы поверх GitHub-релизов.
02
Как это работает
Пакеты неизменяемы и адресуются по содержимому — кэш не может «протухнуть» по смыслу.
Настройте источник
Добавьте источник в конфиг с явным полем kind: pypi, oci, apt, gh… Укажите одно или несколько upstream-зеркал.
Запрос пакета
Ваши pip, npm, docker и apt идут на RocketMirror как на обычный реестр.
Кэш и проверка
Проверяем кэш, при промахе загружаем с upstream, валидируем контрольные суммы и подписи (GPG), складываем в layered-хранилище.
Отдача из кэша
Дальше пакет раздаётся мгновенно из кэша — даже когда upstream недоступен. Сбой внешней сети больше не ломает CI.
03
Для DevOps
Зеркало знает, что реально скачивалось через него, — и помогает держать инфраструктуру в актуальном состоянии.
Предупреждения об обновлениях
Сервер предупреждает, если вы долго не обновляли пакеты — как apticron, но на основе того, что реально скачивалось через зеркало. Для этого сценария выдаются приватные mirror-ссылки.
Устаревшие пакеты
Логи и предупреждения о версиях, по которым давно вышли обновления — по данным прошедшего через зеркало трафика.
Уязвимые пакеты
Предупреждения об известных уязвимостях в пакетах, которые тянет ваша инфраструктура.
04
Модель ценообразования
Коротко и честно.
Бесплатно
0 ₽
- Базовое зеркалирование всех экосистем
- Лимит трафика на IP-адрес
- Лимиты рассчитаны на обычного пользователя
Для CI
приватные токены
- Высокое потребление в CI без лимитов по IP
- Платные приватные токены на зеркало
- Позже — аутентифицированные per-user mirror-ссылки
05
Два режима
Один и тот же движок — у вас на сервере или в нашем облаке.
Self-hosted
- Развёртывание на своей инфраструктуре
- Хранилище: файловая система + S3/RustFS (layered)
- Свои источники, upstream-зеркала и прокси-пулы
- Метрики в VictoriaMetrics
SaaS — облако
- Готовые эндпоинты на rocketmirror.ru
- Серверы в России — низкая задержка для команд и CI в РФ
- Без серверов и обслуживания
- Автоматические обновления и мониторинг
- Те же протоколы и конфигурация
06
Используем и вдохновляемся
Проекты, на плечах которых мы стоим.