サーバー管理において、OSのセキュリティアップデートは欠かせない作業ですが、手動での実行や再起動の判断は手間がかかるものです。今回は、Ubuntuサーバー(`unattended-upgrades`)を活用して、セキュリティアップデートと必要な再起動を自動化し、さらに完了後にDiscordへ通知を送る仕組みを構築する方法を解説します。
※アップデートがあれば何でも自動で適用してしまうことになるので、それでもよいサーバにのみ設定してください。
1. 自動アップデートと自動再起動の設定
Ubuntuの標準機能である `unattended-upgrades` を使用します。このツールはセキュリティパッケージを自動で適用してくれる、安全で信頼性の高いツールです。
手順
1. unattended-upgrades をインストールします。
sudo apt install -y unattended-upgrades
2. 設定ファイル(/etc/apt/apt.conf.d/50unattended-upgrades)を開き、自動再起動を有効にします。
Unattended-Upgrade::Automatic-Reboot "true"; Unattended-Upgrade::Automatic-Reboot-Time "03:00";
これで、アップデートが必要な場合に自動でサーバーが再起動されるようになります。
2. 再起動後のDiscord通知システム
再起動が自動で行われると「いつ再起動が終わったか」が分かりにくいことがあります。これを解決するため、起動時にDiscordへ通知を送るサービスを作成します。
通知用スクリプトの作成
Discordの「Webfook」を使用してDiscordへ通知します。WebhookのURLは以下の手順で作成します。
- Discordを開く:Webhookを受け取りたいチャンネルを表示します。
- チャンネル設定を開く:チャンネル名の横にある歯車アイコン(チャンネルを編集)をクリックします。
- 「連携サービス」を選択:サイドバーにある「連携サービス(Integrations)」メニューをクリックします。
- 「ウェブフック」を作成:
- 「ウェブフックを作成」ボタンを押します。
- 名前(例:
Server-Monitorなど)やアイコンを適宜設定します。 - 「ウェブフックURL」の項目にある「URLをコピー」ボタンをクリックします。
- 「変更を保存」をクリックしてください。
WebhookのURL取得後、
/usr/local/bin/notify_reboot.sh を作成します。
#!/bin/bash
# Discord Webhook URLをご指定ください
DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..."
MESSAGE="サーバーがアップデート後の自動再起動を完了しました。システムは正常に復旧しています。"
curl -H "Content-Type: application/json" -d "{\"content\": \"$MESSAGE\"}" $DISCORD_WEBHOOK_URL
※実行権限を付与してください(sudo chmod +x /usr/local/bin/notify_reboot.sh)。
サービスの登録
systemd に登録して、OS起動時に自動実行されるようにします。
/etc/systemd/system/notify-reboot.service を作成し、以下の内容を記述します。
[Unit] Description=Notify reboot to Discord After=network.target [Service] Type=oneshot ExecStart=/usr/local/bin/notify_reboot.sh [Install] WantedBy=multi-user.target
最後に、サービスを有効化すれば完了です。
sudo systemctl daemon-reload sudo systemctl enable notify-reboot.service
まとめ
この設定により、サーバーは常に最新のセキュリティ状態を保ち、もし深夜に自動再起動が行われたとしても、翌朝Discordの通知を見て正常に稼働していることを確認できるようになります。管理コストを下げつつ、安全性を高めるための定番の運用手法です 。
設定~手順作成までにかかったAI費用(概算)
gemini-3.1-flash-lite:\21

