How to Set Up Automated Headless Debian Upgrades with Unattended-Upgrades

What unattended-upgrades does on a headless Debian server

unattended-upgrades is Debian's package for automatically downloading and installing selected APT updates without an interactive login. On a headless server, that makes it useful for security maintenance when no desktop session is available and nobody is expected to run apt upgrade every day.

As of October 2026, Debian 13 "trixie" is the stable Debian release, and the stable unattended-upgrades package is version 2.12. The package is meant for normal package updates, especially security and stable updates. It is not a substitute for the separate, planned process of upgrading from one major Debian release to another.

The practical model is simple: APT's periodic machinery refreshes package indexes, apt-daily-upgrade.service invokes the unattended-upgrade backend on schedule, and your policy decides which package origins are allowed. Debian logs the result under /var/log/unattended-upgrades/.

Quick setup checklist

GoalRecommended action
Install the updatersudo apt update && sudo apt install unattended-upgrades
Enable daily periodic workSet APT::Periodic::Update-Package-Lists "1"; and APT::Periodic::Unattended-Upgrade "1";
Keep local policy maintainablePut overrides in a later file such as 52unattended-upgrades-local
Test before relying on itsudo unattended-upgrade --debug --dry-run
Confirm schedulingInspect apt-daily.timer and apt-daily-upgrade.timer
Watch resultsReview /var/log/unattended-upgrades/ and your monitoring alerts

1. Install unattended-upgrades

Run the installation from an administrative shell:

sudo apt update
sudo apt install unattended-upgrades

Installing the package is safe to repeat: APT will simply report that it is already installed if the host already has it. Debian describes the package as an automatic installer for security upgrades and other updates selected by policy.

เทอร์มินัล Debian แสดงคำสั่ง apt update ตามด้วยการติดตั้งแพ็คเกจ unattended-upgrades
Example terminal view for installing unattended-upgrades. Repository names and package counts vary by Debian release and host.

For a fleet, do not assume every image has the same default state. Some Debian installations already include unattended upgrades; others do not, and an existing configuration may have been disabled. After installation, inspect the effective configuration instead of assuming that package presence means the policy you want is active.

2. Enable periodic package-list refreshes and unattended runs

Debian's upstream README says a manual setup needs these two APT periodic values:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

The value "1" means the activity is eligible to run daily. A practical local fragment is:

sudo nano /etc/apt/apt.conf.d/20auto-upgrades

Then add the two lines above. You can inspect the merged APT configuration with:

apt-config dump | grep -E 'APT::Periodic::(Update-Package-Lists|Unattended-Upgrade)'
โปรแกรมแก้ไข Nano แสดงการตั้งค่า APT เป็นระยะสำหรับการอัปเดตรายการแพ็กเกจรายวันและการอัปเกรดอัตโนมัติ
APT periodic settings that request daily package-list refreshes and unattended upgrade runs.

อย่าเข้าใจผิดว่านี่คือคำสัญญาว่างานจะเริ่มต้นตรงเวลาเที่ยงคืนทุกวัน ในระบบ Debian ที่ใช้ systemd นั้น APT ใช้หน่วยจับเวลาและพฤติกรรมการจัดกำหนดการแบบสุ่ม สำหรับงานปฏิบัติการ ให้ตรวจสอบสถานะตัวจับเวลาจริงและเวลาที่จะเริ่มทำงานครั้งถัดไปบนโฮสต์ แทนที่จะออกแบบการตรวจสอบโดยอิงจากเวลาของนาฬิกาที่คาดเดา

3. กำหนดว่าที่เก็บซอฟต์แวร์ใดบ้างที่สามารถอัปเกรดแพ็กเกจโดยอัตโนมัติได้

นโยบายหลักอยู่ภายใต้ รูปแบบ Unattended-Upgrade::Origins-PatternเดิมAllowed-Originsเอกสารประกอบของ Debian 2.12 แนะนำให้สร้างส่วนย่อย APT ในเครื่องที่จัดเรียงตาม50unattended-upgradesไฟล์ที่บรรจุไว้ ตัวอย่างเช่น:

sudo nano /etc/apt/apt.conf.d/52unattended-upgrades-local

วิธีนี้ดีกว่าการแก้ไขไฟล์ที่จัดส่งอย่างถาวร เพราะการอัปเกรดแพ็กเกจอาจแทนที่หรือขัดแย้งกับการกำหนดค่าที่ผู้จำหน่ายจัดการไว้ ก่อนที่จะเขียนรูปแบบ ให้ตรวจสอบเมตาเดต้าของเวอร์ชันที่ APT เห็นจริง ๆ ก่อน:

apt-cache policy

สำหรับเซิร์ฟเวอร์แบบไม่มีหน้าจอแสดงผลส่วนใหญ่ นโยบายที่รอบคอบคือการจำกัดการอัปเดตอัตโนมัติไว้เฉพาะช่องทางการอัปเดตเวอร์ชันเสถียรและช่องทางการอัปเดตด้านความปลอดภัยตามปกติของ Debian รูปแบบที่แน่นอนอาจแตกต่างกันไปตามโครงสร้างของที่เก็บข้อมูล ระบบมิเรอร์ ผู้จำหน่ายบุคคลที่สาม และกฎการกำหนดเวอร์ชัน ดังนั้นให้ถือว่านี่apt-cache policyคือแหล่งข้อมูลที่ถูกต้องที่สุดในแต่ละสภาพแวดล้อม

โปรแกรมแก้ไข Nano แสดงนโยบายต้นกำเนิดการอัปเกรดอัตโนมัติและปิดใช้งานการรีบูตอัตโนมัติ
ตัวอย่างมุมมองตัวแก้ไขนโยบาย จับคู่แหล่งที่มากับที่เก็บข้อมูลที่รายงานโดยนโยบาย apt-cache บนเซิร์ฟเวอร์ของคุณ แทนที่จะคัดลอกป้ายกำกับโดยไม่ตรวจสอบให้ดี

ส่วนควบคุมเสริมที่ควรรู้

การกำหนดค่าเวอร์ชัน 2.12 รองรับรายการแบล็คลิสต์และไวท์ลิสต์ของแพ็กเกจ การรีบูตอัตโนมัติ การรายงานทางอีเมล การลบการพึ่งพาที่ไม่ใช้งาน การจำกัดแบนด์วิดท์ การจำกัดวันอัปเดต และเอาต์พุตซิสล็อก ตัวเลือกบางอย่างมีความเกี่ยวข้องเป็นพิเศษกับเซิร์ฟเวอร์ระยะไกล:

Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::MailReport "only-on-error";
Unattended-Upgrade::SyslogEnable "true";

ตั้งค่าอีเมลเฉพาะเมื่อเครื่องมีระบบรับส่งอีเมลที่ใช้งานได้เท่านั้น หากคุณเปิดใช้งานการรีบูตอัตโนมัติ พฤติกรรมเริ่มต้นของ Debian นั้นมีความสำคัญ: เมื่อAutomatic-Rebootเป็นจริงและ/var/run/reboot-requiredมีอยู่จริง โฮสต์สามารถรีบูตได้โดยไม่ต้องยืนยัน คุณสามารถตั้งค่าUnattended-Upgrade::Automatic-Reboot-Timeเพื่อกำหนดเวลาการรีบูตนั้นในช่วงเวลาการบำรุงรักษาได้

สำหรับระบบการผลิตจำนวนมาก การปิดใช้งานการรีบูตอัตโนมัติจะปลอดภัยกว่า เว้นแต่ว่าบริการนั้นจะมีระบบสำรอง มีการกำหนดช่วงเวลาการบำรุงรักษา และมีการตรวจสอบสถานะหลังการรีบูตโดยอัตโนมัติ

4. ตรวจสอบตัวจับเวลาของ systemd และทำการทดสอบแบบแห้ง (dry test)

ในการติดตั้ง Debian ที่ใช้ systemd ตามปกติ ให้ตรวจสอบตัวจับเวลาของ APT แทนที่จะมองหาunattended-upgrades.timerหน่วยที่สร้างขึ้นมาเอง:

systemctl status apt-daily.timer apt-daily-upgrade.timer
systemctl list-timers apt-daily.timer apt-daily-upgrade.timer

apt-daily.timerเกี่ยวข้องกับกิจกรรมการดาวน์โหลด/จัดทำดัชนีแพ็กเกจตามปกติ ในขณะที่apt-daily-upgrade.timerกระตุ้นเส้นทางบริการอัปเกรด/ล้างข้อมูลที่ใช้โดยการอัปเกรดอัตโนมัติ

สถานะเทอร์มินัลของ Systemd สำหรับ apt-daily.timer และ apt-daily-upgrade.timer แสดงทั้งสถานะใช้งานและรออยู่
สถานะตัวจับเวลา Systemd สำหรับการทำงานประจำวันของ APT วันที่แสดงเป็นเพียงตัวอย่าง โปรดใช้คำสั่ง systemctl list-timers เพื่อตรวจสอบการทำงานครั้งถัดไปที่แท้จริงบนโฮสต์ของคุณ

ขั้นตอนต่อไป ทดสอบนโยบายโดยไม่ต้องเปลี่ยนแปลงแพ็กเกจ:

sudo unattended-upgrade --debug --dry-run

นี่คือการตรวจสอบก่อนบินที่มีประโยชน์ที่สุด เพราะมันจะประเมินการตั้งค่า APT จริงและบันทึกรายละเอียดการแก้ไขข้อผิดพลาด ตรวจสอบผลลัพธ์เพื่อหาแพ็กเกจที่จะถูกเลือกหรือถูกระงับ แหล่งที่มาของบุคคลที่สามที่ไม่คาดคิด ปัญหาการพึ่งพา และข้อความแจ้งเตือนเกี่ยวกับไฟล์การกำหนดค่า

หากการทดสอบแบบจำลองไม่เลือกอะไรเลย นั่นอาจเป็นเรื่องปกติเมื่อเซิร์ฟเวอร์เป็นเวอร์ชันล่าสุด ตรวจสอบให้แน่ใจว่ามีการอัปเดตที่รอดำเนินการอยู่จริง จากapt list --upgradableนั้นเปรียบเทียบแหล่งที่มาและนโยบายของการอัปเดตเหล่านั้นกับรูปแบบที่คุณกำหนดค่าไว้

5. ตรวจสอบการอัปเกรดอัตโนมัติและจัดการการรีบูตอย่างรอบคอบ

แพ็กเกจจะบันทึกบันทึกกิจกรรมหลักและผลลัพธ์ dpkg ไว้ในโฟลเดอร์ต่อไปนี้:

/var/log/unattended-upgrades/unattended-upgrades.log
/var/log/unattended-upgrades/unattended-upgrades-dpkg.log

การตรวจสอบที่เป็นประโยชน์ ได้แก่:

sudo tail -n 100 /var/log/unattended-upgrades/unattended-upgrades.log
sudo journalctl -u apt-daily-upgrade.service --since "7 days ago"
test -f /var/run/reboot-required && cat /var/run/reboot-required

สำหรับเครื่องคอมพิวเตอร์ในห้องปฏิบัติการที่บ้าน การตรวจสอบบันทึกเป็นระยะอาจเพียงพอแล้ว แต่สำหรับระบบทางธุรกิจ ควรส่งข้อผิดพลาดไปยังระบบตรวจสอบส่วนกลางหรือ syslog เพื่อป้องกันไม่ให้ข้อผิดพลาดของที่เก็บข้อมูลที่ไม่แสดงอาการ ปัญหาไฟล์เต็ม การพึ่งพาที่เสียหาย หรือสถานะ dpkg ที่หยุดชะงัก กลายเป็นสิ่งที่มองข้ามไปโดยไม่รู้ตัว

การตั้งค่าอ้างอิงสำหรับนโยบายเซิร์ฟเวอร์ทั่วไป

สถานการณ์นโยบายหมายเหตุการปฏิบัติงาน
เซิร์ฟเวอร์ที่เน้นความปลอดภัยอนุญาตให้อัปเดตความปลอดภัยและอัปเดตเวอร์ชันเสถียรของ Debian; และทำการรีบูตด้วยตนเองค่าเริ่มต้นที่ดีเมื่อการหยุดชะงักมีค่าใช้จ่ายมากกว่าการรีบูตที่ล่าช้า
โหนดไร้สถานะหรือโหนดสำรองอนุญาตให้ทำการอัปเดตและรีบูตอัตโนมัติตามกำหนดเวลาควบคู่ไปกับการตรวจสอบสุขภาพและการระบายโหลดบาลานเซอร์
อุปกรณ์ที่ไวต่อเคอร์เนลใช้บัญชีดำแพ็กเกจเฉพาะเมื่อมีกระบวนการยกเว้นที่ระบุไว้อย่างชัดเจนเท่านั้นการขึ้นบัญชีดำอาจทำให้ช่องโหว่ที่ทราบอยู่แล้วไม่ได้รับการแก้ไข
เซิร์ฟเวอร์ที่มีคลังเก็บข้อมูลของผู้จำหน่ายอย่าอนุญาตให้ใช้แหล่งที่มาของผู้ขายจนกว่านโยบายการอัปเดตจะได้รับการตรวจสอบแล้วตรวจสอบข้อกำหนดเกี่ยวกับการลงนาม นโยบายการสนับสนุน และข้อกำหนดในการย้อนกลับก่อน

คู่มืออ้างอิงฉบับย่อสำหรับการแก้ไขปัญหา

ตัวจับเวลาทำงานอยู่ แต่ยังไม่มีการติดตั้งแพ็กเกจใดๆ

ตรวจสอบว่ามีการอัปเกรดที่รอการดำเนินการอยู่หรือไม่ แหล่งที่มาของที่เก็บข้อมูลตรงกับนโยบายที่คุณอนุญาตหรือไม่ และมีบัญชีดำหรือข้อจำกัดด้านการพึ่งพาใดที่ขัดขวางการเลือกหรือไม่ ดำเนินการsudo unattended-upgrade --debug --dry-runตรวจสอบเพื่อหาหลักฐานแทนที่จะเปลี่ยนนโยบายแบบสุ่ม

เซิร์ฟเวอร์กำลังรอการกำหนดค่าแพ็กเกจ

unattended-upgradesออกแบบมาเพื่อหลีกเลี่ยงการอัปเกรดที่อาจต้องมีการตั้งค่า dpkg ที่ยังไม่ได้รับการแก้ไข หากแพ็กเกจถูกระงับซ้ำ ๆ ให้ตรวจสอบบันทึกและตัดสินใจว่าควรจัดการการตั้งค่าไฟล์ด้วยตนเองหรือไม่

การอัปเดตจะไม่ทำงานหลังจากโคลนอิมเมจ VM แล้ว

ตรวจสอบให้แน่ใจว่าตัวจับเวลาเปิดใช้งานและทำงานอยู่ จากนั้นตรวจสอบดูapt-config dumpอิมเมจต้นแบบมักมีส่วนประกอบ APT ในเครื่อง การปกปิด หรือการกำหนดค่าเพิ่มเติมที่แตกต่างจากค่าเริ่มต้นของแพ็กเกจ

คุณต้องหยุดการอัปเกรดอัตโนมัติ

ใช้เส้นทางการกำหนดค่าใหม่ที่ Debian รองรับ:

sudo dpkg-reconfigure -plow unattended-upgrades

การปิดใช้งานแพ็กเกจไม่ได้ทดแทนการจัดการแพทช์ตามปกติ เพียงแต่เป็นการส่งความรับผิดชอบกลับไปยังกระบวนการจัดการด้วยตนเองหรือจากภายนอกของคุณเท่านั้น

รายการตรวจสอบการตรวจสอบขั้นสุดท้าย

  • unattended-upgradesติดตั้งจากแหล่งเก็บซอฟต์แวร์ Debian ที่เชื่อถือได้
  • ค่าการรีเฟรชรายการแพ็กเกจ APT เป็นระยะและการอัปเกรดอัตโนมัติถูกเปิดใช้งานแล้ว
  • นโยบายท้องถิ่นจะถูกจัดเก็บไว้ในไฟล์ที่ใช้แทนที่ในภายหลัง เช่น52unattended-upgrades-local.
  • แหล่งกำเนิดที่อนุญาตได้รับการตรวจสอบกับapt-cache policy.
  • apt-daily.timerและapt-daily-upgrade.timerกระตือรือร้น
  • sudo unattended-upgrade --debug --dry-runดำเนินการเสร็จสมบูรณ์โดยไม่มีการเลือกที่ไม่คาดคิดหรือข้อผิดพลาดใดๆ
  • มีการตรวจสอบบันทึกต่างๆ และนโยบายการรีบูตจะสอดคล้องกับรูปแบบการบำรุงรักษาของคุณ
  • การอัปเกรดเวอร์ชันหลักของ Debian ยังคงเป็นขั้นตอนที่วางแผนไว้แยกต่างหาก

เอกสารอ้างอิงอย่างเป็นทางการ

โปรดใช้เอกสารของ Debian เองเมื่อตรวจสอบพฤติกรรมบนเวอร์ชันเฉพาะ:

ฝากความเห็น

Fix Screen Tearing on Intel Graphics in Pardus Linux: A Result-Focused Guide

Fix Screen Tearing on Intel Graphics in Pardus Linux: A Result-Focused Guide

Fix Intel graphics screen tearing in Pardus Linux by checking X11 vs. Wayland, compositor settings, refresh rate, active Xorg driver, and TearFree only when appropriate.

วิธีการตั้งค่าไฟร์วอลล์ SLES 15 ด้วย firewall-cmd

วิธีการตั้งค่าไฟร์วอลล์ SLES 15 ด้วย firewall-cmd

กำหนดค่า firewalld บน SLES 15: ตรวจสอบโซน อนุญาตบริการหรือพอร์ต บันทึกกฎถาวร โหลดใหม่ได้อย่างปลอดภัย และตรวจสอบการเข้าถึง

คู่มือการตั้งค่าการอัปเดต SLES Live Patching: อัปเดตเคอร์เนลโดยไม่ต้องรีบูตเครื่อง

