نصب یک‌کلیک فعال نیست — نصب دستی آزاد

Watchtower؛ به‌روزرسانی خودکار برنامه‌های Docker، با چشم باز

Watchtower مرتب بررسی می‌کند که image برنامه‌های Docker روی سرور نسخهٔ تازه دارند یا نه و در صورت وجود، آن‌ها را با همان تنظیمات دوباره اجرا می‌کند. راحت است اما بی‌خطر نیست. نصب یک‌کلیک آن فعلاً ارائه نمی‌شود، چون پروژه دیگر فعالانه نگه‌داری نمی‌شود؛ این صفحه نصب دستی، سازگاری با Docker و ریسک‌ها را توضیح می‌دهد.

حساب دارید؟ وارد شوید

لوگوی Watchtower

Watchtower

نصب دستی روی سرور ابری

سرور لازم برای نصب دستی، از

۱٬۱۰۰تومان / ساعت

حدود ۸۰۳٬۰۰۰ تومان در ماه،بر پایهٔ ۷۳۰ ساعت

  • پلن mini کافی است،  کنار برنامه‌های Docker همان سرور
  • بدون پورت و فایروال،  فقط سوکت Docker
  • نصب دستی با Docker،  راهنمای گام‌به‌گام همین صفحه

معرفی

به‌روزرسانی خودکار Docker با Watchtower روی سرور ابری ایران‌کلاد

برنامه‌های Docker سرور را روی آخرین نسخه نگه دارید، بدون پیگیری دستی هر کدام؛ و با برچسب، حالت فقط‌اعلان و زمان‌بندی، کنترل را از دست ندهید.

نصب یک‌کلیک Watchtower ارائه نمی‌شود، چون پروژه دیگر فعالانه نگه‌داری نمی‌شود. اگر با این آگاهی آن را می‌خواهید، روی سرور ابری‌ای که برنامه‌هایتان را اجرا می‌کند، با یک فرمان Docker طبق راهنمای همین صفحه آن را اجرا کنید و پیش از آن بخش ریسک‌ها را بخوانید.

امکانات کلیدی

Watchtower در یک نگاه

  • به‌روزرسانی با همان تنظیمات

    image تازه دریافت و برنامه با همان پورت‌ها، پوشه‌ها و متغیرها دوباره اجرا می‌شود.

  • برچسب و فقط‌اعلان

    انتخاب کنید کدام برنامه خودکار به‌روز شود و برای کدام فقط اعلان بیاید.

  • ریسک را بشناسید

    تغییر ناسازگار، ارتقای دیتابیس و نبود بازگشت؛ پیش از به‌روزرسانی بکاپ بگیرید.

۴ گام تا شروع

روش نصب گام‌به‌گام

  1. گام ۱: آماده‌بودن Docker و برنامه‌ها

    Watchtower روی سروری معنا دارد که خودش برنامه‌های Docker اجرا می‌کند. روی همان سرور ابری Ubuntu، بستهٔ docker.io نصب و سرویس Docker فعال باشد.

  2. گام ۲: انتخاب دامنهٔ اثر

    تصمیم بگیرید Watchtower همهٔ برنامه‌ها را به‌روز کند یا فقط برنامه‌های برچسب‌خورده را. برای سرورهای جدی، حالت برچسب را انتخاب و به برنامه‌های کم‌خطر برچسب فعال‌سازی Watchtower بدهید.

  3. گام ۳: اجرای Watchtower

    image مربوط به containrrr/watchtower را با سوکت Docker، منطقهٔ زمانی Asia/Tehran، فاصلهٔ بررسی ۳۶۰۰ ثانیه، پاک‌سازی image قدیمی و سیاست restart از نوع unless-stopped اجرا کنید.

  4. گام ۴: بررسی لاگ و اعلان

    با docker logs خروجی Watchtower را ببینید تا مطمئن شوید برنامه‌ها را پیدا می‌کند، و یک کانال اعلان مثل ایمیل یا ntfy تنظیم کنید تا از هر به‌روزرسانی باخبر شوید.

راهنمای کامل

