Перейти к содержимому

Хостинг пакетов для команд и CI

Свой репозиторий Linux-пакетов без своего сервера

Загрузите .deb, .rpm или .apk одной командой. PackageCloud подпишет пакет и раздаст его с getpkg.ru, а ваши серверы и CI поставят его обычными apt, dnf и apk.

Как пакет попадает к клиентамpcloud push загружает файл в репозиторий acme/tools, откуда его берут apt, dnf и apk.pcloud pushacme/toolsaptdnfapk

Шаг 1 из 3: Опубликовать

acme/tools · deb
pcloud push acme/tools/debian/sid ./hello_1.0.0-1_amd64.deb --wait
# файл разобран, подписан и уже в индексе
  • deb

    apt · Debian, Ubuntu

  • rpm

    dnf, yum · EL, Fedora

  • apk

    Alpine Linux

  • GPG + RSA

    защита от подмены

  • getpkg.ru

    скачивание без паролей

01Публикацияpcloud push acme/tools/debian/sid ./hello_1.0.0-1_amd64.deb --wait

Пакет готов к установке сразу после загрузки

Вы загружаете файл, остальное PackageCloud делает сам: читает описание пакета, подписывает его и обновляет списки пакетов (индексы) для apt, dnf и apk.

Загрузка одной командой. Из терминала (pcloud push), из пайплайна CI или через форму в личном кабинете.

pcloud push acme/tools/debian/sid ./hello_1.0.0-1_amd64.deb --wait
# опубликовано в acme/tools · debian/sid

Описание берётся из файла. Имя, версию, архитектуру и зависимости не нужно вводить вручную.

hello_1.0.0-1_amd64.deb

Package
hello
Version
1.0.0-1
Architecture
amd64
Depends
libc6

Подпись ставится сама. Ключ репозитория подписывает списки пакетов, а rpm и apk ещё и сами файлы. Серверы проверяют подпись и не поставят подменённый пакет.

ключ репозиторияInRelease repomd.xml APKINDEX

✓ 421F28FE…6F87040E

Списки пакетов обновляются сами. Release, repodata и APKINDEX пересобираются после каждой загрузки, и новая версия сразу видна серверам.

  • Release
  • repodata
  • APKINDEX

02Подключениеcurl -fsSL https://getpkg.ru/pcloud/stable/install.sh | sudo sh

Сервер подключается одной командой

Скрипт сам определит дистрибутив, добавит репозиторий и ключ подписи. Дальше пакеты ставятся обычным apt, dnf или apk.

Одна команда на сервер. curl для Debian, Ubuntu и Enterprise Linux, wget для Alpine.

curl -fsSL https://getpkg.ru/pcloud/stable/install.sh | sudo sh
# На Alpine, где нет ни curl, ни sudo:
wget -qO- https://getpkg.ru/pcloud/stable/install.sh | sh

Скачивание без паролей. getpkg.ru отдаёт пакеты любому серверу, токены по машинам раскладывать не нужно.

getpkg.ru раздаёт пакеты клиентам apt, dnf и apkgetpkg.ruaptdnfapk

03Зеркалаdeb.debian.org → acme/debian-mirror

Внешние apt-репозитории рядом с вашими

Подключите внешний репозиторий, например Docker, как зеркало. Его копия раздаётся с getpkg.ru, и серверам не нужно ходить за пакетами во внешний интернет.

Копируется только нужное. Вы выбираете наборы (suites) и архитектуры, остальное не скачивается.

Внешние apt-репозитории синхронизируются в зеркало acme/debian-mirrordeb.debian.orgdownload.docker.comacme/debian-mirror

Один адрес и один ключ. Серверы подключают зеркало как обычный репозиторий.

  • Объём зеркала виден до начала загрузки.
  • Можно взять только нужные наборы и архитектуры.
  • Серверы не ходят во внешние репозитории.

04Команда и CIpcloud config set token <token>

Доступ для команды и CI

Сотрудники работают в общем пространстве команды (неймспейсе), у каждого своя роль. CI публикует пакеты под отдельным токеном и не получает лишних прав.

Пять ролей. От наблюдателя, который только смотрит, до владельца.

Токены для CI. Отдельный аккаунт с ролью разработчика публикует пакеты из пайплайна и не может менять настройки.

.gitlab-ci.yml
publish:
stage: deploy
image: pcloud
rules:
- if: $CI_COMMIT_TAG
script:
- pcloud push acme/tools/debian/sid ./dist/*.deb --wait
Пример для GitLab CI

Консольный клиент pcloud. Загружает, показывает и удаляет пакеты из терминала и CI. Один файл для Linux и macOS без зависимостей.

05Каталог/pcloud

Публичная страница для ваших пакетов

У каждого репозитория есть страница со списком пакетов, версиями для каждой ОС, файлами внутри и командой установки. Так выглядят и репозитории самого pcloud.

Поиск по имени пакета. Выберите ОС, архитектуру и версию, и страница покажет команду установки именно для них.

/pcloud/nginx
ОС: Ubuntu 24.04
  • nginx-module-brotli1.30.6+1.0.0debrpmapk
  • nginx-module-geoip21.30.6+3.4debrpmapk
  • nginx-module-headers-more1.30.6+0.39debrpmapk
  • nginx-module-vts1.30.6+0.2.5debrpmapk

06НадёжностьGPG · RSA · signed-by · gpgcheck

Безопасность, которую проверяет каждый сервер

Подпись, права доступа и раздача устроены так, чтобы подменённый пакет не дошёл до сервера, а секреты не хранились на машинах.

Подпись и проверка. Списки пакетов подписаны ключом репозитория: GPG для deb и rpm, RSA для apk. apt, dnf и apk проверяют подпись перед установкой.

Минимальные права. Пять ролей от наблюдателя до владельца. CI получает токен с ролью разработчика и не может менять настройки.

Никаких секретов на серверах. Пакеты и ключи скачиваются без токенов, поэтому на машинах не лежат пароли, которые могут утечь.

Работаем на себе. Консольный клиент pcloud публикуется через PackageCloud в репозиторий pcloud/stable.

Совместимость

Совместимость
debDebian, Ubuntu, Linux Mint
rpmRHEL, Rocky Linux, AlmaLinux, Oracle Linux 7–10 и Fedora 38–44
apkAlpine Linux 3.12–3.24 и edge

Начните с бесплатного репозитория

Регистрация займёт минуту, а первый пакет загружается одной командой.