คู่มือการตั้งค่าการอัปเดต SLES Live Patching: อัปเดตเคอร์เนลโดยไม่ต้องรีบูตเครื่อง

เปิดใช้งานการแพตช์เคอร์เนลแบบเรียลไทม์บน SLES 15 SP7 ใช้การแก้ไขที่รองรับโดยไม่ต้องรีบูต ตรวจสอบแพตช์ที่ใช้งานอยู่ และทำความเข้าใจว่าเมื่อใดที่ยังจำเป็นต้องรีสตาร์ทเคอร์เนล

วิธีเปิดใช้งานโหมด FIPS บน SUSE Linux Enterprise Server 15

วิธีเปิดใช้งานโหมด FIPS บน SUSE Linux Enterprise Server 15

เปิดใช้งานโหมด FIPS บน SLES 15 โดยใช้ยูทิลิตี้การตั้งค่าที่ SUSE รองรับ รีบูตอย่างปลอดภัย ตรวจสอบสถานะเคอร์เนลและนโยบายการเข้ารหัส และตรวจสอบขีดจำกัดการรับรอง

วิธีการติดตั้ง Google Chrome บน Gooroom OS โดยไม่ละเมิดนโยบายความปลอดภัย

วิธีการติดตั้ง Google Chrome บน Gooroom OS โดยไม่ละเมิดนโยบายความปลอดภัย

ติดตั้ง Google Chrome บน Gooroom OS อย่างปลอดภัยด้วยแพ็กเกจ .deb อย่างเป็นทางการ, APT, การตรวจสอบนโยบาย, คำแนะนำในการอัปเดต และการแก้ไขสำหรับอุปกรณ์ที่ได้รับการจัดการ

วิธีการส่งออกบันทึกระบบ SLES ไปยังเซิร์ฟเวอร์ Syslog ระยะไกลอย่างปลอดภัย

วิธีการส่งออกบันทึกระบบ SLES ไปยังเซิร์ฟเวอร์ Syslog ระยะไกลอย่างปลอดภัย

ส่งต่อบันทึกระบบ SLES ไปยังเซิร์ฟเวอร์ syslog ระยะไกลอย่างปลอดภัยด้วย rsyslog, ใบรับรอง TLS, การตรวจสอบชื่อคู่ค้า, คิว, การตรวจสอบความถูกต้อง และการทดสอบ

การผสานรวม Active Directory กับ SSSD ใน SLES 15: คู่มือทีละขั้นตอน

การผสานรวม Active Directory กับ SSSD ใน SLES 15: คู่มือทีละขั้นตอน

เชื่อมต่อ SLES 15 เข้ากับ Active Directory ด้วย SSSD โดยใช้ YaST เตรียม DNS และเวลา กำหนดค่าการเข้าสู่ระบบโดเมน ตรวจสอบ Kerberos และเปรียบเทียบ SSSD, Winbind และ realmd

แก้ไขปัญหาไดรเวอร์ Wi-Fi Realtek RTL8821CE บน Pardus Linux

แก้ไขปัญหาไดรเวอร์ Wi-Fi Realtek RTL8821CE บน Pardus Linux

แก้ไขปัญหา Wi-Fi RTL8821CE บน Pardus Linux โดยตรวจสอบไดรเวอร์ rtw88 ในตัว เฟิร์มแวร์ Realtek คำสั่ง rfkill, NetworkManager และตัวเลือกการสำรองข้อมูลที่ปลอดภัย

แก้ไขปัญหา "ความล้มเหลวชั่วคราวในการแก้ไข DNS" ใน Debian 12 ด้วย systemd-resolved

แก้ไขปัญหา "ความล้มเหลวชั่วคราวในการแก้ไข DNS" ใน Debian 12 ด้วย systemd-resolved

วินิจฉัยและแก้ไขปัญหาการแก้ไขชื่อโดเมน (DNS resolution) บน Debian 12 ที่ใช้ systemd-resolved รวมถึง resolv.conf, NetworkManager, networkd, cache และการตรวจสอบความถูกต้อง

วิธีการติดตั้งระบบปฏิบัติการ Pardus Linux ควบคู่กับ Windows 11 อย่างปลอดภัย

วิธีการติดตั้งระบบปฏิบัติการ Pardus Linux ควบคู่กับ Windows 11 อย่างปลอดภัย

ติดตั้ง Pardus 25.2 ควบคู่ไปกับ Windows 11 โดยทำการสำรองข้อมูล ลดขนาดไดรฟ์ Windows บูตจาก USB UEFI และปกป้องพาร์ติชั่น EFI และพาร์ติชั่นกู้คืนที่มีอยู่เดิม