راهنمای کامل Watchtower روی سرور ابری ایران‌کلاد

این راهنما برای کسی است که چند برنامه را با Docker روی سرور ابری اجرا می‌کند و می‌خواهد بدون پیگیری دستی، نسخه‌ها به‌روز بمانند. Watchtower این کار را خودکار می‌کند، اما خودکار بودن یعنی تغییری که شما بررسی‌اش نکرده‌اید روی سرور اجرا می‌شود. پس در کنار نصب، روی دامنهٔ اثر، حالت فقط‌اعلان، زمان‌بندی و بکاپ پیش از به‌روزرسانی تأکید می‌کنیم. اگر هنوز Docker را راه نینداخته‌اید، از صفحهٔ Docker شروع کنید.

۹ بخش حدود ۶ دقیقه مطالعه

فهرست مطالب

Watchtower چیست و چه مشکلی را حل می‌کند؟

Watchtower یک ابزار متن‌باز است که خودش به‌شکل یک برنامهٔ Docker اجرا می‌شود و از راه سوکت Docker، بقیهٔ برنامه‌های سرور را زیر نظر می‌گیرد. در فاصله‌های منظم بررسی می‌کند که برای image هر برنامه، با همان برچسب، نسخهٔ تازه‌ای در رجیستری منتشر شده یا نه. اگر شده باشد، image جدید را دریافت و برنامه را با همان تنظیمات دوباره اجرا می‌کند.

مشکلی که Watchtower حل می‌کند واقعی است: برنامه‌های خودمیزبان مرتب نسخهٔ اصلاحی و امنیتی می‌دهند و کسی که ده برنامه روی یک سرور دارد، معمولاً فرصت پیگیری همه را ندارد. نتیجه این است که برنامه‌ها ماه‌ها روی نسخهٔ قدیمی و آسیب‌پذیر می‌مانند. Watchtower این شکاف را می‌بندد.

اما همین خودکار بودن، ریسک خودش را دارد. Watchtower نمی‌داند نسخهٔ جدید تغییر ناسازگار دارد یا نه، یادداشت انتشار نمی‌خواند و پیش از به‌روزرسانی بکاپ نمی‌گیرد. پس آن را ابزاری برای برنامه‌های کم‌خطر یا ابزار اطلاع‌رسانی برای برنامه‌های حساس ببینید، نه جایگزین مدیریت نسخه.

ریسک‌های به‌روزرسانی خودکار را جدی بگیرید

پیش از روشن کردن Watchtower روی سروری که برایتان مهم است، این ریسک‌ها را بشناسید:

  • تغییر ناسازگار: نسخهٔ جدید ممکن است متغیر، مسیر یا پیکربندی را عوض کند و برنامه بالا نیاید
  • ارتقای دیتابیس: دیتابیس با برچسب latest پس از جهش نسخهٔ اصلی ممکن است با دادهٔ قبلی اجرا نشود
  • بی‌بازگشت بودن: با پاک‌سازی image قدیمی، بازگشت سریع به نسخهٔ قبل ممکن نیست
  • توقف کوتاه سرویس: هر به‌روزرسانی برنامه را متوقف و دوباره اجرا می‌کند
  • زنجیرهٔ تأمین: اگر image منتشرشده آلوده باشد، بدون بررسی روی سرور شما اجرا می‌شود
  • دسترسی سوکت Docker: Watchtower عملاً دسترسی root به سرور دارد

بازگشت به فهرست مطالب

نصب دستی Watchtower، گام‌به‌گام

مسیر زیر همان کاری است که اسکریپت آزمایشی ما انجام می‌دهد. روی سرور Ubuntu یا Debian که برنامه‌های Docker را اجرا می‌کند، docker.io و curl نصب و سرویس Docker فعال باشد. سپس image مربوط به containrrr/watchtower را با نام watchtower و سیاست restart از نوع unless-stopped اجرا کنید و سوکت /var/run/docker.sock را به آن بدهید.

