====== Свой deb репозиторий ======

ример будет не гипотетический, а самый что ни на есть актуальный. Допустим, нам надо на парке серверов обновить filebeat от компании elastic, которая закрыла доступ к своим публичным репозиториям с территории РФ. Я включил прокси, скачал через браузер пакет [[https://www.elastic.co/downloads/beats/filebeat|filebeat-8.4.3-amd64.deb]]. 

Далее идём на сервер с Debian, где будем настраивать локальный репозиторий с помощью aptly. 
<code bash># apt install aptly</code>

Создаём конфиг **/etc/aptly.conf**. Содержимое берём из [[https://www.aptly.info/doc/aptly/config/show/|документации]], где меняем только **rootDir** и имя [[https://www.aptly.info/doc/feature/filesystem/|FileSystemPublishEndpoints]]. 

<code bash>{
 "rootDir": "/mnt/repo",
 "downloadConcurrency": 4,
 "downloadSpeedLimit": 0,
 "architectures": [],
 "dependencyFollowSuggests": false,
 "dependencyFollowRecommends": false,
 "dependencyFollowAllVariants": false,
 "dependencyFollowSource": false,
 "dependencyVerboseResolve": false,
 "gpgDisableSign": false,
 "gpgDisableVerify": false,
 "gpgProvider": "gpg",
 "downloadSourcePackages": false,
 "skipLegacyPool": true,
 "ppaDistributorID": "elk",
 "ppaCodename": "",
 "FileSystemPublishEndpoints": {
  "elkrepo": {
   "rootDir": "/var/www/aptly",
   "linkMethod": "symlink",
   "verifyMethod": "md5"
  }
 },
 "enableMetricsEndpoint": false
}
</code>
Создаём необходимые директории:
<code bash># mkdir -p /mnt/repo /var/www/aptly</code>

Создаю репозиторий для Debian 11:
<code bash># aptly repo create -distribution="bullseye" elk</code>
Копирую на сервер пакет и добавляю его в репозиторий:
<code bash># aptly repo add elk ~/filebeat-8.4.3-amd64.deb</code>

Создаю gpg ключ для репозитория:
<code bash># gpg --default-new-key-algo rsa4096 --gen-key --keyring pubring
Real name: elkrepo</code>

Публикуем репозиторий с этим ключом:
<code bash># aptly publish repo elk</code>

Далее вам нужно поднять любой веб сервер и настроить через него доступ к директории **/var/www/aptly**. Если не хочется это делать, можно запустить сам aptly как веб сервер (дефолтный порт 8080):
<code bash># aptly serve</code>

Он автоматом создаст и опубликует директорию /mnt/repo/public. Для удобства можно туда выгрузить публичный ключ:
<code bash># gpg --export --armor > /mnt/repo/public/elkrepo.asc</code>

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

Теперь идём на клиенты и подключаем репозиторий. Для этого создаём файл **/etc/apt/sources.list.d/elk_repo.list**:

<code bash>deb http://10.20.1.56:8080 bullseye main</code>

Обновляем пакеты и устанавливаем или обновляем **filebeat**:
<code bash># apt update && apt install filebeat</code>
