Skip to content

Latest commit

 

History

History
230 lines (163 loc) · 7.85 KB

File metadata and controls

230 lines (163 loc) · 7.85 KB

Настройка Pacoloco: Кэширующий прокси для Arch Linux

Готовый конфиг для Pacoloco: кэширование официальных репозиториев, ALHP и Chaotic-AUR с автозагрузкой обновлений.

English | Русский

Pacoloco: Кеширующий прокси для Arch Linux

Этот репозиторий содержит мой конфиг для Pacoloco и краткую инструкцию по настройке.

Зачем это нужно?

Если у тебя дома или в офисе несколько машин с Arch Linux, Pacoloco кеширует пакет и раздаёт его остальным по локальной сети. Это сильно экономит трафик и ускоряет установку и обновление софта. Для моих 6 машин и мобильного интернета, как в моём случае - это просто рай.

Особенности моего конфига

  • Prefetch - сервер автоматически проверяет и кэширует новые версии пакетов в 3:00 ночи по времени настроенному, где лежит pacoloco.
  • Поддержка трёх типов репозиториев:
    • Официальные core/extra/multilib Arch Linux
    • Chaotic-AUR
    • ALHP (x86-64-v3 и другие)

Быстрый старт

Вариант 1: Установка через pacman (bare-metal)

  1. Установи Pacoloco:
sudo pacman -S pacoloco
  1. Замени конфиг по умолчанию на мой:
sudo cp pacoloco.yaml /etc/pacoloco.yaml
  1. Запусти и включи службу:
sudo systemctl enable --now pacoloco

Вариант 2: Запуск через Docker

  1. Создай Докер-контейнер с именем pacoloco:
docker run -d --name pacoloco \
        -p 9129:9129 \
        -v $(pwd)/pacoloco.yaml:/etc/pacoloco.yaml \
        -v /var/cache/pacoloco:/var/cache/pacoloco \
        --restart unless-stopped \
        ghcr.io/anatol/pacoloco
  1. Замени конфиг по умолчанию на мой:
sudo cp pacoloco.yaml /etc/pacoloco.yaml
  1. Перезапусти контейнер
sudo docker restart pacoloco

Заметочка Убедись, что директория /var/cache/pacoloco или которую ты установишь в конфиге - существует и доступна на запись.


Настройка клиентов

На каждом клиенте (другом компьютере с Arch) замени секции репозиториев в /etc/pacman.conf.

Было:

[core-x86-64-v3]
Include = /etc/pacman.d/alhp-mirrorlist

[core]
Include = /etc/pacman.d/mirrorlist

[extra-x86-64-v3]
Include = /etc/pacman.d/alhp-mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

[multilib-x86-64-v3]
Include = /etc/pacman.d/alhp-mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist

[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist

Стало:

[core]
Server = http://pacoloco.home.arpa:9129/repo/archlinux/$repo/os/$arch

[extra]
Server = http://pacoloco.home.arpa:9129/repo/archlinux/$repo/os/$arch

[multilib]
Server = http://pacoloco.home.arpa:9129/repo/archlinux/$repo/os/$arch

[core-x86-64-v3]
Server = http://pacoloco.home.arpa:9129/repo/alhp/$repo/os/$arch

[extra-x86-64-v3]
Server = http://pacoloco.home.arpa:9129/repo/alhp/$repo/os/$arch

[multilib-x86-64-v3]
Server = http://pacoloco.home.arpa:9129/repo/alhp/$repo/os/$arch

[chaotic-aur]
Server = http://pacoloco.home.arpa:9129/repo/chaotic-aur/$repo/$arch

Важно: замени pacoloco.home.arpa на реальный IP-адрес твоего сервера (например, 192.168.1.100) или настравь локальный DNS/mDNS (Avahi), чтобы имя разрешалось. Важно: если используется x86-64-v4 или x86-64-v2, то замени строго на своё. Pacoloco автоматически подтягивать будет нужный репозиторий


Описание конфига (pacoloco.yaml)

Общие настройки

port: 9129
cache_dir: /var/cache/pacoloco
user_agent: Pacoloco/1.7
download_timeout: 3600
  • port - HTTP-порт, по которому клиенты обращаются к прокси.
  • cache_dir - директория для хранения пакетов. Должна быть доступна на запись пользователю pacoloco.
  • user_agent - обязательно указывай, иначе ALHP и некоторые зеркала могут отклонить запрос.
  • download_timeout - макс. время скачивания одного пакета (1 час).

Репозитории

archlinux — официальные репозитории Arch

Зеркала выбраны с учётом стабильности и скорости (см. Arch Mirror Status):

urls:
  - http://ftp.halifax.rwth-aachen.de/archlinux
  - https://berlin.mirror.pkgbuild.com
  - https://mirror.yandex.ru/archlinux

chaotic-aur

urls:
  - https://geo-mirror.chaotic.cx  # автоматически редиректит на ближайшее зеркало

alhp

Поддержка ALHP для x86-64-v2/v3/v4:

urls:
  - https://mirror.sunred.org/alhp
  - https://alhp.dev
  - https://mirrors.shanghaitech.edu.cn/alhp

Все три зеркала проверены и актуальны. Если одно недоступно - Pacoloco автоматически переключится на другое.


Prefetch (автоматическая предзагрузка)

prefetch:
  cron: "0 0 3 * * *"             # ежедневно в 3:00
  ttl_unaccessed_in_days: 90      # не трогать пакеты, не запрашивавшиеся 90+ дней
  ttl_unupdated_in_days: 90       # не трогать пакеты, не обновлявшиеся 90+ дней

Это гарантирует, что обновления "горячих" пакетов уже будут в кэше к утру.


!! Советы для пользователей из РФ !!

Некоторые CDN и зарубежные зеркала (особенно ALHP) могут быть недоступны из-за блокировок на уровне ТСПУ (подробнее).

Что делать:

  • Используй доступные зеркала из РФ/СНГ, например для официальной ветки:

    • https://mirror.yandex.ru/archlinux/
    • https://mirror.truenetwork.ru/archlinux/
  • Для неофицальных веток смотри зеракала в

    • cat /etc/pacman.d/alhp-mirrorlist
    • cat /etc/pacman.d/chaotic-mirrorlist
  • Или настрой HTTP-прокси в pacoloco.yaml:

http_proxy: http://your-proxy:port

Бонус: как проверить, что всё работает?

# На клиенте
sudo pacman -Syu

# На сервере — посмотри лог
journalctl -u pacoloco -f

Если видишь строки вида downloader.go:111: downloading, то всё оки-доки


С доп вопросами в issues