اسکریپت ما این متغیرها را تنظیم می‌کند: TZ برابر Asia/Tehran‏، WATCHTOWER_POLL_INTERVAL برابر ۳۶۰۰ یعنی بررسی ساعتی، WATCHTOWER_CLEANUP برابر true برای پاک کردن image قدیمی، WATCHTOWER_INCLUDE_RESTARTING برابر true تا برنامه‌های در حال راه‌اندازی دوباره هم بررسی شوند، و WATCHTOWER_LABEL_ENABLE برابر false. مقدار آخر یعنی همهٔ برنامه‌های Docker سرور، بدون استثنا، به‌روز می‌شوند.

Watchtower پورتی باز نمی‌کند و قانون فایروال لازم ندارد. پس از اجرا، با فرمان docker logs -f watchtower خروجی را ببینید؛ باید فهرست برنامه‌های پیداشده و زمان بررسی بعدی را نشان دهد.

تنظیممقدار در اسکریپتپیشنهاد برای سرور جدی
فاصلهٔ بررسی۳۶۰۰ ثانیهزمان‌بندی cron در ساعت کم‌ترافیک
دامنهٔ اثرهمهٔ برنامه‌هافقط برنامه‌های برچسب‌خورده
پاک‌سازی image قدیمیفعالغیرفعال تا بازگشت ممکن باشد
حالت فقط‌اعلانخاموشروشن برای برنامه‌های حساس
اعلانتنظیم نشدهایمیل یا ntfy
پورت و فایروالنداردبدون تغییر

بازگشت به فهرست مطالب

پیکربندی امن‌تر: برچسب، نسخهٔ ثابت و فقط‌اعلان

امن‌ترین الگو ترکیب سه کار است. اول، WATCHTOWER_LABEL_ENABLE را true بگذارید و فقط به برنامه‌های کم‌خطر، مثل داشبورد یا ابزار پایش، برچسب com.centurylinklabs.watchtower.enable برابر true بدهید. دوم، برنامه‌های حساس و به‌ویژه دیتابیس‌ها را با برچسب نسخهٔ مشخص اجرا کنید، مثل postgres:16-alpine به‌جای latest؛ در این حالت Watchtower فقط نسخه‌های اصلاحی همان شاخه را می‌گیرد.

سوم، یک نمونهٔ دوم Watchtower در حالت WATCHTOWER_MONITOR_ONLY اجرا کنید یا کل Watchtower را در همین حالت نگه دارید تا برای برنامه‌های حساس فقط اعلان بفرستد. این‌طور از نسخهٔ تازه باخبر می‌شوید، یادداشت انتشار را می‌خوانید، بکاپ می‌گیرید و خودتان به‌روزرسانی را اجرا می‌کنید. پاک‌سازی image قدیمی را هم خاموش کنید تا در صورت مشکل، image قبلی روی دیسک بماند.

بازگشت به فهرست مطالب

هزینه و انتخاب پلن

Watchtower رایگان است و منابع ناچیزی می‌گیرد؛ نصب هم هزینه‌ای ندارد. آن را روی همان سرور ابری اجرا می‌کنید که برنامه‌های Docker شما را میزبانی می‌کند، پس پلن را بر اساس آن برنامه‌ها انتخاب کنید. برای چند برنامهٔ سبک mini کافی است و برای برنامه‌هایی با دیتابیس، standard یا بالاتر.

یک نکتهٔ کمتر دیده‌شده: Watchtower با پاک‌سازی image قدیمی دیسک را مرتب نگه می‌دارد. اگر پاک‌سازی را برای امکان بازگشت خاموش کنید، image‌های قدیمی جمع می‌شوند و باید گاهی با docker image prune دستی پاکشان کنید. هر دریافت image هم از سهمیهٔ ترافیک ماهانهٔ سرور مصرف می‌کند.

پلنمنابعساعتی (تومان)تقریبی ماهانه (تومان)
mini۱ هسته، ۱ گیگ RAM، ۲۰ گیگ دیسک۱٬۱۰۰۸۰۳٬۰۰۰
standard۲ هسته، ۲ گیگ RAM، ۴۰ گیگ دیسک۲٬۲۰۰۱٬۶۰۶٬۰۰۰

هزینه ساعتی از کیف پول کسر می‌شود؛ برای برآورد از ماشین‌حساب هزینه استفاده کنید.

بازگشت به فهرست مطالب

Watchtower در برابر روش‌های دیگر به‌روزرسانی

سه روش رایج برای به‌روز نگه داشتن برنامه‌های Docker، با مزایا و ریسک‌های متفاوت:

موضوعWatchtower خودکارWatchtower فقط‌اعلانبه‌روزرسانی دستی
زحمتتقریباً هیچکمزیاد
کنترل بر زمان تغییرنداردکاملکامل
ریسک خرابی ناگهانیبیشترکمکم
جاماندن از وصلهٔ امنیتیکمکم اگر اعلان را جدی بگیریدبیشتر
مناسب برایبرنامه‌های کم‌خطربرنامه‌های مهمسرور تولیدی با تغییر کنترل‌شده

اگر رابط گرافیکی برای مدیریت برنامه‌ها و به‌روزرسانی دستی می‌خواهید، Portainer یا Yacht را ببینید؛ برای دیدن لاگ‌ها Dozzle ابزار سبکی است.

بازگشت به فهرست مطالب

امنیت: سوکت Docker و منبع image‌ها

Watchtower برای کارش به /var/run/docker.sock نیاز دارد و هر برنامه‌ای که به این سوکت دسترسی دارد، عملاً root سرور است. پس فقط image رسمی Watchtower را اجرا کنید و آن را از رجیستری‌های ناشناس نگیرید. اگر حالت HTTP API آن را برای راه‌اندازی به‌روزرسانی از بیرون فعال می‌کنید، توکن قوی بگذارید و پورتش را در فایروال شبکه فقط برای IP‌های مشخص باز کنید.

ریسک دوم زنجیرهٔ تأمین است. Watchtower هر چیزی را که با همان برچسب در رجیستری منتشر شود اجرا می‌کند. برنامه‌هایی را خودکار به‌روز کنید که ناشر معتبر و فعالی دارند. اگر دسترسی سرور به رجیستری قطع یا محدود باشد، Watchtower به‌روزرسانی نمی‌کند و خطا را در لاگ می‌نویسد؛ برنامه‌ها با نسخهٔ فعلی به کار ادامه می‌دهند.

بازگشت به فهرست مطالب

بکاپ پیش از به‌روزرسانی: شبکهٔ ایمنی واقعی

Watchtower خودش دادهٔ ماندگاری ندارد؛ چیزی که باید محافظت شود، پوشه‌های دادهٔ برنامه‌هایی است که به‌روز می‌کند. اگر به‌روزرسانی خودکار فعال است، بکاپ منظم پوشه‌های داده و خروجی دیتابیس‌ها ضروری است، چون تنها راه بازگشت از به‌روزرسانی‌ای که ساختار داده را تغییر داده، بکاپ پیش از آن است.

از تب بکاپ پنل هر وقت خواستید بکاپ کامل سرور بسازید؛ پیش از هر به‌روزرسانی دستی مهم این کار را بکنید. بکاپ خودکار زمان‌بندی‌شده برای سرور ابری فعال نیست و فضای بکاپ ساعتی ۲ تومان به ازای هر گیگابایت حساب می‌شود؛ جزئیات در صفحهٔ پشتیبان‌گیری. برای بکاپ نسخه‌دار پوشه‌ها روی سرور دیگر، Restic Server گزینهٔ خوبی است.

بازگشت به فهرست مطالب

محدودیت‌ها را پیش از شروع بدانید

نصب یک‌کلیک Watchtower در صفحهٔ سفارش ارائه نمی‌شود و راه‌اندازی دستی است. مهم‌تر از آن، پروژه دیگر فعالانه نگه‌داری نمی‌شود: اصلاح امنیتی تازه‌ای نمی‌گیرد و اگر Docker سرور نسخهٔ API قدیمی آن را نپذیرد، Watchtower در لاگ خطای نسخهٔ API می‌دهد و هیچ برنامه‌ای را به‌روز نمی‌کند. پس از هر نصب، لاگ را بخوانید و اگر خطا دیدید، به به‌روزرسانی دستی برگردید. Watchtower فقط برنامه‌هایی را می‌بیند که با Docker روی همان سرور اجرا می‌شوند؛ بسته‌های سیستم‌عامل، برنامه‌هایی که بدون Docker نصب شده‌اند و خود Docker را به‌روز نمی‌کند. برای بسته‌های سیستم‌عامل، به‌روزرسانی منظم با apt را جداگانه برنامه‌ریزی کنید.

