Пост

Настройка зеркала репозитория Raspbian

Настройка локального зеркала репозитория Raspbian позволяет ускорить установку пакетов в локальной сети, снизить нагрузку на внешние каналы связи и обеспечить доступ к пакетам даже при отсутствии интернет-соединения. Это особенно полезно для образовательных учреждений, компаний с несколькими Raspberry Pi или для создания резервного источника пакетов.

Настройка зеркала репозитория Raspbian

Описание/Введение: Настройка локального зеркала репозитория Raspbian позволяет ускорить установку пакетов в локальной сети, снизить нагрузку на внешние каналы связи и обеспечить доступ к пакетам даже при отсутствии интернет-соединения. Это особенно полезно для образовательных учреждений, компаний с несколькими Raspberry Pi или для создания резервного источника пакетов.

Требования к системе

Перед началом убедитесь, что ваша система соответствует требованиям.

  1. Минимальные требования:
    • 50 ГБ свободного места на диске
    • 2 ГБ оперативной памяти
    • Стабильное интернет-соединение
  2. Рекомендуемые требования:
    • 100+ ГБ свободного места
    • 4 ГБ оперативной памяти
    • SSD диск для лучшей производительности

Установка необходимых пакетов

Установка программного обеспечения для создания зеркала.

  1. Обновите список пакетов:
    1
    2
    
    sudo apt update
    sudo apt upgrade
    
  2. Установите необходимые пакеты:
    1
    
    sudo apt install apt-mirror nginx apache2-utils
    

Настройка apt-mirror

Конфигурация основного инструмента для зеркалирования.

  1. Откройте файл конфигурации apt-mirror:
    1
    
    sudo nano /etc/apt/mirror.list
    
  2. Добавьте базовую конфигурацию:
    1
    2
    3
    4
    5
    6
    7
    
    set base_path /var/spool/apt-mirror
    set run_postmirror 0
    set nthreads 20
    set _tilde 0
        
    deb http://archive.raspberrypi.com/debian/ bullseye main
    deb http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpi
    
  3. Для зеркалирования нескольких версий добавьте:
    1
    2
    
    deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
    deb http://archive.raspberrypi.com/debian/ buster main
    

Создание структуры каталогов

Подготовка файловой системы для хранения зеркала.

  1. Создайте основную директорию:
    1
    
    sudo mkdir -p /var/spool/apt-mirror
    
  2. Установите правильные права доступа:
    1
    
    sudo chown -R apt-mirror:apt-mirror /var/spool/apt-mirror
    
  3. Создайте директорию для веб-сервера:
    1
    
    sudo mkdir -p /var/www/html/raspbian
    

Настройка веб-сервера

Конфигурация Nginx для раздачи пакетов.

  1. Создайте конфигурационный файл для зеркала:
    1
    
    sudo nano /etc/nginx/sites-available/raspbian-mirror
    
  2. Добавьте конфигурацию:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    server {
        listen 80;
        server_name your-server-domain.local;
        root /var/www/html/raspbian;
        autoindex on;
            
        location / {
            try_files $uri $uri/ =404;
        }
            
        access_log /var/log/nginx/raspbian-mirror.access.log;
        error_log /var/log/nginx/raspbian-mirror.error.log;
    }
    
  3. Включите сайт:
    1
    
    sudo ln -s /etc/nginx/sites-available/raspbian-mirror /etc/nginx/sites-enabled/
    

Запуск процесса зеркалирования

Начальное заполнение зеркала.

  1. Запустите процесс зеркалирования:
    1
    
    sudo apt-mirror
    
  2. Процесс может занять несколько часов в зависимости от скорости интернета

  3. Для мониторинга прогресса используйте:
    1
    
    tail -f /var/spool/apt-mirror/var/cron.log
    

Настройка символических ссылок

Связывание зеркала с веб-сервером.

  1. Создайте символические ссылки после завершения зеркалирования:
    1
    2
    
    sudo ln -s /var/spool/apt-mirror/mirror/archive.raspberrypi.com/debian/ /var/www/html/raspbian/archive
    sudo ln -s /var/spool/apt-mirror/mirror/raspbian.raspberrypi.org/raspbian/ /var/www/html/raspbian/raspbian
    
  2. Проверьте доступность через браузер:
    1
    
    http://your-server-ip/raspbian
    

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

