Apt-Cacher-NG - посібник з розгортання та налаштування
Apt-Cacher-NG - це проксі-сервер для apt пакетів. Замість того щоб кожна VM окремо качала пакети з інтернету - вони всі качають через один кеш. Перший запит іде в інтернет, всі наступні з локального кешу
📋 Зміст
- Навіщо це потрібно
- Вимоги до сервера
- Встановлення
- Конфігурація
- Запуск та перевірка
- Підключення клієнтів
- Fallback при недоступності
- Статистика та моніторинг
- Корисні команди
- Усунення неполадок
- IaC розгортання
Навіщо це потрібно
Без Apt-Cacher-NG:
VM-01 → інтернет → завантажує nginx (5 MB)
VM-02 → інтернет → завантажує nginx (5 MB)
VM-03 → інтернет → завантажує nginx (5 MB)
...
50 VM × 5 MB = 250 MB трафіку з інтернету
З Apt-Cacher-NG:
VM-01 → Apt-Cacher-NG → інтернет → завантажує nginx (5 MB) — кешує
VM-02 → Apt-Cacher-NG → віддає з кешу nginx (5 MB) — без інтернету
VM-03 → Apt-Cacher-NG → віддає з кешу nginx (5 MB) — без інтернету
...
Трафік з інтернету = 5 MB замість 250 MB
Переваги: - 💾 Економія трафіку — пакети качаються з інтернету тільки один раз - ⚡ Швидкість — локальна мережа швидша за інтернет - 🛡️ Надійність — якщо інтернет впав але пакет є в кеші — VM все одно встановить - 📊 Статистика — видно що і коли встановлювалось на всіх VM
Вимоги до сервера
| Ресурс | Мінімум | Рекомендовано |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 512 MB | 2 GB |
| Диск | 20 GB | 100 GB |
| ОС | Ubuntu 22.04+ | Ubuntu 24.04 LTS |
💡 Розмір диску залежить від кількості VM та пакетів. Для 10-50 VM рекомендується 100 GB
Оновлення системи та встановлення Apt-Cacher-NG
Конфігурація
Основний конфіг знаходиться в /etc/apt-cacher-ng/acng.conf
Повна конфігурація
Замінити вміст на:
# Директорія для кешу пакетів
CacheDir: /var/cache/apt-cacher-ng
# Директорія для логів
LogDir: /var/log/apt-cacher-ng
# Порт (стандартний)
Port: 3142
# Дозволяємо доступ з усієї мережі
BindAddress: 0.0.0.0
# Автоматичне очищення застарілих пакетів (днів)
ExTreshold: 4
# Підтримка HTTPS репозиторіїв
PassThroughPattern: .*
# Сторінка статистики
ReportPage: acng-report.html
Створення директорій
sudo mkdir -p /var/cache/apt-cacher-ng
sudo mkdir -p /var/log/apt-cacher-ng
sudo chown apt-cacher-ng:apt-cacher-ng /var/cache/apt-cacher-ng
sudo chown apt-cacher-ng:apt-cacher-ng /var/log/apt-cacher-ng
Запуск та перевірка
Запуск сервісу
Перевірка статусу
Очікуваний вивід:
Перевірка порту
Перевірка через браузер
Відкрий в браузері:
Має відкритись сторінка "Apt-Cacher NG Usage Information" — сервіс працює.
Підключення клієнтів
На кожній VM яка має використовувати Apt-Cacher-NG виконай:
Крок 1 — Створити файл конфігурації
echo 'Acquire::http::Proxy "http://<IP_APT_CACHER>:3142/";
Acquire::https::Proxy "DIRECT";' | sudo tee /etc/apt/apt.conf.d/01proxy
Замінити <IP_APT_CACHER> на реальний IP сервера (в нашому випадку 192.168.21.85):
echo 'Acquire::http::Proxy "http://192.168.21.85:3142/";
Acquire::https::Proxy "DIRECT";' | sudo tee /etc/apt/apt.conf.d/01proxy
Крок 2 — Перевірити що проксі застосувався
Очікуваний вивід:
Крок 3 — Перевірити що пакети йдуть через кеш
В URL має бути 192.168.21.85:3142:
Крок 4 — Встановити тестовий пакет
Fallback при недоступності
Рядок Acquire::https::Proxy "DIRECT" забезпечує що:
- HTTP пакети → через Apt-Cacher-NG
- HTTPS пакети → напряму (Apt-Cacher-NG не підтримує HTTPS)
Для повного fallback якщо сервер недоступний — apt автоматично спробує підключитись напряму до репозиторіїв після таймауту
Перевірка fallback
# На сервері Apt-Cacher-NG — зупинити сервіс
sudo systemctl stop apt-cacher-ng
# На клієнті — спробувати встановити пакет
sudo apt install -y tree
# Пакет має встановитись напряму з репозиторію
Статистика та моніторинг
Веб-інтерфейс
Відкрий в браузері:
Показує: - Data fetched — скільки завантажено з інтернету - Data served — скільки віддано клієнтам з кешу - Cache efficiency — hits/misses статистика
Логи в реальному часі
Формат логу:
I— Import (завантажено з інтернету і закешовано)O— Output (віддано з кешу)
Перевірка що конкретний пакет пройшов через кеш
Приклад виводу:
1234567890|I|0|192.168.21.80|ua.archive.ubuntu.com/ubuntu/pool/universe/c/cowsay/cowsay_3.03.deb
1234567891|O|0|192.168.21.85|ua.archive.ubuntu.com/ubuntu/pool/universe/c/cowsay/cowsay_3.03.deb
Розмір кешу
Корисні команди
| Команда | Опис |
|---|---|
sudo systemctl start apt-cacher-ng |
Запустити сервіс |
sudo systemctl stop apt-cacher-ng |
Зупинити сервіс |
sudo systemctl restart apt-cacher-ng |
Перезапустити сервіс |
sudo systemctl status apt-cacher-ng |
Статус сервісу |
sudo apt-cacher-ng -c /etc/apt-cacher-ng ForeGround=1 |
Запустити вручну для перевірки конфігу |
du -sh /var/cache/apt-cacher-ng/ |
Розмір кешу |
sudo find /var/cache/apt-cacher-ng -name "*.deb" \| wc -l |
Кількість закешованих пакетів |
Усунення неполадок
❌ Сервіс не стартує
Покаже точну помилку в конфіги.
❌ Клієнт не бачить проксі
# Перевірити файл конфігу
cat /etc/apt/apt.conf.d/01proxy
# Перевірити що apt бачить проксі
apt-config dump | grep Proxy
❌ Пакети йдуть напряму, не через кеш
❌ 503 Host not found на сторінці статистики
Перевірити що ReportPage в конфігу написаний на окремому рядку:
sudo grep ReportPage /etc/apt-cacher-ng/acng.conf
# Має показати: ReportPage: acng-report.html
# (тільки цей рядок, без злипання з іншими директивами)
❌ Port 3142 is busy
# Перевірити що процес вже запущений
ps aux | grep apt-cacher-ng
sudo systemctl status apt-cacher-ng