こんにちは!個人サイトのサーバー構築や保守、日々楽しんでいますか?
Linuxサーバーを運用していると、避けて通れないのが定期的なOSパッケージのアップデート(dnf update)。
「本番サーバーのアップデートを自動化して、勝手に再起動までさせるなんて怖すぎる……」
最初は誰もがそう思うはずです。筆者もずっとそう考えて、手動でコマンドを叩いていました。しかしある日、ふと気づいてしまったのです。
「……いや待てよ。手動でやってはいるけれど、毎回大して中身を検証もせず、画面に出てきた更新を『y(Yes)』で全部適用して、そのまま流れで再起動してるな。これ、自動化してもやってること同じでは?」
そう思い至り、個人運用のサイトということもあって、思い切って dnf-automatic を使った「完全自動アップデート&自動再起動」の設定を導入してみました!
1. 自動化にあたって考えた「本当のリスク」
もちろん、完全なノー検証で自動化することへの不安がゼロだったわけではありません。ただ、自分の中でリスクを以下のように整理しました。
➔ OS(Rocky Linux)側の検証は信頼できる
Rocky Linuxのようなエンタープライズ向けのOSであれば、配布されるアップデート用パッケージは大元で厳しい検証をクリアしているはずです。そのため、OSのピュアなソフトウェアのバグでシステムが全壊する確率はかなり低いと考えられます。
➔ 本当に怖いのは「VPS基盤のハード・ソフトとの相性」
もし自動アップデート後にサーバーが立ち上がらなくなるような障害が起きるとしたら、原因はOSそのものよりも、「各社VPS(仮想サーバー)の基盤ハードウェアや、ハイパーバイザー(仮想化ソフト)との相性問題」ではないでしょうか。
特定のカーネルアップデートが、VPS側のネットワークドライバやストレージ制御とバッティングして不穏な動きをする……。こればかりは環境依存なので、手動でやっても自動でやっても、起きるときは起きます。
「個人サイトだし、万が一のときはバックアップから戻せばいいか!」と割り切り、利便性とセキュリティを最優先して自動化に踏み切りました。
2. dnf-automatic で自動更新&再起動を設定する手順
ここからは、実際にRocky Linuxに dnf-automatic を導入し、必要に応じて自動再起動まで行うための基本設定の手順です。
ステップ①:インストール
まずはパッケージをインストールします。
$ sudo dnf install dnf-automatic
ステップ②:設定ファイルの編集(自動適用と再起動)
設定ファイル /etc/dnf/automatic.conf をテキストエディタで開き、以下のように編集します。
[commands]
# アップグレードをダウンロードするだけでなく、自動で適用(インストール)する
apply_updates = yes
[reboot]
# アップデート適用後、システムに再起動が必要な場合は自動で再起動する
reboot = when-needed
※ reboot = when-needed にしておくことで、カーネル(kernel)の更新など「再起動しないと有効にならない致命的なアップデート」があったときだけ、賢く再起動をかけてくれます。
ステップ③:タイマーの有効化と起動
systemdのタイマー機能を使って、自動実行スケジュールを有効化します。
$ sudo systemctl enable --now dnf-automatic.timer
これで、毎日裏で自動的にチェックと更新が走るようになります。
3. 自動化してみて変わったこと
導入してしばらく経ちますが、結論から言うと「めちゃくちゃ快適で、もっと早くやればよかった」と感じています。
-
「放置していても常に最新」という圧倒的な安心感
-
定期的に手動でログインしてコマンドを叩く手間の解消
-
夜間のアクセスが少ない時間帯に自動で再起動してくれるスマートさ
もちろん、企業の実務(商用環境)では一発アウトになりかねない運用ですが、ステージング環境や個人開発のWebサーバー、個人のテックブログ用サーバーであれば、費用対効果(手間の削減)は抜群に高いです。
まとめ
アップデートの自動化は確かに最初は怖いですが、「手動のときも、結局何も見ずに全適用して再起動していた」という自覚があるなら、dnf-automaticにその作業を丸投げしてしまうのは大いにアリな選択肢です。
VPS基盤との相性リスクに備えて、「VPS側での自動バックアップ(スナップショット)※追加のお金かかるけど」さえ定期的にセットしておけば、怖いものは何もありません。
サーバー保守の手間を少しでも減らして、コンテンツ作成や開発の時間を増やしたい方は、ぜひ “自動化の沼” に一歩踏み出してみてはいかがでしょうか?
RockyLinux9.6
# Whether updates should be downloaded when they are available, by # dnf-automatic.timer. notifyonly.timer, download.timer and # install.timer override this setting. download_updates = yes # Whether updates should be applied when they are available, by # dnf-automatic.timer. notifyonly.timer, download.timer and # install.timer override this setting. #apply_updates = no apply_updates = yes # When the system should reboot following upgrades: # never = don't reboot after upgrades # when-changed = reboot after any changes # when-needed = reboot when necessary to apply changes #reboot = never reboot = when-needed # The command that is run to trigger a system reboot. reboot_command = "shutdown -r +5 'Rebooting after applying package updates'"
RockyLinux8.10だとrebootに関する記述がないが、書けば動作するのか?ちなみにそれぞれのバージョンは以下の通り
# dnf info dnf-automatic
Last metadata expiration check: 2:51:45 ago on Tue 19 Aug 2025 02:11:30 PM JST.
Installed Packages
Name : dnf-automatic
Version : 4.7.0
Release : 21.el8_10
Architecture : noarch
Size : 53 k
Source : dnf-4.7.0-21.el8_10.src.rpm
Repository : @System
From repo : baseos
Summary : Package manager - automated upgrades
URL : https://github.com/rpm-software-management/dnf
License : GPLv2+
Description : Systemd units that can periodically download package upgrades and
: apply them.
# dnf info dnf-automatic
Last metadata expiration check: 2:38:05 ago on Tue 19 Aug 2025 03:00:37 PM JST.
Installed Packages
Name : dnf-automatic
Version : 4.14.0
Release : 25.el9
Architecture : noarch
Size : 57 k
Source : dnf-4.14.0-25.el9.src.rpm
Repository : @System
From repo : baseos
Summary : Package manager - automated upgrades
URL : https://github.com/rpm-software-management/dnf
License : GPLv2+
Description : Systemd units that can periodically download package upgrades and
: apply them.
Rocky Linux release 8.10 dnf-automatic – Rocky Linux Help & Support – Rocky Linux Forum
によると、Rocky Linux8のdnfではだめっぽい。
dnf-automatic on Rocky Linux 8 does not reboot a system after applying updates as it does not support this feature. There’s no configuration changes you’ll need to make.
updateが適用された時の通知メール
The following updates have been applied on 'XXXXXX': ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: kernel x86_64 5.14.0-570.33.2.el9_6 baseos 1.8 M kernel-core x86_64 5.14.0-570.33.2.el9_6 baseos 18 M kernel-modules x86_64 5.14.0-570.33.2.el9_6 baseos 39 M kernel-modules-core x86_64 5.14.0-570.33.2.el9_6 baseos 31 M Upgrading: kernel-headers x86_64 5.14.0-570.33.2.el9_6 appstream 3.3 M kernel-tools x86_64 5.14.0-570.33.2.el9_6 baseos 2.1 M kernel-tools-libs x86_64 5.14.0-570.33.2.el9_6 baseos 1.8 M libarchive x86_64 3.5.3-6.el9_6 baseos 387 k Removing: kernel x86_64 5.14.0-570.28.1.el9_6 @baseos 0 kernel-core x86_64 5.14.0-570.28.1.el9_6 @baseos 68 M kernel-modules x86_64 5.14.0-570.28.1.el9_6 @baseos 36 M kernel-modules-core x86_64 5.14.0-570.28.1.el9_6 @baseos 28 M Transaction Summary ================================================================================ Install 4 Packages Upgrade 4 Packages Remove 4 Packages Updates completed at Mon 25 Aug 2025 09:14:06 AM JST
