Automatická aktualizace hostitelského systému (Raspbian)
Cílem je automaticky instalovat bezpečnostní (a případně i ostatní) aktualizace pro samotný operační systém. Nejspolehlivější metodou je použití balíčku unattended-upgrades.
Jak na to (na každém Raspberry Pi):
Krok 1: Instalace balíčku
Nejdříve nainstalujte potřebný balíček, pokud již není přítomen.
Generated bash
sudo apt update
sudo apt install unattended-upgrades apt-listchanges
Krok 2: Základní konfigurace
Spusťte konfiguračního průvodce, který vytvoří základní konfigurační soubor.
sudo dpkg-reconfigure -plow unattended-upgrades
V dialogovém okně vyberte "Yes" pro automatické stahování a instalaci stabilních aktualizací. Tím se vytvoří soubor /etc/apt/apt.conf.d/20auto-upgrades.
Krok 3: Detailní konfigurace (volitelné, ale doporučené)
Pro jemnější nastavení otevřete hlavní konfigurační soubor:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
V tomto souboru můžete definovat, co přesně se má aktualizovat. Důležité jsou sekce Unattended-Upgrade::Allowed-Origins. Dobré výchozí nastavení je povolit aktualizace pro bezpečnostní a stabilní repozitáře:
// Automaticky aktualizovat balíčky z těchto zdrojů:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
-
-security (doporučeno): Instaluje pouze kritické bezpečnostní záplaty. Toto je nejbezpečnější volba.
-
-updates (volitelné): Instaluje i běžné aktualizace balíčků (opravy chyb, drobné vylepšení). Můžete odkomentovat, pokud chcete mít systém plně aktuální, ale existuje zde nepatrně vyšší riziko, že nějaká aktualizace něco rozbije.
Další užitečná nastavení v tomto souboru:
-
Automatický restart: Někdy je po aktualizaci (např. kernelu) potřeba restartovat systém. Můžete to povolit automaticky.
Unattended-Upgrade::Automatic-Reboot "true"; Unattended-Upgrade::Automatic-Reboot-Time "03:00"; // Restartuje ve 3 ráno, pokud je to potřeba
Čištění starých balíčků: Udržuje systém čistý.Generated conf Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
IGNORE_WHEN_COPYING_START Use code with caution. ConfIGNORE_WHEN_COPYING_ENDE-mailová upozornění: Můžete si nechat posílat e-maily o provedených aktualizacích.Generated conf Unattended-Upgrade::Mail "vas.email@domena.cz";
-
(Vyžaduje správně nakonfigurovaný mail server nebo ssmtp.)
Krok 4: Test konfigurace
Spusťte "suchý běh" (dry run), který vám ukáže, co by se aktualizovalo, ale nic neprovede.
sudo unattended-upgrades --dry-run --debug
Pokud vše vypadá v pořádku, systém se nyní bude aktualizovat automaticky, obvykle jednou denně.
Klíčová otázka: Jak poznám, které RPi poslalo e-mail?
Máte naprostou pravdu, pokud budou mít všechny vaše Raspberry Pi stejný název (hostname), e-maily budou vypadat identicky. Řešení je jednoduché a je to základ správné správy více serverů: každé Raspberry Pi musí mít svůj unikátní hostname.
Systém unattended-upgrades obvykle do předmětu nebo hlavičky e-mailu zahrne právě hostname serveru.
Jak změnit hostname na Raspberry Pi:
Před aplikací konfigurace níže se přihlaste ke každému RPi a dejte mu unikátní jméno. Například pro váš dns1:
sudo hostnamectl set-hostname dns1
Pro další RPi můžete použít názvy jako rpi-nas, rpi-iot, rpi-media atd. Po změně je nejlepší systém restartovat (sudo reboot), aby se změna plně projevila ve všech službách.
Kompletní konfigurace pro unattended-upgrades
Tato konfigurace se aplikuje na každém Raspberry Pi.
Krok 1: Instalace potřebných balíčků
(Pokud jste to již neudělal)
sudo apt update
sudo apt install unattended-upgrades apt-listchanges mailutils
Poznámka: mailutils je jednoduchý balíček, který poskytuje příkaz mail a umožňuje odesílání e-mailů. Pro složitější nastavení (např. přes SMTP server s autentizací) by se použil ssmtp nebo postfix.
Krok 2: Vytvoření konfiguračního souboru
Otevřete soubor a vložte do něj celý následující obsah.
Cesta k souboru: /etc/apt/apt.conf.d/50unattended-upgrades
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Kompletní obsah souboru:
// Tento soubor je spravován automaticky. Pro ruční úpravy jej
// zkopírujte do /etc/apt/apt.conf.d/51unattended-upgrades-local
// Automaticky aktualizovat balíčky z těchto zdrojů:
// Bezpečnostní aktualizace jsou klíčové, ostatní jsou volitelné.
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
// Povolí i běžné aktualizace, nejen bezpečnostní. Odkomentujte, pokud chcete.
// "${distro_id}:${distro_codename}-updates";
};
// Seznam balíčků, které se NIKDY nemají automaticky aktualizovat.
// Např. pokud máte speciální verzi kernelu, kterou nechcete měnit.
Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
};
// Pokud je potřeba restart po aktualizaci (např. kernelu), provede se automaticky.
Unattended-Upgrade::Automatic-Reboot "true";
// Čas pro automatický restart (24h formát). Vyberte dobu s nízkou zátěží.
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
// Odeslat e-mail s výsledky aktualizace na zadanou adresu.
// Díky unikátnímu hostname poznáte, který server e-mail poslal.
Unattended-Upgrade::Mail "aktualizace@zelina.eu";
// Odeslat e-mail vždy, i když nedošlo k žádným změnám.
// Pro ladění odkomentujte, pro produkci nechte zakomentované.
// Unattended-Upgrade::MailOnlyOnError "false";
// Odstranit nepoužívané závislosti a staré kernely po aktualizaci.
// Šetří místo na disku a udržuje systém čistý.
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
2. Automatická aktualizace Docker kontejnerů
Zde je cílem zajistit, aby vaše běžící kontejnery používaly nejnovější verze svých obrazů (images). Například, aby se váš pihole:latest automaticky aktualizoval, když tým Pi-hole vydá novou verzi.
Na to je ideální nástroj jménem Watchtower. Je to samotný kontejner, jehož jediným úkolem je sledovat ostatní běžící kontejnery, stahovat jejich nové image a restartovat je s novou verzí.
Jak na to (stačí spustit na každém Raspberry Pi):
Nejjednodušší je přidat Watchtower jako další službu do vašeho docker-compose.yml souboru, pokud ho používáte. Pokud ne, můžete ho spustit jako samostatný kontejner.
Metoda 1: Přidání do docker-compose.yml (doporučeno, pokud používáte Compose)
Upravte váš docker-compose.yml a přidejte novou službu:
Generated yaml
version: "3.8"
services:
dnscrypt-proxy:
# ... vaše dnscrypt konfigurace
pihole:
# ... vaše pihole konfigurace
# ... další vaše služby
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --schedule "0 0 4 * * *" --cleanup
Vysvětlení klíčových parametrů:
-
volumes: [/var/run/docker.sock:/var/run/docker.sock]: Toto je naprosto zásadní. Tímto dáváte kontejneru Watchtower přístup k Docker API na hostitelském systému, aby mohl spravovat ostatní kontejnery.
-
command: --schedule "0 0 4 * * *": Tímto nastavujete, kdy se má Watchtower spouštět. Formát je cron. Tento příklad znamená "každý den ve 4:00 ráno". Je dobré to nastavit na dobu, kdy je nízká zátěž. Pokud toto vynecháte, bude kontrolovat aktualizace každých 24 hodin od svého spuštění.
-
command: --cleanup: Tento příkaz zajistí, že Watchtower po aktualizaci smaže staré, nepoužívané obrazy, čímž šetří místo na disku.
Po přidání stačí spustit sudo docker compose up -d a Watchtower začne pracovat.
Metoda 2: Spuštění jako samostatný Docker příkaz
Pokud nepoužíváte docker-compose, můžete Watchtower spustit tímto příkazem:
sudo docker run -d \
--name watchtower \
--restart=unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--schedule "0 0 4 * * *" --cleanup
Shrnutí a doporučení
-
Na každém RPi nastavte unattended-upgrades pro automatické bezpečnostní aktualizace systému. Je to spolehlivé a bezpečné.
-
Na každém RPi spusťte kontejner Watchtower pro automatickou aktualizaci vašich Docker kontejnerů. Ušetří vám to spoustu práce a zajistí, že budete mít vždy poslední verze software s novými funkcemi a opravami.
Tato kombinace vám zajistí "set-and-forget" systém, který se bude udržovat z velké části sám.
No comments to display
No comments to display