Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

Ubuntuサーバーでセキュリティアップデートと再起動を完全自動化し、Discordへ通知する仕組み

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

サーバー管理において、OSのセキュリティアップデートは欠かせない作業ですが、手動での実行や再起動の判断は手間がかかるものです。今回は、Ubuntuサーバー(`unattended-upgrades`)を活用して、セキュリティアップデートと必要な再起動を自動化し、さらに完了後にDiscordへ通知を送る仕組みを構築する方法を解説します。

※アップデートがあれば何でも自動で適用してしまうことになるので、それでもよいサーバにのみ設定してください。

スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

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は以下の手順で作成します。

  1. Discordを開く:Webhookを受け取りたいチャンネルを表示します。
  2. チャンネル設定を開く:チャンネル名の横にある歯車アイコン(チャンネルを編集)をクリックします。
  3. 「連携サービス」を選択:サイドバーにある「連携サービス(Integrations)」メニューをクリックします。
  4. 「ウェブフック」を作成
    • 「ウェブフックを作成」ボタンを押します。
    • 名前(例: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

タイトルとURLをコピーしました