Обновление источников пакетов на клиентских машинах.

  1. Создайте резервную копию оригинальных источников:
    1
    2
    
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
    sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.backup
    
  2. Отредактируйте файлы источников:
    1
    
    sudo nano /etc/apt/sources.list
    
  3. Замените URLs на ваш локальный сервер:
    1
    2
    
    deb http://your-mirror-server/raspbian/raspbian/ bullseye main contrib non-free rpi
    # deb-src http://your-mirror-server/raspbian/raspbian/ bullseye main contrib non-free rpi
    
  4. Обновите файл raspi.list:
    1
    
    sudo nano /etc/apt/sources.list.d/raspi.list
    
    1
    2
    
    deb http://your-mirror-server/raspbian/archive/ bullseye main
    # deb-src http://your-mirror-server/raspbian/archive/ bullseye main
    

Автоматическое обновление зеркала

Настройка регулярного обновления зеркала.

  1. Создайте cron задание для автоматического обновления:
    1
    
    sudo crontab -e
    
  2. Добавьте строку для ежедневного обновления в 2:00:
    1
    
    0 2 * * * /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log 2>&1
    
  3. Для еженедельного обновления:
    1
    
    0 2 * * 0 /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log 2>&1
    

Мониторинг использования диска

Отслеживание использования дискового пространства.

  1. Создайте скрипт для мониторинга:
    1
    
    sudo nano /usr/local/bin/check-mirror-size.sh
    
  2. Добавьте содержимое:
    1
    2
    3
    
    #!/bin/bash
    du -sh /var/spool/apt-mirror/
    df -h /var/spool/apt-mirror/
    
  3. Сделайте скрипт исполняемым:
    1
    
    sudo chmod +x /usr/local/bin/check-mirror-size.sh
    

Очистка старого содержимого

Управление дисковым пространством зеркала.

  1. Для очистки устаревших пакетов выполните:
    1
    
    sudo apt-mirror --cleanup
    
  2. Или используйте встроенную очистку:
    1
    
    sudo /var/spool/apt-mirror/var/clean.sh
    

Настройка аутентификации

Ограничение доступа к зеркалу при необходимости.

  1. Создайте файл с паролями:
    1
    
    sudo htpasswd -c /etc/nginx/.htpasswd username
    
  2. Добавьте аутентификацию в конфигурацию Nginx:
    1
    2
    3
    4
    5
    
    location / {
        auth_basic "Raspbian Mirror";
        auth_basic_user_file /etc/nginx/.htpasswd;
        try_files $uri $uri/ =404;
    }
    

Оптимизация производительности

Улучшение скорости работы зеркала.

  1. Настройте кэширование в Nginx:
    1
    2
    3
    4
    
    location ~* \.(deb|gz|bz2)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
    
  2. Увеличьте количество потоков в mirror.list:
    1
    
    set nthreads 50
    

Резервное копирование конфигурации

Сохранение настроек зеркала.

  1. Создайте резервную копию конфигурации:
    1
    
    sudo tar -czf /backup/apt-mirror-config-$(date +%Y%m%d).tar.gz /etc/apt/mirror.list /etc/nginx/sites-available/raspbian-mirror
    
  2. Экспортируйте список cron заданий:
    1
    
    sudo crontab -l > /backup/mirror-cron-backup.txt
    

Устранение проблем

Решение распространенных проблем.

Проблема: Недостаточно места на диске

1
2
3
4
5
# Проверьте использование диска
df -h

# Очистите кэш apt
sudo apt clean

Проблема: Ошибки синхронизации

1
2
3
4
5
# Проверьте логи
tail -f /var/spool/apt-mirror/var/cron.log

# Проверьте соединение с исходными зеркалами
ping archive.raspberrypi.com

Проблема: Клиенты не могут подключиться

1
2
3
4
5
# Проверьте настройки брандмауэра
sudo ufw status

# Проверьте доступность веб-сервера
curl -I http://localhost/raspbian

Теперь у вас есть полностью функциональное локальное зеркало репозитория Raspbian, которое ускорит установку пакетов в вашей локальной сети и обеспечит резервный источник пакетов на случай проблем с интернет-соединением.

Авторский пост защищен лицензией CC BY 4.0 .

© evdokimoff. Некоторые права защищены.

Использует тему Chirpy для Jekyll