74. Cloudflared LXC


Ранее здесь уже была статья, в которой достаточно подробно описывалось как назначение туннельного агента Cloudflare (он же cloudflared) так и процесс его установки на Proxmox. Сейчас же рассмотрим вынос этого агента в отдельный контейнер.

Изоляция этой службы в отдельном контейнере и вынос её за пределы ОС гипервизора обусловлены аспектами безопасности.

Установка контейнера.

Для установки нового LXC, запустим в консоли проксмокса следующий скрипт:
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/cloudflared.sh)"
Он создаст контейнер основанный на Debian с 512мб оперативной памяти,  2Гб жёсткого диска и 1 процессором с одним ядром.

Ну и пока открыта нужная консоль, чтобы не вставать дважды, отключим текущий сервис cloudflared.
Сначала необходимо его остановить. Делается это командой
systemctl stop cloudflared.service
Теперь отключить автозапуск.
systemctl disable cloudflared.service

Подготовительные работы.

Теперь переходим к новому контейнеру и работаем только в нём.
Если есть желание заходить по SSH в систему под рутом (с пользователем root), то надо это разрешить в конфиг файле. Выполняем команду
nano /etc/ssh/sshd_config
И ищем строку #PermitRootLogin prohibit-password
После чего меняем её на
PermitRootLogin yes
И перезапускаем службу SSH
service ssh restart

Контейнер работает с автологином. Если необходимо удостовериться какой пароль используется для пользователя root, то его можно сбросить командой 
passwd

Чтобы убедиться что временная зона настроена корректно, можно выполнить команду 
timedatectl

Чтобы узнать айпи и мак адреса нового LXC, выполним
ip a
и сделаем необходимую привязку на DHCP сервере.

Настройка cloudflared.

Перейдём непосредственно к настройке.

Для начала установим ключи репозитория
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

И укажем их в файлах для обновлениия
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared bookworm main' | tee /etc/apt/sources.list.d/cloudflared.list

Теперь открываем панель управления своим туннелем (на сайте Cloudflare) и копируем код из раздела установки сервиса. БЕЗ SUDO!!!


После того как служба успешно установлена


Добавим её в автозапуск командой
systemctl enable --now cloudflared

А чтобы настроить автоматические обновления
Открываем на редактирование файл планировщика задач с помощью команды crontab -e.
указываем когда и что запускать:
* * * * * apt update -y && apt dist-upgrade -y && apt autoremove -y && apt autoclean -y && systemctl restart cloudflared.service
Формат записей crontab выглядит следующим образом:
"минуты" "часы" "день месяца" "месяц" "день недели" "команда".
Не рекомендуется проверять и ставить компоненты как во время бэкапа системы, так и во время выключения.
  1. Если в проксмоксе настроены бэкапы на определённый час и занимают Х времени, то лучше не выбирать этот временной промежуток для проверки обновлений контейнера.
  2. Так же, если в прокрсмоксе настроена автоматическая перезагрузка по определённым дням недели, то логично предположить что именно в это временное окно не стоит планировать обновления.
  3. Т.к. после проверки обновления происходит перезапуск службы, то важно чтобы этот процесс не мешал ежедневной работе.
Поэтому учитывая эти пункты, вместо первой звёздочки указываем минуты, а вместо второй - часы. Это и будет время, в которое будет срабатывать задача планировщика. Т.е. раз в сутки.

Осталось добавить новый контейнер в соответствующий набор резервного копирования, и на этом настройка будет полностью закончена.

Комментарии