Watchtower فایل‌های docker compose را تغییر نمی‌دهد؛ برنامه را با همان تنظیمات فعلی و image تازه دوباره اجرا می‌کند. اگر نسخهٔ جدید متغیر یا سرویس تازه‌ای لازم داشته باشد، Watchtower آن را اضافه نمی‌کند و باید خودتان فایل compose را به‌روز کنید. وابستگی بین برنامه‌ها، مثل اجرای دیتابیس پیش از برنامه، را هم مدیریت نمی‌کند.

بازگشت به فهرست مطالب بازگشت به ابتدای راهنما

پرسش و پاسخ،  ۱۲ پرسش

سؤالات متداول

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

Watchtower دقیقاً چه کاری انجام می‌دهد؟
در فاصله‌های منظم، برای هر برنامهٔ Docker در حال اجرا، image با همان برچسب را از رجیستری بررسی می‌کند. اگر نسخهٔ تازه‌ای منتشر شده باشد، آن را دریافت می‌کند، برنامهٔ قبلی را متوقف می‌کند و یک نمونهٔ جدید با همان پورت‌ها، پوشه‌ها و متغیرها اجرا می‌کند. در نصب ما image قدیمی پس از به‌روزرسانی پاک می‌شود.
Watchtower برای چه کسی مناسب است؟
برای کسی که چند برنامهٔ سبک و کم‌خطر روی یک سرور دارد، مثلاً یک داشبورد خانگی، یک سرویس اعلان یا ابزار پایش، و نمی‌خواهد هر هفته دستی نسخه‌ها را بررسی کند. برای سرور تولیدی کسب‌وکار با دیتابیس و کاربر واقعی، به‌روزرسانی خودکار همه‌چیز توصیه نمی‌شود.
چطور فقط برخی برنامه‌ها را به‌روز کنم؟
متغیر WATCHTOWER_LABEL_ENABLE را true بگذارید و فقط به برنامه‌هایی که می‌خواهید برچسب com.centurylinklabs.watchtower.enable با مقدار true بدهید. روش برعکس هم ممکن است: همه را به‌روز کند جز برنامه‌هایی که همین برچسب را با مقدار false دارند؛ مثلاً دیتابیس‌ها.
می‌توانم فقط باخبر شوم و به‌روزرسانی نکند؟
بله. با متغیر WATCHTOWER_MONITOR_ONLY برابر true‏، Watchtower فقط بررسی می‌کند و اگر نسخهٔ تازه‌ای باشد، اعلان می‌فرستد. این حالت امن‌ترین نقطهٔ شروع است: از نسخه‌های جدید خبردار می‌شوید و زمان به‌روزرسانی را خودتان پس از خواندن یادداشت‌های انتشار انتخاب می‌کنید.
زمان به‌روزرسانی را چطور تعیین کنم؟
نصب ما هر ۳۶۰۰ ثانیه، یعنی هر ساعت، بررسی می‌کند. به‌جای فاصلهٔ ثابت می‌توانید با WATCHTOWER_SCHEDULE یک عبارت cron شش‌بخشی بدهید، مثلاً بامداد جمعه، تا به‌روزرسانی و توقف کوتاه برنامه‌ها در ساعت کم‌ترافیک انجام شود. برای ساختن عبارت، ابزار cron کمک می‌کند.
اعلان‌ها از چه راه‌هایی ارسال می‌شوند؟
Watchtower برای اعلان از کتابخانهٔ shoutrrr استفاده می‌کند که ایمیل SMTP‏، ntfy‏، Gotify‏، Slack‏، Discord‏، Telegram و webhook را پشتیبانی می‌کند. آدرس اعلان را در متغیر WATCHTOWER_NOTIFICATION_URL بدهید. سرور در ایران است؛ کانال‌هایی را انتخاب کنید که از آن در دسترس‌اند، مثل ایمیل یا ntfy خودمیزبان.
چرا Watchtower در فهرست نصب یک‌کلیک نیست؟
اسکریپت نصب Watchtower را آزموده‌ایم، اما آن را در فهرست اپلیکیشن‌های صفحهٔ سفارش نگذاشته‌ایم: پروژهٔ Watchtower دیگر فعالانه نگه‌داری نمی‌شود و نسخهٔ منتشرشدهٔ آن با نسخهٔ API که نسخه‌های تازهٔ Docker می‌پذیرند سازگار نیست. اگر با این آگاهی می‌خواهید از آن استفاده کنید، آن را با یک فرمان Docker روی سروری که برنامه‌هایتان را اجرا می‌کند راه بیندازید و پس از اجرا لاگ آن را بررسی کنید؛ مراحلش در همین صفحه آمده است.
Watchtower هزینهٔ جدا دارد؟
نه. Watchtower رایگان است، نصب هم هزینه‌ای ندارد و چند ده مگابایت حافظه بیشتر نمی‌گیرد؛ پس روی همان سروری اجرا می‌شود که برنامه‌هایتان هستند. هزینه همان سرور ابری است، مثلاً mini با ۱٬۱۰۰ تومان یا standard با ۲٬۲۰۰ تومان در ساعت، بسته به برنامه‌هایی که کنار Watchtower دارید.
اگر به‌روزرسانی برنامه‌ای را خراب کرد چه کنم؟
چون نصب ما image قدیمی را پاک می‌کند، بازگشت خودکار وجود ندارد. باید برنامه را دستی با برچسب نسخهٔ قبلی، مثلاً شمارهٔ نسخهٔ مشخص به‌جای latest، دوباره اجرا کنید. اگر به‌روزرسانی ساختار دیتابیس را تغییر داده باشد، ممکن است نسخهٔ قبلی دیگر با داده‌ها کار نکند و تنها راه، بازگرداندن بکاپ پیش از به‌روزرسانی باشد.
آیا Watchtower دیتابیس‌ها را هم به‌روز می‌کند؟
اگر دامنهٔ اثر روی همهٔ برنامه‌ها باشد، بله؛ و این خطرناک‌ترین بخش است. اگر دیتابیسی با برچسب latest اجرا شده باشد و نسخهٔ اصلی بعدی منتشر شود، برنامهٔ جدید ممکن است با پوشهٔ دادهٔ قبلی اجرا نشود. دیتابیس‌ها را همیشه با برچسب نسخهٔ مشخص اجرا کنید و با برچسب false از Watchtower مستثنا کنید.
برنامه‌هایی که با docker compose اجرا شده‌اند هم به‌روز می‌شوند؟
بله، Watchtower به نحوهٔ اجرای برنامه کاری ندارد و هر برنامهٔ Docker در حال اجرا را می‌بیند. اما فایل compose را تغییر نمی‌دهد. اگر بعداً فرمان docker compose up را اجرا کنید، compose بر اساس همان فایل عمل می‌کند. برای پروژه‌های compose بسیاری ترجیح می‌دهند دستی با docker compose pull و up به‌روز کنند تا فایل و برنامه هم‌خوان بمانند.
چطور ببینم Watchtower چه چیزی را به‌روز کرده است؟
فرمان docker logs watchtower فهرست بررسی‌ها، image‌های دریافت‌شده و برنامه‌های دوباره اجراشده را با زمان نشان می‌دهد. برای سابقهٔ ماندگار، اعلان را تنظیم کنید تا پس از هر دور به‌روزرسانی گزارش بفرستد. ابزاری مثل Dozzle هم لاگ‌ها را در مرورگر نمایش می‌دهد.

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

به‌روز بمانید، آگاهانه

یک سرور ابری برای برنامه‌های Docker بسازید و Watchtower را با پیکربندی امن این صفحه کنارشان اجرا کنید یا به‌روزرسانی را دستی و آگاهانه انجام دهید.