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
Goal Recommended action
Install the updater sudo apt update && sudo apt install unattended-upgrades
Enable daily periodic work Set APT::Periodic::Update-Package-Lists "1"; and APT::Periodic::Unattended-Upgrade "1";
Keep local policy maintainable Put overrides in a later file such as 52unattended-upgrades-local
Test before relying on it sudo unattended-upgrade --debug --dry-run
Confirm scheduling Inspect apt-daily.timer and apt-daily-upgrade.timer
Watch results Review /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.
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)'
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คือแหล่งข้อมูลที่ถูกต้องที่สุดในแต่ละสภาพแวดล้อม
ตัวอย่างมุมมองตัวแก้ไขนโยบาย จับคู่แหล่งที่มากับที่เก็บข้อมูลที่รายงานโดยนโยบาย 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 วันที่แสดงเป็นเพียงตัวอย่าง โปรดใช้คำสั่ง 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 เองเมื่อตรวจสอบพฤติกรรมบนเวอร์ชันเฉพาะ: