В последнее время навводили кучу запретов на загрузку софта с IP адресов РФ. Я покажу на наглядном примере, как поднять свой deb репозиторий, наполнить его санкционным софтом и использовать в своей инфраструктуре.
Пример будет не гипотетический, а самый что ни на есть актуальный. Допустим, нам надо на парке серверов обновить filebeat от компании elastic, которая закрыла доступ к своим публичным репозиториям с территории РФ. Я включил прокси, скачал через браузер пакет filebeat-8.4.3-amd64.deb.
Далее идём на сервер с Debian, где будем настраивать локальный репозиторий с помощью aptly.
Создаём конфиг /etc/aptly.conf. Содержимое берём из документации, где меняем только rootDir и имя FileSystemPublishEndpoints.
Создаём необходимые директории:
Создаю репозиторий для Debian 11:
Копирую на сервер пакет и добавляю его в репозиторий:
Создаю gpg ключ для репозитория:
Публикуем репозиторий с этим ключом:
Далее вам нужно поднять любой веб сервер и настроить через него доступ к директории /var/www/aptly. Если не хочется это делать, можно запустить сам aptly как веб сервер (дефолтный порт 8080):
Он автоматом создаст и опубликует директорию /mnt/repo/public. Для удобства можно туда выгрузить публичный ключ:
Можно зайти браузером на 8080 порт сервера и посмотреть содержимое репозитория вместе с gpg ключом.
Теперь идём на клиенты и подключаем репозиторий. Для этого создаём файл /etc/apt/sources.list.d/elk_repo.list:
Обновляем пакеты и устанавливаем или обновляем filebeat:
Инструкцию написал и проверил лично, так как надо было для дела. Можете заполнить этот репозиторий всеми пакетами elastic и пользоваться.
#debian #elk #aptly
Пример будет не гипотетический, а самый что ни на есть актуальный. Допустим, нам надо на парке серверов обновить filebeat от компании elastic, которая закрыла доступ к своим публичным репозиториям с территории РФ. Я включил прокси, скачал через браузер пакет filebeat-8.4.3-amd64.deb.
Далее идём на сервер с Debian, где будем настраивать локальный репозиторий с помощью aptly.
# apt install aptlyСоздаём конфиг /etc/aptly.conf. Содержимое берём из документации, где меняем только rootDir и имя FileSystemPublishEndpoints.
{ "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}Создаём необходимые директории:
# mkdir -p /mnt/repo /var/www/aptlyСоздаю репозиторий для Debian 11:
# aptly repo create -distribution="bullseye" elkКопирую на сервер пакет и добавляю его в репозиторий:
# aptly repo add elk ~/filebeat-8.4.3-amd64.debСоздаю gpg ключ для репозитория:
# gpg --default-new-key-algo rsa4096 --gen-key --keyring pubringReal name: elkrepoПубликуем репозиторий с этим ключом:
# aptly publish repo elkДалее вам нужно поднять любой веб сервер и настроить через него доступ к директории /var/www/aptly. Если не хочется это делать, можно запустить сам aptly как веб сервер (дефолтный порт 8080):
# aptly serveОн автоматом создаст и опубликует директорию /mnt/repo/public. Для удобства можно туда выгрузить публичный ключ:
# gpg --export --armor > /mnt/repo/public/elkrepo.ascМожно зайти браузером на 8080 порт сервера и посмотреть содержимое репозитория вместе с gpg ключом.
Теперь идём на клиенты и подключаем репозиторий. Для этого создаём файл /etc/apt/sources.list.d/elk_repo.list:
deb http://10.20.1.56:8080 bullseye mainОбновляем пакеты и устанавливаем или обновляем filebeat:
# apt update && apt install filebeatИнструкцию написал и проверил лично, так как надо было для дела. Можете заполнить этот репозиторий всеми пакетами elastic и пользоваться.
#debian #elk #aptly
👍123👎4
Забавная история случилась с моим репозиторием для ELK Stack. Специально расположил его на VPS, арендованном в USA, чтобы было удобнее скачивать новые пакеты и обновлять репозитории. И вот на днях решил в очередной раз его обновить и очень удивился, когда не смог ничего скачать по свежим ссылкам. Получал
Пришлось через другой сервер качать и обновлять репозиторий. Теперь его можно и в Россию вернуть. Один фиг качать через прокладки придётся. Я там всю структуру переделал, добавив сразу Debian 11 и 12, чтобы удобнее было. Настроил всё с помощью aptly, так что сразу кратко все команды приведу, а то постоянно забываю и приходится каждый раз в документацию лезть, когда с ним работаешь.
Ставим:
Конфиг
Под репы выделил каталог
Добавляем туда пакеты:
Создаю gpg ключ для репозиториев:
Публикую репозитории:
В директории
Осталось положить ключ в публичную директорию:
На этом всё. Запускаем веб сервер и подключаем репозитории к системам:
Устанавливаем ключ:
На Debian 12 увидите предупреждение, что
Если нужно добавить пакеты, то делаем так:
Если надо удалить пакет:
Ещё полезные команды aptly:
#debian #elk #aptly
ERROR 403: Forbidden. Проверил на другом иностранном сервере, скачал без проблем. То есть мой VPS забанили. Не понятно, в рамках чего это было сделано. Кто-то стуканул или какая-то другая причина. Обновлял я в ручном режиме и запросами не спамил. IP (188.227.57.126) по всем базам сшашный. Пришлось через другой сервер качать и обновлять репозиторий. Теперь его можно и в Россию вернуть. Один фиг качать через прокладки придётся. Я там всю структуру переделал, добавив сразу Debian 11 и 12, чтобы удобнее было. Настроил всё с помощью aptly, так что сразу кратко все команды приведу, а то постоянно забываю и приходится каждый раз в документацию лезть, когда с ним работаешь.
Ставим:
# apt install aptlyКонфиг
/etc/aptly.conf:{ "rootDir": "/mnt/aptly", "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": "elastic", "ppaCodename": "", "FileSystemPublishEndpoints": { "elastic": { "rootDir": "/mnt/aptly", "linkMethod": "symlink", "verifyMethod": "md5" } }, "enableMetricsEndpoint": false}Под репы выделил каталог
/mnt/aptly. Создаём 2 репозитория:# aptly repo create -comment="Elastic repo" -component="main" \-distribution="bullseye" -architectures="amd64" elastic-bullseye# aptly repo create -comment="Elastic repo" -component="main" \-distribution="bookworm" -architectures="amd64" elastic-bookwormДобавляем туда пакеты:
# aptly repo add elastic-bullseye elasticsearch-8.9.2-amd64.deb.......# aptly repo add elastic-bookworm elasticsearch-8.9.2-amd64.deb.......Создаю gpg ключ для репозиториев:
# gpg --default-new-key-algo rsa4096 --gen-key --keyring pubringПубликую репозитории:
# aptly publish repo elastic-bullseye# aptly publish repo elastic-bookwormВ директории
/mnt/aptly появляются две директории: db, public. Ту, что public, надо опубликовать через web сервер. Вот мой конфиг nginx:server { listen 80 default_server; server_name elasticrepo.serveradmin.ru; root /mnt/aptly/public/; access_log /var/log/nginx/aptly-access.log main; error_log /var/log/nginx/aptly-error.log; location / { autoindex on; }}Осталось положить ключ в публичную директорию:
# gpg --export --armor > /mnt/repo/public/elastic.ascНа этом всё. Запускаем веб сервер и подключаем репозитории к системам:
# echo "deb http://elasticrepo.serveradmin.ru bullseye main" \| tee /etc/apt/sources.list.d/elasticrepo.list# echo "deb http://elasticrepo.serveradmin.ru bookworm main" \| tee /etc/apt/sources.list.d/elasticrepo.listУстанавливаем ключ:
# wget -qO - http://elasticrepo.serveradmin.ru/elastic.asc | apt-key add -На Debian 12 увидите предупреждение, что
apt-key is deprecated, но это не критично. Теперь можно обновлять репозитории и устанавливать из них пакеты. Если нужно добавить пакеты, то делаем так:
# aptly repo add elastic-bullseye elasticsearch-9.0.0-amd64.deb# aptly publish update bullseyeЕсли надо удалить пакет:
# aptly repo remove elastic-bullseye elasticsearch_8.5.2_amd64# aptly publish update bullseye# aptly db cleanupЕщё полезные команды aptly:
# aptly repo list# aptly package search logstash# aptly repo show -with-packages elastic-bullseye#debian #elk #aptly
👍71👎1
Потихоньку обновляю статью про ELK Stack. Так как к репозиториям Elastic нет прямого доступа с IP адресов России, специально поднял именно для этой статьи простенький репозиторий на небольшом VPS в USA. Понятно, что можно этого не делать, так как есть различные зеркала. Но мне, чтобы не проверять каждый раз ссылки и не сверять версии, удобнее всё замкнуть на себя, чтобы статья была самодостаточной, актуальной и всегда воспроизводилась по написанной последовательности команд. У меня нет возможности обновлять её после каждого нового релиза.
Для этого я поднял свой репозиторий для Debian на Aptly. Это максимально простой и неприхотливый по ресурсам инструмент. Я уже рассказывал про его настройку ранее. С тех пор он так и трудится уже несколько лет (с 2022-го года) и не требует к себе никакого внимания. Достаточно только новые пакеты время от времени туда загружать и обновлять веб сервер.
В этот раз нужно было добавить репозиторий для Debian 13 Trixy. Делается это в несколько команд, если ранее всё уже было настроено для предыдущих версий:
Репозиторий со свежими пакетами, которые предварительно скачал, готов. Подключить к своей системе можно так:
Показываю просто для примера. Использовать этот репозиторий для установки продуктов elastic не надо, так как я регулярно его не обновляю, только вместе со статьёй. Есть копия всего репозитория у Яндекса: https://mirror.yandex.ru/mirrors/elastic/. Там все версии всех пакетов, то есть полная копия официального зеркала.
Aptly удобен, если вы хотите полностью контролировать обновления каких-то пакетов у себя в инфраструктуре. Создаёте свой репозиторий и обновляетесь с него. Так вы точно будете уверены в том, что установленная версия будет проверенная и утверждённая вами.
Для добавления новых пакетов написал простой скрипт, который скачивает указанные версии и добавляет во все локальные репозитории.
Достаточно указать желаемую версию в VERS и запустить скрипт.
Инструментов для создания собственных репозиториев много. Я пробовал некоторые из них. Aptly понравился больше всего за его лёгкость и простую логику работы. Он по сути формирует всё, что нужно, и отдаёт веб серверу. Никакой сервис с его стороны не нужен и постоянно не работает.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX
#aptly
Для этого я поднял свой репозиторий для Debian на Aptly. Это максимально простой и неприхотливый по ресурсам инструмент. Я уже рассказывал про его настройку ранее. С тех пор он так и трудится уже несколько лет (с 2022-го года) и не требует к себе никакого внимания. Достаточно только новые пакеты время от времени туда загружать и обновлять веб сервер.
В этот раз нужно было добавить репозиторий для Debian 13 Trixy. Делается это в несколько команд, если ранее всё уже было настроено для предыдущих версий:
# aptly repo create -comment="Elastic repo" -component="main" -distribution="trixie" -architectures="amd64" elastic-trixie# aptly repo add elastic-trixie filebeat-*-amd64.deb elasticsearch-*-amd64.deb kibana-*-amd64.deb logstash-*-amd64.deb filebeat-*-amd64.deb# aptly publish repo elastic-trixieРепозиторий со свежими пакетами, которые предварительно скачал, готов. Подключить к своей системе можно так:
# wget -qO - http://elasticrepo.serveradmin.ru/elastic.asc | gpg --dearmor -o /usr/share/keyrings/elastic.gpg# echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] http://elasticrepo.serveradmin.ru trixie main" | tee /etc/apt/sources.list.d/elasticrepo.list# apt updateПоказываю просто для примера. Использовать этот репозиторий для установки продуктов elastic не надо, так как я регулярно его не обновляю, только вместе со статьёй. Есть копия всего репозитория у Яндекса: https://mirror.yandex.ru/mirrors/elastic/. Там все версии всех пакетов, то есть полная копия официального зеркала.
Aptly удобен, если вы хотите полностью контролировать обновления каких-то пакетов у себя в инфраструктуре. Создаёте свой репозиторий и обновляетесь с него. Так вы точно будете уверены в том, что установленная версия будет проверенная и утверждённая вами.
Для добавления новых пакетов написал простой скрипт, который скачивает указанные версии и добавляет во все локальные репозитории.
#!/bin/bash
VERS="9.0.8"
PACKAGES="elasticsearch kibana logstash filebeat"
DISTROS="bullseye bookworm trixie"
# Download
for pkg in $PACKAGES; do
if [ "$pkg" = "filebeat" ]; then
path="beats/filebeat"
else
path="$pkg"
fi
wget https://artifacts.elastic.co/downloads/${path}/${pkg}-${VERS}-amd64.deb
done
# Add package and publish
for distro in $DISTROS; do
for pkg in $PACKAGES; do
aptly repo add elastic-${distro} ${pkg}-${VERS}-amd64.deb
done
aptly publish update $distro
done
Достаточно указать желаемую версию в VERS и запустить скрипт.
Инструментов для создания собственных репозиториев много. Я пробовал некоторые из них. Aptly понравился больше всего за его лёгкость и простую логику работы. Он по сути формирует всё, что нужно, и отдаёт веб серверу. Никакой сервис с его стороны не нужен и постоянно не работает.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#aptly
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82👎3