# Apt-Cacher NG

<https://interface31.ru/tech_it/2023/08/ustanovka-i-nastroyka-aptcacherng-keshiruyushhego-servera-obnovleniy-dlya-debian-i-ubuntu.html>

![](https://296194292-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLoAqAoOfr7XVUQw7Gff8%2Fuploads%2Fgit-blob-1e7dd9b4980af5dc66cb6da7c393c71a6814c1c0%2Fapt-cacher-ng-000.png?alt=media)

Любая современная система требует регулярного обновления и Linux не исключение, но как бы ни был организован этот процесс мы столкнемся с постоянной нагрузкой на канал и повышенным расходом трафика, так как каждый компьютер будет скачивать обновления самостоятельно из сети интернет. При этом, даже если вас не волнует трафик, данный процесс занимает время и не всегда зеркала репозиториев отдают данные на хорошей скорости, поэтому становится актуальным создание локального кеша пакетов, в чем нам поможет Apt-Cacher NG. Его просто установить и еще проще использовать.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на [углубленном курсе по администрированию MikroTik](https://xn-----xlcfvffioc4g.xn--p1ai/lp-mikrotik-mtcna?utm_source=interface31\&utm_medium=cpc\&utm_campaign=16-1489). Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Как указано в заголовке, Apt-Cacher NG - кеширующий прокси-сервер, который становится посредником между клиентом и зеркалом репозитория и сохраняет в собственное хранилище все загруженные из сети пакеты. При повторном запросе он проверит кеш и при наличии в нем требуемого пакета отдаст его локально. Это позволяет существенно экономить как трафик, так и время и последний фактор сегодня играет все более значимую роль.

Каких-то существенных требований к железу Apt-Cacher NG не предъявляет и прекрасно работает в виртуальной машине или контейнере. Все что вам нужно - это выделить достаточное место для хранилища кеша пакетов. Теоретически его размер может быть равен объему всех используемых репозиториев, но на практике запросы гораздо скромнее и зависят только от разнообразия систем и количества установленных в них пакетов.

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

Первоначально Apt-Cacher NG поддерживал только DEB-пакеты, сегодня это универсальный прокси, который можно использовать с любыми пакетными системами, но это выходит за рамки данной статьи и ниже мы будем рассматривать его применение исключительно в среде Debian или Ubuntu.

### Установка и первоначальная настройка Apt-Cacher NG

Установить пакет просто, он есть в стандартных репозиториях:

```
apt install apt-cacher-ng
```

В процессе установки вам будет задан вопрос: разрешаете ли вы использование HTTP-туннелей. С одной стороны это облегчает работу с программой, в частности при доступе к HTTPS-репозиториям, с другой создает угрозу безопасности, так как пользователи смогут использовать такой туннель не только для скачивания обновлений, но и для выхода в интернет. Если для вас это не критично, то рекомендуем использование туннелей разрешить, что упростит дальнейшую эксплуатацию.

![](https://296194292-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLoAqAoOfr7XVUQw7Gff8%2Fuploads%2Fgit-blob-45bb2cce332840df433c085931d54654ba63e713%2Fapt-cacher-ng-001-thumb-600xauto-18015.png?alt=media)

В остальном служба не требует каких-либо настроек и начинает работать сразу после установки, для приема соединений используется порт **3142 TCP**. Тем не менее заглянем в конфигурационный файл **/etc/apt-cacher-ng/acng.conf**.

Прежде всего нам может быть интересна опция, определяющая расположение хранилище кеша пакетов, по умолчанию она имеет значение:

```
CacheDir: /var/cache/apt-cacher-ng
```

Вы можете задать собственный путь к хранилищу, однако после этого вам потребуется откорректировать его также в файле юнита /lib/systemd/system/apt-cacher-ng.service, для этого используйте команду:

```
systemctl edit apt-cacher-ng.service
```

Затем раскомментируйте и замените значение в строке:

```
RequiresMountsFor=/var/cache/apt-cacher-ng
```

Сохраните файл, перечитайте список юнитов systemd и перезапустите службу:

```
systemctl daemon-reload
systemctl restart apt-cacher-ng

```

Вторая опция, которая может быть нам интересна - это привязка службы к адресам или интерфейсам, по умолчанию Apt-Cacher NG прослушивает все сетевые интерфейсы. Чтобы изменить это поведение раскомментируйте и измените опцию:

```
BindAddress: localhost 192.168.7.254
```

Остальные опции не представляют особого практического интереса.

Если вы при установке не разрешили создание HTTP-туннелей, то доступ к репозиториям использующим HTTPS будет невозможен, поэтому если вы используете такие репозитории, то нужно отдельно прописать разрешения на доступ к ним. Для этого следует использовать отдельный конфигурационный файл, выполним:

```
nano /etc/apt-cacher-ng/zzz_override.conf
```

Если файл не существует, то он будет создан и открыт на редактирование, иначе просто открыт. Если же вам больше нравится редактор mc, то замените в команде **nano** на **mcedit**.

Для примера возьмем репозиторий браузера Opera:

```
deb https://deb.opera.com/opera-stable/ stable non-free
```

Из него нам нужно узнать адрес, т.е. **deb.opera.com**, затем добавьте в файл **zzz\_override.conf** запись:

```
PassThroughPattern: ^deb\.opera\.com:443$
```

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

```
systemctl restart apt-cacher-ng
```

На этом настройка кеширующего прокси-сервера закончена.

### Настройка клиента через конфигурацию APT

Чтобы клиент начал использовать для доступа к репозиториям наш кеширующий сервер его нужно указать в настройках пакетного менеджера APT, для этого создадим отдельный конфигурационный файл:

```
nano /etc/apt/apt.conf.d/02aptproxy
```

И внесем в него следующие строки:

```
Acquire::http::proxy "http://192.168.111.72:3142";
Acquire::ftp::proxy "http://192.168.111.72:3142";
```

Где **192.168.111.72:3142** - адрес и порт нашего кеширующего сервера.

### Настройка клиента через редактирование репозиториев

Из всех способов этот самый трудоемкий, но может понадобиться в настольных дистрибутивах, которые могут не использовать APT для управления пакетами и установки обновлений (например, KDE Neon). В этом случае изменения следует внести прямо в адреса репозиториев. Еще один плюс этого метода, что кешировать репозитории можно выборочно. Скажем, если у вас на некоторых узлах есть собственные репозитории, которые больше нигде не используются, то можно не тратить ресурсы кеширующего прокси-сервера на сохранение их пакетов и качать их напрямую.

Для того, чтобы применить данный способ замените адрес репозитория с:

```
deb http://ftp.debian.org/debian bullseye main contrib
```

На:

```
deb http://192.168.111.72:3142/ftp.debian.org/debian bullseye main contrib
```

Для HTTPS репозиториев используйте следующую конструкцию:

```
deb http://192.168.111.72:3142/HTTPS///deb.opera.com/opera-stable/ stable non-free
```

Добавлять разрешающее правило в **zzz\_override.conf** при этом **не нужно**.

### Настройка автоматического обнаружения Apt-Cacher NG

У двух описанных выше способов есть существенный недостаток: если кеширующий прокси-сервер окажется недоступным, то обновиться не удастся. Плюс требуется вносить изменения в конфигурационные файлы, в этом плане намного привлекательнее выглядит возможность автоматического обнаружения прокси-сервера. Если он обнаружен - то трафик пойдет через него, нет - напрямую.

В этом нам поможет технология **Zeroconf**, при этом следует отметить, что при ее использовании вы **не должны** использовать в локальной сети домен верхнего уровня **.local**.

За поддержку Zeroconf в Linux отвечает служба Avahi, установим ее на сервере:

```
apt install avahi-daemon
```

Apt-Cacher NG уже содержит готовую конфигурацию для Avahi, поэтому отдельно настраивать ничего не нужно. Для нормальной работы службы следует разрешить пакеты на порт **5353 UDP**.

На клиенте следует установить пакет **squid-deb-proxy-client**:

```
apt install squid-deb-proxy-client
```

Никаких настроек также не требуется, все начинает работать сразу после переустановки.

### Эксплуатация Apt-Cacher NG

Для контроля и управления кеширующим сервером откройте в браузере адрес: **<http://192.168.111.72:3142/acng-report.html>**. Здесь вы можете увидеть статистику, включающую общий объем скачанных пакетов и объем данных отданных локально, а также процент попадания в кеш. Данные выводятся в двух разрезах: со времени последнего запуска службы и за все время.

![](https://296194292-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLoAqAoOfr7XVUQw7Gff8%2Fuploads%2Fgit-blob-1878c9038734fee1af67932dd642b79d15d8b7e0%2Fapt-cacher-ng-002-thumb-600xauto-18018.png?alt=media)

Также здесь можно выполнять операции обслуживания сервера, например, очистить кеш от устаревших пакетов.

Если же перестало работать обновление с сервера, а напрямую обновляется без проблем, то перейдите в раздел **Direct actions** и последовательно выполните действия **Delete unreferenced** и **Delete damaged**.

Как видим, настроить кеширующий прокси для обновлений Debian и Ubuntu совсем несложно, а эксплуатировать его легко. В тоже время вы получите существенную экономию времени и ресурсов на обслуживание парка Linux-систем.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на [углубленном курсе по администрированию MikroTik](https://xn-----xlcfvffioc4g.xn--p1ai/lp-mikrotik-mtcna?utm_source=interface31\&utm_medium=cpc\&utm_campaign=16-1489). Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
