[{"data":1,"prerenderedAt":550},["ShallowReactive",2],{"header-service-categories":3,"article-how-to-enable-https-with-nginx":159,"footer-service-categories":179,"related-how-to-enable-https-with-nginx":222},[4,37,129],{"id":5,"name":6,"description":7,"image":8,"slug":9,"service_groups":10,"key":29,"title":6,"services":30},1,"عملیات و پشتیبانی","پایداری  و پشتیبانی برای سرویس‌های حیاتی","","support",[11,22],{"id":12,"name":13,"name_en":14,"image":15,"description":16,"slug":14,"headline":17,"tagline":18,"hidden":19,"group_type":20,"sort_order":21,"category":5},10,"پشتیبانی و خدمات دواپس","devops-support","/media/service_group_images/group-10-devops-support.png","\u003Cp>خدمات پشتیبانی ماهانه DevOps برای راه‌اندازی، نگهداری و عیب‌یابی زیرساخت‌های استقرار و مانیتورینگ ارائه می‌شود. این سرویس شامل پیاده‌سازی CI/CD، داکرایز کردن پروژه‌ها، راه‌اندازی مانیتورینگ، مدیریت لاگ و بهینه‌سازی فرایندهای استقرار است. هر پلن شامل تعداد ساعت مشخصی پشتیبانی است و در صورت مصرف بیشتر، ساعات مازاد به‌صورت جداگانه محاسبه خواهد شد.\u003C/p>","پشتیبانی و خدمات DevOps","راه‌اندازی، نگهداری و بهینه‌سازی زیرساخت DevOps برای استقرار سریع‌تر و پایدارتر",false,"F",91,{"id":5,"name":23,"name_en":9,"image":24,"description":25,"slug":9,"headline":26,"tagline":27,"hidden":19,"group_type":20,"sort_order":28,"category":5},"پشتیبانی و مدیریت سرور لینوکسی","/media/service_group_images/group-01-support_r0RZtMn.png","\u003Cp>خدمات پشتیبانی ماهانه برای مدیریت، عیب‌یابی و نگهداری سرورهای لینوکسی ارائه می‌شود. هر پلن شامل تعداد ساعت مشخصی پشتیبانی است و در صورت مصرف بیشتر، ساعات مازاد به‌صورت جداگانه محاسبه خواهد شد.\u003C/p>","پشتیبانی تخصصی سرور، متناسب با نیاز کسب‌وکار شما","از رفع خطاهای زیرساختی تا مدیریت روزمره سرور، با پلن‌های ماهانه و شفاف",90,"operations",[31,34],{"id":12,"name":13,"name_en":14,"image":32,"description":16,"slug":14,"headline":17,"tagline":18,"hidden":19,"group_type":20,"sort_order":21,"category":5,"services":33,"serviceCategoryKey":29,"serviceCategoryImage":8},"https://api.dornadevops.com/media/service_group_images/group-10-devops-support.png",[],{"id":5,"name":23,"name_en":9,"image":35,"description":25,"slug":9,"headline":26,"tagline":27,"hidden":19,"group_type":20,"sort_order":28,"category":5,"services":36,"serviceCategoryKey":29,"serviceCategoryImage":8},"https://api.dornadevops.com/media/service_group_images/group-01-support_r0RZtMn.png",[],{"id":38,"name":39,"description":40,"image":8,"slug":41,"service_groups":42,"key":106,"title":39,"services":107},2,"زیرساخت و میزبانی","میزبانی مطمئن برای محصولاتی که باید همیشه در دسترس باشند","Infrastructure",[43,52,61,70,79,88,97],{"id":38,"name":44,"name_en":45,"image":46,"description":47,"slug":45,"headline":48,"tagline":49,"hidden":19,"group_type":50,"sort_order":51,"category":38},"لایسنس نرم‌افزارهای مدیریت سرور","license","/media/service_group_images/group-02-license.png","\u003Cp>در این بخش می‌توانید لایسنس‌های موردنیاز برای مدیریت، امنیت، مجازی‌سازی و بهینه‌سازی سرور را به‌صورت ماهانه تهیه یا تمدید کنید. تمامی لایسنس‌ها با هدف افزایش کارایی، امنیت و سهولت مدیریت سرور ارائه می‌شوند.\u003C/p>","لایسنس‌های ضروری برای مدیریت حرفه‌ای سرور","از کنترل‌پنل و وب‌سرور تا امنیت و مجازی‌سازی، همه‌چیز برای یک زیرساخت کامل","S",80,{"id":53,"name":54,"name_en":55,"image":56,"description":57,"slug":55,"headline":58,"tagline":59,"hidden":19,"group_type":20,"sort_order":60,"category":38},5,"سرور مجازی ایران با منابع اختصاصی","iran-vm","/media/service_group_images/group-05-iran-vm.png","\u003Cp>سرور مجازی ایران برای کسب‌وکارهایی مناسب است که به منابع اختصاصی‌تر، کنترل بیشتر و عملکرد پایدارتر نسبت به هاست اشتراکی نیاز دارند. این سرویس با پلن‌های متنوع و IP اختصاصی ارائه می‌شود.\u003C/p>","قدرت بیشتر، کنترل کامل‌تر، میزبانی در ایران","از پروژه‌های در حال رشد تا سرویس‌های حرفه‌ای، با منابع اختصاصی و دسترسی پایدار",70,{"id":62,"name":63,"name_en":64,"image":65,"description":66,"slug":64,"headline":67,"tagline":68,"hidden":19,"group_type":20,"sort_order":69,"category":38},4,"هاست لینوکس ایران برای میزبانی سایت","linux-host","/media/service_group_images/group-04-linux-host.png","\u003Cp>هاست لینوکس ایران برای میزبانی سایت‌های شرکتی، فروشگاهی و شخصی با منابع متنوع، پهنای باند نامحدود و امکان استفاده از کنترل‌پنل‌های محبوب ارائه می‌شود. این سرویس برای راه‌اندازی سریع و پایدار وب‌سایت در داخل ایران مناسب است.\u003C/p>","میزبانی لینوکسی سریع و پایدار در ایران","انتخابی مناسب برای سایت‌های ایرانی با دسترسی بهتر، منابع متنوع و مدیریت آسان",63,{"id":71,"name":72,"name_en":73,"image":74,"description":75,"slug":73,"headline":76,"tagline":77,"hidden":19,"group_type":20,"sort_order":78,"category":38},8,"هاست ایمیل حرفه‌ای","email","/media/service_group_images/group-08-email.png","\u003Cp>سرویس ایمیل برای راه‌اندازی و مدیریت ایمیل سازمانی با تنظیمات بهینه و کاهش ریسک اسپم‌شدن ارائه می‌شود. این سرویس دارای پنل تحت وب، امکان ساخت حساب‌های متعدد و بکاپ هفتگی است.\u003C/p>","ایمیل سازمانی پایدار و حرفه‌ای برای کسب‌وکار شما","ارسال و دریافت مطمئن ایمیل با تنظیمات بهینه، پنل تحت وب و پشتیبانی مداوم",62,{"id":80,"name":81,"name_en":82,"image":83,"description":84,"slug":82,"headline":85,"tagline":86,"hidden":19,"group_type":20,"sort_order":87,"category":38},9,"هاست لینوکس خارج با کیفیت بین‌المللی","linux-host-eu","/media/service_group_images/group-09-linux-host-eu.png","\u003Cp>هاست لینوکس خارج برای سایت‌هایی مناسب است که به میزبانی با کیفیت بالا در خارج از کشور نیاز دارند. این سرویس با فضای مناسب، پهنای باند نامحدود، SSL و امکان استفاده از کنترل‌پنل‌های محبوب ارائه می‌شود.\u003C/p>","میزبانی لینوکسی خارج، مناسب پروژه‌های حرفه‌ای‌تر","کیفیت بالا، منابع مناسب و انتخابی مطمئن برای وب‌سایت‌های بین‌المللی یا خاص",61,{"id":89,"name":90,"name_en":91,"image":92,"description":93,"slug":91,"headline":94,"tagline":95,"hidden":19,"group_type":20,"sort_order":96,"category":38},3,"فضای بکاپ و نگهداری نسخه پشتیبان","backup","/media/service_group_images/group-03-backup.png","\u003Cp>هاست بکاپ مناسب ذخیره‌سازی امن فایل‌های پشتیبان سایت و سرور است و با فضای متنوع، ترافیک نامحدود و دسترسی FTP/SFTP ارائه می‌شود. این سرویس برای نگهداری نسخه‌های پشتیبان منظم و دسترسی سریع طراحی شده است\u003C/p>","فضایی مطمئن برای نگهداری بکاپ‌های مهم شما","ذخیره‌سازی سریع، ترافیک نامحدود و دسترسی امن برای مدیریت بهتر نسخه‌های پشتیبان",50,{"id":98,"name":99,"name_en":100,"image":101,"description":102,"slug":100,"headline":103,"tagline":104,"hidden":19,"group_type":20,"sort_order":105,"category":38},7,"خدمات مانیتورینگ","monitoring","/media/service_group_images/group-07-monitoring.png","\u003Cp>این سرویس برای پایش وضعیت دسترس‌پذیری و سلامت سرویس‌ها طراحی شده و با گزارش‌گیری، عیب‌یابی و اطلاع‌رسانی از طریق ایمیل و تلگرام، به شما در شناسایی سریع اختلال‌ها کمک می‌کند.\u003C/p>","همیشه از وضعیت سرویس‌های خود باخبر باشید","پایش لحظه‌ای آپتایم، گزارش دقیق و اطلاع‌رسانی سریع در زمان بروز اختلال",0,"infrastructure",[108,111,114,117,120,123,126],{"id":38,"name":44,"name_en":45,"image":109,"description":47,"slug":45,"headline":48,"tagline":49,"hidden":19,"group_type":50,"sort_order":51,"category":38,"services":110,"serviceCategoryKey":106,"serviceCategoryImage":8},"https://api.dornadevops.com/media/service_group_images/group-02-license.png",[],{"id":53,"name":54,"name_en":55,"image":112,"description":57,"slug":55,"headline":58,"tagline":59,"hidden":19,"group_type":20,"sort_order":60,"category":38,"services":113,"serviceCategoryKey":106,"serviceCategoryImage":8},"https://api.dornadevops.com/media/service_group_images/group-05-iran-vm.png",[],{"id":62,"name":63,"name_en":64,"image":115,"description":66,"slug":64,"headline":67,"tagline":68,"hidden":19,"group_type":20,"sort_order":69,"category":38,"services":116,"serviceCategoryKey":106,"serviceCategoryImage":8},"https://api.dornadevops.com/media/service_group_images/group-04-linux-host.png",[],{"id":71,"name":72,"name_en":73,"image":118,"description":75,"slug":73,"headline":76,"tagline":77,"hidden":19,"group_type":20,"sort_order":78,"category":38,"services":119,"serviceCategoryKey":106,"serviceCategoryImage":8},"https://api.dornadevops.com/media/service_group_images/group-08-email.png",[],{"id":80,"name":81,"name_en":82,"image":121,"description":84,"slug":82,"headline":85,"tagline":86,"hidden":19,"group_type":20,"sort_order":87,"category":38,"services":122,"serviceCategoryKey":106,"serviceCategoryImage":8},"https://api.dornadevops.com/media/service_group_images/group-09-linux-host-eu.png",[],{"id":89,"name":90,"name_en":91,"image":124,"description":93,"slug":91,"headline":94,"tagline":95,"hidden":19,"group_type":20,"sort_order":96,"category":38,"services":125,"serviceCategoryKey":106,"serviceCategoryImage":8},"https://api.dornadevops.com/media/service_group_images/group-03-backup.png",[],{"id":98,"name":99,"name_en":100,"image":127,"description":102,"slug":100,"headline":103,"tagline":104,"hidden":19,"group_type":20,"sort_order":105,"category":38,"services":128,"serviceCategoryKey":106,"serviceCategoryImage":8},"https://api.dornadevops.com/media/service_group_images/group-07-monitoring.png",[],{"id":89,"name":130,"description":131,"image":8,"slug":132,"service_groups":133,"key":132,"title":130,"services":152},"امنیت و ابزارها","ریسک کمتر، کنترل بیشتر","security",[134,143],{"id":135,"name":136,"name_en":137,"image":138,"description":139,"slug":137,"headline":140,"tagline":141,"hidden":19,"group_type":20,"sort_order":142,"category":89},12,"اسکن های امنیتی ایستا","static-scans","/media/service_group_images/group-12-static-scans.png","\u003Cp>پایش امنیت کد منبع، کتابخانه ها و اطلاعات حساس برای شناسایی آسیب پذیری ها پیش از انتشار نرم افزار.\u003C/p>","سرویس های اسکن ایستای امنیت نرم افزار","شناسایی آسیب پذیری ها پیش از اجرا و انتشار نرم افزار",101,{"id":144,"name":145,"name_en":146,"image":147,"description":148,"slug":146,"headline":149,"tagline":150,"hidden":19,"group_type":20,"sort_order":151,"category":89},11,"اسکن های امنیتی پویا (به زودی)","dynamic-scans","/media/service_group_images/group-11-dynamic-scans.png","\u003Cp>سرویس‌های اسکن امنیتی، راهکاری برای پایش مستمر امنیت نرم‌افزار و شناسایی خودکار آسیب‌پذیری‌ها پیش از انتشار هستند. این خدمات با پنل مدیریت فارسی و قابلیت ادغام با GitLab ارائه می‌شوند. در حال حاضر سرویس اسکن ایستا (کد، کتابخانه‌ها و سکرت‌ها) فعال بوده و پلن‌های اسکن پویا، ترکیبی و زیرساخت به‌زودی اضافه خواهند شد.\u003C/p>","سرویس های اسکن پویای امنیت نرم افزار","شناسایی آسیب پذیری های برنامه در حال اجرا پیش از آنکه به تهدید تبدیل شوند",100,[153,156],{"id":135,"name":136,"name_en":137,"image":154,"description":139,"slug":137,"headline":140,"tagline":141,"hidden":19,"group_type":20,"sort_order":142,"category":89,"services":155,"serviceCategoryKey":132,"serviceCategoryImage":8},"https://api.dornadevops.com/media/service_group_images/group-12-static-scans.png",[],{"id":144,"name":145,"name_en":146,"image":157,"description":148,"slug":146,"headline":149,"tagline":150,"hidden":19,"group_type":20,"sort_order":151,"category":89,"services":158,"serviceCategoryKey":132,"serviceCategoryImage":8},"https://api.dornadevops.com/media/service_group_images/group-11-dynamic-scans.png",[],{"id":-1,"title":160,"slug":8,"excerpt":161,"content":162,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":166,"publishedAt":8,"readTime":168,"image":169,"tags":170,"tagsFa":174,"views":105},"نحوه فعال کردن https  و مدیریت سرتیفیکیت دامنه با nginx","بیشتر آموزش‌های فعال‌سازی HTTPS روی Nginx به شما می‌گویند دستور certbot --nginx -d example.com را اجرا کنید و تمام! این روش کار می‌کند اما اولین باری که چیزی خراب شود، گم می‌شوید؛ چون هیچ‌وقت نفهمیده‌اید آن دستور در واقع چه کاری انجام داده است.\r\n\r\nاین مقاله مسیر متفاوتی را طی می‌کند. ابتدا می‌فهمیم پشت صحنه چه می‌گذرد، بعد با دستورهای خام Certbot (بدون افزونه Nginx) گواهی می‌گیریم و آن را خودمان به کانفیگ Nginx وصل می‌کنیم. فقط بعد از این مراحل، سراغ آن یک دستور جادویی می‌رویم که همه کارها را خودکار می‌کند و در آن لحظه دقیقاً می‌دانید چه کاری برایتان انجام می‌دهد.","\u003Ch1>فعال کردن HTTPS رایگان برای دامنه‌های Nginx: از اصول پایه تا اجرای یک دستور\u003C/h1>\u003Cp>بیشتر آموزش‌های فعال‌سازی HTTPS روی Nginx به شما می‌گویند دستور \u003Ccode>certbot --nginx -d example.com\u003C/code> را اجرا کنید و تمام! این روش کار می‌کند اما اولین باری که چیزی خراب شود، گم می‌شوید؛ چون هیچ‌وقت نفهمیده‌اید آن دستور در واقع \u003Ci>چه کاری\u003C/i> انجام داده است.\u003C/p>\u003Cp>این مقاله مسیر متفاوتی را طی می‌کند. ابتدا می‌فهمیم \u003Cstrong>پشت صحنه چه می‌گذرد\u003C/strong>، بعد با \u003Cstrong>دستورهای خام Certbot\u003C/strong> (بدون افزونه Nginx) گواهی می‌گیریم و آن را \u003Cstrong>خودمان\u003C/strong> به کانفیگ Nginx وصل می‌کنیم. فقط بعد از این مراحل، سراغ آن یک دستور جادویی می‌رویم که همه کارها را خودکار می‌کند و در آن لحظه دقیقاً می‌دانید چه کاری برایتان انجام می‌دهد.\u003C/p>\u003Cp>\u003Cstrong>پیش‌نیازها:\u003C/strong> یک سرور اوبونتو (۲۰.۰۴ / ۲۲.۰۴ / ۲۴.۰۴)، Nginx نصب‌شده، دسترسی sudo و دامنه‌ای که DNS آن به سرور شما اشاره کند. در سراسر مقاله از \u003Ccode>example.com\u003C/code> به‌عنوان جایگزین دامنه استفاده می‌کنیم آن را با دامنه خودتان عوض کنید.\u003C/p>\u003Chr>\u003Ch2>بخش ۱ پشت صحنه چه می‌گذرد؟\u003C/h2>\u003Ch3>مشکلی که HTTPS حل می‌کند\u003C/h3>\u003Cp>ترافیک ساده HTTP به‌صورت متن باز (Plaintext) منتقل می‌شود و هر کسی در مسیر شبکه می‌تواند آن را بخواند. HTTPS ترافیک HTTP را داخل \u003Cstrong>رمزنگاری TLS\u003C/strong> می‌پیچد و TLS به سرور شما نیاز دارد که یک \u003Cstrong>گواهی (Certificate)\u003C/strong> ارائه دهد: فایلی شامل کلید عمومی سرور و نام دامنه شما که توسط یک \u003Cstrong>مرجع صدور گواهی (Certificate Authority یا CA)\u003C/strong> امضا شده و مرورگرها به آن اعتماد دارند.\u003C/p>\u003Ch3>Let's Encrypt و پروتکل ACME\u003C/h3>\u003Cp>گواهی \u003Cstrong>Let's Encrypt\u003C/strong> یک CA رایگان و غیرانتفاعی است. اما هیچ CA‌ای نمی‌تواند بی‌هیچ بررسی گواهی صادر کند باید مطمئن شود واقعاً \u003Ci>کنترل دامنه\u003C/i> دست شماست. این بررسی با پروتکل استاندارد \u003Cstrong>ACME\u003C/strong> انجام می‌شود که رایج‌ترین روش آن \u003Cstrong>چالش HTTP-01\u003C/strong> است:\u003C/p>\u003Col>\u003Cli data-list-item-id=\"ea90fb14bca89a973c43f4212b8674998\">شما برای \u003Ccode>example.com\u003C/code> درخواست گواهی می‌دهید.\u003C/li>\u003Cli data-list-item-id=\"ee666aefc556df24d1ce5e9ca2d89145e\">گواهی Let's Encrypt پاسخ می‌دهد: \u003Ci>«اثباتش کن. این توکن تصادفی را در آدرس \u003C/i>\u003Ccode>\u003Ci>http://example.com/.well-known/acme-challenge/&lt;token&gt;\u003C/i>\u003C/code>\u003Ci> قرار بده.»\u003C/i>\u003C/li>\u003Cli data-list-item-id=\"e9808fba7595fc983a536a8f00b491b99\">گواهی Let's Encrypt آن آدرس را \u003Cstrong>از اینترنت عمومی\u003C/strong> درخواست می‌کند. اگر توکن آنجا باشد، یعنی شما سروری را کنترل می‌کنید که دامنه به آن اشاره می‌کند. گواهی صادر می‌شود.\u003C/li>\u003C/ol>\u003Cp>&nbsp;\u003C/p>\u003Ch3>Certbot: کلاینتی که این گفت‌وگو را خودکار می‌کند\u003C/h3>\u003Cp>\u003Cstrong>کلاینت Certbot\u003C/strong> یک کلاینت ACME است یعنی از طرف شما با Let's Encrypt صحبت می‌کند. افزونه‌های (Plugin) Certbot \u003Cstrong>دو نقش مجزا\u003C/strong> دارند.\u003C/p>\u003Cfigure class=\"table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>نقش افزونه\u003C/th>\u003Cth>وظیفه\u003C/th>\u003Cth>مثال‌ها\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Cstrong>Authenticator\u003C/strong>\u003C/td>\u003Ctd>اثبات مالکیت دامنه (انجام چالش)\u003C/td>\u003Ctd>\u003Ccode>standalone\u003C/code>، \u003Ccode>webroot\u003C/code>، \u003Ccode>nginx\u003C/code>، \u003Ccode>manual\u003C/code>، افزونه‌های DNS\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Cstrong>Installer\u003C/strong>\u003C/td>\u003Ctd>ویرایش کانفیگ وب‌سرور برای استفاده از گواهی\u003C/td>\u003Ctd>\u003Ccode>nginx\u003C/code>، \u003Ccode>apache\u003C/code>\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/figure>\u003Cp>دستور معروف \u003Ccode>certbot --nginx\u003C/code> در واقع افزونه nginx است که \u003Cstrong>هر دو نقش\u003C/strong> را هم‌زمان بازی می‌کند. در مسیر دستی ما، از \u003Ccode>standalone\u003C/code> به‌عنوان Authenticator استفاده می‌کنیم و نقش Installer را \u003Cstrong>خودتان\u003C/strong> بازی خواهید کرد.\u003C/p>\u003Ch3>سه حقیقتی که باید به خاطر بسپارید\u003C/h3>\u003Col>\u003Cli data-list-item-id=\"e262ed5fd194d020bec6f9f6a62db68b0\">گواهی‌های Let's Encrypt فقط \u003Cstrong>۹۰ روز\u003C/strong> اعتبار دارند ← پس تمدید باید خودکار باشد.\u003C/li>\u003Cli data-list-item-id=\"e0c0d83c39946a3901bc2bdb64fbef781\">همه فایل‌های گواهی زیر مسیر \u003Ccode>/etc/letsencrypt/\u003C/code> قرار می‌گیرند.\u003C/li>\u003Cli data-list-item-id=\"e652b65621f3b51c58b0b65e92797a399\">بعد از هر تمدید، Nginx باید \u003Cstrong>reload\u003C/strong> شود تا فایل‌های جدید را بخواند.\u003C/li>\u003C/ol>\u003Chr>\u003Ch2>بخش ۲ پیش‌نیازها (بررسی های قبل از شروع برای رفع ارور های احتمالی)\u003C/h2>\u003Cpre>\u003Ccode class=\"language-plaintext\"># 1. DNS باید به همین سرور اشاره کند.\r\ndig +short example.com        # باید IP عمومی همین سرور را برگرداند\r\n\r\n# 2. فایروال باید پورت 80 (برای چالش) و 443 (برای HTTPS) را باز کند\r\nsudo ufw allow 'Nginx Full'\r\n# درصورت فعال بودن ufw  این دسترسی باید داده شود\r\n\r\n# 3. نصب Certbot از طریق snap (روش رسمی؛ دلیلش پایین بلوک آمده)\r\n#    در مسیر دستی به افزونه nginx نیازی نداریم، ولی پکیج snap به هر حال همراهش است\r\nsudo apt remove certbot   # فقط اگر قبلاً نسخه‌ی apt را نصب کرده بودید\r\nsudo apt install -y snapd\r\nsudo snap install core &amp;&amp; sudo snap refresh core\r\nsudo snap install --classic certbot\r\nsudo ln -s /snap/bin/certbot /usr/bin/certbot   # تا certbot مستقیم از PATH اجرا شود\r\n\r\n# 4. ببینید کدام افزونه‌ها را دارید (nginx هم از قبل همراه پکیج است؛ فعلاً کاری با آن نداریم)\r\ncertbot plugins\r\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"language-plaintext\">- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n* apache\r\n* manual\r\n* nginx\r\n* null\r\n* standalone\r\n* webroot\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\u003C/code>\u003C/pre>\u003Cp>چرا snap و نه apt؟\u003C/p>\u003Cp>نسخه‌ای که در مخازن apt اوبونتو (۲۰.۰۴ به بعد) قرار دارد معمولاً چند فصل از Certbot رسمی عقب است و ممکن است با تغییرات پروتکل ACME یا کتابخانه‌های پایتونِ Let's Encrypt ناسازگار شود. پیشنهاد رسمی خود Certbot هم امروز نصب از طریق snap است؛ به همین دلیل در کل این مقاله از نسخه‌ی snap استفاده می‌کنیم. افزونه‌های nginx و apache هم از قبل داخل همین پکیج هستند و نصب جداگانه نمی‌خواهند.\u003C/p>\u003Chr>\u003Ch2>بخش ۳ گرفتن گواهی با Certbot خام (بدون افزونه)\u003C/h2>\u003Ch3>روش \u003Ccode>standalone\u003C/code>\u003C/h3>\u003Cp>روش \u003Ccode>standalone\u003C/code> یعنی Certbot موقتاً \u003Cstrong>وب‌سرور کوچک خودش را روی پورت 80\u003C/strong> بالا می‌آورد تا به چالش پاسخ دهد. هیچ کانفیگ Nginxای لازم ندارد اما پورت 80 باید آزاد باشد، پس Nginx برای حدود ده ثانیه متوقف می‌شود:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo systemctl stop nginx\r\nsudo certbot certonly --standalone -d example.com\r\n\u003C/code>\u003C/pre>\u003Cul>\u003Cli data-list-item-id=\"e9a5968a30a3112590fec932785b5a631\">\u003Ccode>certonly\u003C/code> — گواهی را بگیر اما \u003Cstrong>هیچ‌جا نصبش نکن\u003C/strong>. این فلگ، قلب مسیر دستی ماست.\u003C/li>\u003Cli data-list-item-id=\"e00950c4fedbac5ac656916a0e563867f\">\u003Ccode>--standalone\u003C/code> — از وب‌سرور موقت داخلی برای چالش استفاده کن.\u003C/li>\u003Cli data-list-item-id=\"ed11c8b427a36d04eefb3a358c765cbf2\">\u003Ccode>-d\u003C/code> — دامنه‌ای که گواهی برای آن صادر می‌شود. برای چند نام روی یک گواهی، آن را تکرار کنید.\u003C/li>\u003C/ul>\u003Cp>در اولین اجرا، Certbot ایمیل (برای هشدارهای انقضا) و پذیرش قوانین را می‌خواهد. خروجی موفق چنین چیزی است:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">Successfully received certificate.\r\nCertificate is saved at: /etc/letsencrypt/live/example.com/fullchain.pem\r\nKey is saved at:         /etc/letsencrypt/live/example.com/privkey.pem\r\nThis certificate expires on 2026-11-13.\r\n\u003C/code>\u003C/pre>\u003Ch3>حالا نگاهی دقیق‌تر به آنچه اتفاق افتاده بیندازیم\u003C/h3>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo ls -l /etc/letsencrypt/live/example.com/\r\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"language-plaintext\">cert.pem  -&gt; ../../archive/example.com/cert1.pem\r\nchain.pem -&gt; ../../archive/example.com/chain1.pem\r\nfullchain.pem -&gt; ../../archive/example.com/fullchain1.pem\r\nprivkey.pem -&gt; ../../archive/example.com/privkey1.pem\r\n\u003C/code>\u003C/pre>\u003Cfigure class=\"table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>فایل\u003C/th>\u003Cth>محتوا\u003C/th>\u003Cth>کاربرد\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>privkey.pem\u003C/code>\u003C/td>\u003Ctd>\u003Cstrong>کلید خصوصی\u003C/strong> شما هرگز با کسی به اشتراک نگذارید\u003C/td>\u003Ctd>\u003Ccode>ssl_certificate_key\u003C/code>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>cert.pem\u003C/code>\u003C/td>\u003Ctd>فقط گواهی شما\u003C/td>\u003Ctd>به‌ندرت مستقیم استفاده می‌شود\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>chain.pem\u003C/code>\u003C/td>\u003Ctd>گواهی‌های واسط CA\u003C/td>\u003Ctd>به‌ندرت مستقیم استفاده می‌شود\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>fullchain.pem\u003C/code>\u003C/td>\u003Ctd>گواهی شما + زنجیره، کنار هم\u003C/td>\u003Ctd>\u003Ccode>ssl_certificate\u003C/code> ← همین را می‌خواهید\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/figure>\u003Cp>همیشه به سیم‌لینک‌ها ارجاع بدهید، هرگز فایل‌ها را کپی نکنید\u003C/p>\u003Cp>هر تمدید، فایل‌های تازه‌ای در \u003Ccode>archive/\u003C/code> می‌سازد و سیم‌لینک‌های \u003Ccode>live/\u003C/code> به آن‌ها اشاره میکنند. اگر کانفیگ Nginx شما به \u003Ccode>live/...\u003C/code> اشاره کند، تمدیدها کار می‌کنند. اگر فایل‌ها را جای دیگری کپی کنید، سایتتان در روز تمدید دچار مشکل میشود.\u003C/p>\u003Cp>داخل خود گواهی را ببینید:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem -noout -subject -issuer -dates\r\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"language-plaintext\">subject=CN = example.com\r\nissuer=C = US, O = Let's Encrypt, CN = R11\r\nnotBefore=Aug 15 10:00:00 2026 GMT\r\nnotAfter=Nov 13 10:00:00 2026 GMT     &lt;- ۹۰ روز بعد از صدور\r\n\u003C/code>\u003C/pre>\u003Cp>و ببینید Certbot چه چیزی را برایتان پیگیری می‌کند:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo certbot certificates                          # همه گواهی‌ها، دامنه‌ها و تاریخ انقضا\r\ncat /etc/letsencrypt/renewal/example.com.conf      # تنظیمات تمدید، از جمله Authenticator استفاده‌شده\r\n\u003C/code>\u003C/pre>\u003Cp>فایل کانفیگ تمدید (renewal conf) مهم است: Certbot به خاطر می‌سپارد که هر گواهی را \u003Ci>چگونه\u003C/i> گرفته‌اید و هنگام تمدید همان روش را تکرار می‌کند.\u003C/p>\u003Chr>\u003Ch2>بخش ۴ وصل کردن گواهی به Nginx به صورت دستی\u003C/h2>\u003Cp>تمام تنظیمات ssl مورد نیاز برای nginx در دو بلاک server خلاصه می‌شود. فایل \u003Ccode>/etc/nginx/sites-available/example.com\u003C/code> را بسازید:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\"># Port 80: redirect everything to HTTPS\r\nserver {\r\n    listen 80;\r\n    server_name example.com;\r\n\r\n    location / {\r\n        return 301 https://$host$request_uri;\r\n    }\r\n}\r\n\r\n# Port 443: the real site\r\nserver {\r\n    listen 443 ssl;\r\n    server_name example.com;\r\n\r\n    # --- the only two lines that make it \"SSL\" ---\r\n    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;\r\n    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;\r\n\r\n    # --- برخی تنظیمات پیشنهادی برای ssl (توضیحات بیشتر https://ssl-config.mozilla.org) ---\r\n    ssl_protocols TLSv1.2 TLSv1.3;\r\n    ssl_session_cache shared:SSL:10m;\r\n    ssl_session_timeout 1d;\r\n\r\n    root /var/www/example.com;\r\n    index index.html;\r\n\r\n    location / {\r\n        try_files $uri $uri/ =404;\r\n    }\r\n}\r\n\u003C/code>\u003C/pre>\u003Cp>همه ماجرا همین است یک بلاک server معمولی به‌اضافه \u003Ccode>listen 443 ssl\u003C/code> و دو مسیر فایل.\u003Cbr>برای بررسی:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">curl -I http://example.com     # انتظار: HTTP/1.1 301 Moved Permanently -&gt; https://\r\ncurl -I https://example.com    # انتظار: HTTP/2 200\r\n\u003C/code>\u003C/pre>\u003Cp>سایت را در مرورگر باز کنید باید آیکون قفل را ببینید. برای ارزیابی کامل، تست رایگان \u003Ca href=\"https://www.ssllabs.com/ssltest/\">SSL Labs\u003C/a> را اجرا کنید؛ این کانفیگ نمره \u003Cstrong>A\u003C/strong> می‌گیرد.\u003C/p>\u003Chr>\u003Ch2>بخش ۵ تمدید: بخشی که آدم‌ها را غافل‌گیر می‌کند\u003C/h2>\u003Cp>گواهی‌های Let's Encrypt عمداً ۹۰ روزه‌اند; عمر کوتاه، شما را مجبور به خودکارسازی می‌کند. هنگام نصب Certbot، یک تایمر systemd ثبت شده که روزی دو بار اجرا می‌شود و هر گواهی‌ای که کمتر از ۳۰ روز به انقضایش مانده را تمدید می‌کند:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">systemctl list-timers | grep certbot     # تایمر تمدید وجود دارد\r\nsudo certbot renew --dry-run             # یک مرتبه فرایند تمدید رو شبیه سازی کنید\r\n\u003C/code>\u003C/pre>\u003Cp>اگر dry run موفق بود، ۹۰ درصد راه را رفته‌اید. اما \u003Cstrong>دو دام\u003C/strong> وجود دارد که مقالات مبتدی معمولاً از روی آن‌ها رد می‌شوند, و چون روش \u003Ccode>standalone\u003C/code> را انتخاب کرده‌ایم، هر دو شامل حال ما می‌شود.\u003C/p>\u003Ch3>دام اول: Nginx بعد از تمدید خودش reload نمی‌شود\u003C/h3>\u003Cp>بعد از یک تمدید واقعی، فایل‌های جدید روی دیسک هستند، اما Nginx تا وقتی reload نشود، \u003Cstrong>گواهی قدیمی را از حافظه\u003C/strong> سرو می‌کند. راه‌حل: یک \u003Cstrong>Deploy Hook\u003C/strong> هر اسکریپت اجراشدنی در این پوشه، بعد از هر تمدید موفق به‌صورت خودکار اجرا می‌شود:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo mkdir -p /etc/letsencrypt/renewal-hooks/deploy\r\n\r\nsudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh &gt; /dev/null &lt;&lt;'EOF'\r\n#!/bin/bash\r\nnginx -t &amp;&amp; systemctl reload nginx\r\nEOF\r\n\r\nsudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh\r\n\u003C/code>\u003C/pre>\u003Ch3>دام دوم: تمدید با \u003Ccode>standalone\u003C/code> به پورت 80 آزاد نیاز دارد\u003C/h3>\u003Cp>کانفیگ تمدید را در بخش ۳ به خاطر دارید؟ تمدید، \u003Ci>همان\u003C/i> Authenticator اولیه را تکرار می‌کند. \u003Ccode>standalone\u003C/code> باید پورت 80 را بگیرد اما حالا Nginx صاحبش است. بدون مداخله، تمدیدها شکست می‌خورند. راه‌حل: هوک‌های pre/post که هنگام تمدید برای چند ثانیه Nginx را متوقف و دوباره بالا می‌آورند:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo certbot renew --dry-run \\\r\n  --pre-hook \"systemctl stop nginx\" \\\r\n  --post-hook \"systemctl start nginx\"\r\n\u003C/code>\u003C/pre>\u003Cp>هوک‌هایی که یک بار پاس داده شوند، در کانفیگ تمدید ذخیره می‌شوند؛ پس همین dry run آن‌ها را برای همیشه ثبت می‌کند. قطعی چندثانیه‌ای، دو بار در سال، در ساعات تصادفی برای بیشتر سایت‌ها قابل‌قبول است.\u003C/p>\u003Cp>تمدید بدون حتی یک ثانیه قطعی می‌خواهید؟\u003C/p>\u003Cp>از Authenticator به نام \u003Ccode>webroot\u003C/code> استفاده کنید ضمیمه A را ببینید. این روش استاندارد production برای مسیر دستی است و برای کارهای جدی، انتخاب من هم همین است.\u003C/p>\u003Chr>\u003Ch2>بخش ۶. انجام بدون دردسر همه چیز با یک دستور\u003C/h2>\u003Cp>حالا که همه‌کار را دستی انجام داده‌اید، با اتوماسیون آشنا شوید. چون certbot را از snap نصب کرده‌ایم، افزونه‌ی nginx از قبل همراهش است و چیزی برای نصب نداریم — فقط همان تک‌دستور معروف را اجرا کنید:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo certbot --nginx -d example.com\r\n\u003C/code>\u003C/pre>\u003Cp>بعدش کانفیگ را باز کنید. می‌بینید \u003Cstrong>دقیقاً همان کاری\u003C/strong> را کرده که شما کردید، با این تفاوت که هر تغییر با \u003Ccode># managed by Certbot\u003C/code> علامت خورده است. این خروجی واقعی از یک سرور production است:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">server {\r\n    server_name example.com;\r\n    root /var/www/example.com;\r\n    index index.html;\r\n\r\n    location / {\r\n        try_files $uri $uri/ =404;\r\n    }\r\n\r\n    listen 443 ssl; # managed by Certbot\r\n    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot\r\n    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot\r\n    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot\r\n    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot\r\n}\r\n\r\nserver {\r\n    if ($host = example.com) {\r\n        return 301 https://$host$request_uri;\r\n    } # managed by Certbot\r\n\r\n    listen 80;\r\n    server_name example.com;\r\n    return 404; # managed by Certbot\r\n}\r\n\u003C/code>\u003C/pre>\u003Cp>هدیه رایگان افزونه\u003C/p>\u003Cp>افزونه دو فایل کارشناسی‌شده روی سیستم شما می‌گذارد: \u003Ccode>/etc/letsencrypt/options-ssl-nginx.conf\u003C/code> (پروتکل‌های TLS مدرن، سایفرها، تنظیمات سشن، OCSP Stapling و HSTS) و \u003Ccode>/etc/letsencrypt/ssl-dhparams.pem\u003C/code> (فایل پارامتر دیفی-هلمن). آن‌ها را باز کنید و بخوانید از بهترین منابع برای یادگیری تنظیمات TLS در production هستند و فایل اول را حتی می‌توانید در کانفیگ‌های دست‌نویس خودتان \u003Ccode>include\u003C/code> کنید.\u003C/p>\u003Cp>\u003Cstrong>قاعده کلی:\u003C/strong> با \u003Ccode>certonly\u003C/code> یاد بگیرید، با \u003Ccode>--nginx\u003C/code> دیپلوی کنید. مسیر دستی وقتی ارزشمند می‌شود که افزونه نتواند کانفیگ شما را بفهمد, کانفیگ‌های بسیار سفارشی، ساختارهای غیراستاندارد، کانتینرها; و برای اینکه بفهمید دارید چه چیزی را خودکار می‌کنید.\u003C/p>\u003Chr>\u003Ch2>ضمیمه A روش Webroot: مسیر دستی بدون قطعی\u003C/h2>\u003Cp>ایده ساده است: به‌جای اینکه Certbot وب‌سرور خودش را اجرا کند، توکن چالش را داخل یک پوشه می‌نویسد و \u003Cstrong>Nginx در حال اجرای شما\u003C/strong> آن را سرو می‌کند.\u003C/p>\u003Cp>این بلاک location را به بلاک server پورت 80 اضافه کنید:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">server {\r\n    listen 80;\r\n    server_name example.com;\r\n\r\n    # Let's Encrypt challenges are served from a real directory\r\n    location /.well-known/acme-challenge/ {\r\n        root /var/www/letsencrypt;\r\n    }\r\n\r\n    location / {\r\n        return 301 https://$host$request_uri;\r\n    }\r\n}\r\n\u003C/code>\u003C/pre>\u003Cp>سپس:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo mkdir -p /var/www/letsencrypt\r\nsudo nginx -t &amp;&amp; sudo systemctl reload nginx\r\n\r\n# Sanity check before asking Let's Encrypt (catches 90% of failures):\r\nsudo mkdir -p /var/www/letsencrypt/.well-known/acme-challenge\r\necho \"it-works\" | sudo tee /var/www/letsencrypt/.well-known/acme-challenge/test.txt\r\ncurl http://example.com/.well-known/acme-challenge/test.txt    # must print: it-works\r\n\r\nsudo certbot certonly --webroot -w /var/www/letsencrypt -d example.com\r\n\u003C/code>\u003C/pre>\u003Cul>\u003Cli data-list-item-id=\"ecbb95c578715552c8bd6822c529cbf41\">\u003Ccode>-w /var/www/letsencrypt\u003C/code> \u003Cstrong>مسیر Webroot\u003C/strong> که توکن‌ها در آن نوشته می‌شوند.\u003C/li>\u003C/ul>\u003Cp>از این به بعد تمدیدها برای همیشه با \u003Cstrong>صفر ثانیه قطعی\u003C/strong> و بدون هوک stop/start کار می‌کنند چون Nginx همیشه بالا است تا چالش را سرو کند. یک پوشه webroot مشترک می‌تواند برای همه دامنه‌های شما استفاده شود.\u003C/p>\u003Chr>\u003Ch2>ضمیمه B برگه تقلب عیب‌یابی\u003C/h2>\u003Cfigure class=\"table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>علامت\u003C/th>\u003Cth>محتمل‌ترین علت\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>no valid A records found\u003C/code>\u003C/td>\u003Ctd>یعنی DNS (هنوز) به این سرور اشاره نمی‌کند \u003Ccode>dig +short\u003C/code> را بررسی کنید\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>Timeout یا Connection refused هنگام چالش\u003C/td>\u003Ctd>پورت 80 توسط فایروال یا security group بسته است؛ یا سرویس دیگری صاحب پورت 80 است\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>The requested nginx plugin does not appear to be installed\u003C/code>\u003C/td>\u003Ctd>احتمالاً certbotِ قدیمیِ apt روی سیستم اجرا شده؛ با \u003Ccode>sudo apt remove certbot\u003C/code> حذفش کنید و از نسخه‌ی snap استفاده کنید (افزونه‌ی nginx داخل خود پکیج است)\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>too many failed authorizations\u003C/code>\u003C/td>\u003Ctd>به Rate Limit لتس‌انکریپت خورده‌اید یک ساعت صبر کنید؛ همیشه اول با \u003Ccode>--dry-run\u003C/code> تست کنید\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>قفل نمایش داده می‌شود اما سایت به‌هم‌ریخته است\u003C/td>\u003Ctd>Mixed Content: صفحه ریسورس‌هایی با \u003Ccode>http://\u003C/code> لود می‌کند لینک‌ها را به \u003Ccode>https://\u003C/code> تغییر دهید\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>بعد از تمدید، گواهی قدیمی سرو می‌شود\u003C/td>\u003Ctd>یعنی Nginx ریلود نشده; بخش ۵، دام اول\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>صدور اولیه کار کرد ولی تمدید شکست خورد\u003C/td>\u003Ctd>تداخل پورت در \u003Ccode>standalone\u003C/code> بخش ۵، دام دوم\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/figure>\u003Cp>لاگ دیباگ همیشه در \u003Ccode>/var/log/letsencrypt/letsencrypt.log\u003C/code> است.\u003C/p>\u003Chr>\u003Ch2>قدم‌های بعدی\u003C/h2>\u003Cul>\u003Cli data-list-item-id=\"e4f1501bf5f31732862fad7a2d2895412\">\u003Cstrong>چند دامنه روی یک گواهی (SAN):\u003C/strong> فقط فلگ را تکرار کنید \u003Ccode>certbot --nginx -d example.com -d www.example.com -d api.example.com\u003C/code>.\u003C/li>\u003Cli data-list-item-id=\"e69e3fb1249a82fdc5d49b7c0d53d8c54\">\u003Cstrong>ابزارهای جایگزین:\u003C/strong> وب‌سرور \u003Ca href=\"https://caddyserver.com/\">Caddy\u003C/a> گواهی‌ها را کاملاً خودکار و بدون هیچ ابزار اضافه‌ای می‌گیرد و تمدید می‌کند.\u003C/li>\u003C/ul>\u003Chr>\u003Ch2>جمع‌بندی\u003C/h2>\u003Cp>حالا چرخه کامل را می‌دانید: یک CA باید مالکیت دامنه را با چالش ACME بررسی کند؛ Certbot این گفت‌وگو را خودکار می‌کند و چهار فایل PEM را در \u003Ccode>/etc/letsencrypt/live/\u003C/code> می‌گذارد؛ «فعال‌کردن SSL» در Nginx فقط یک \u003Ccode>listen 443 ssl\u003C/code> به‌اضافه دو مسیر فایل است؛ و تمدید یعنی یک تایمر به‌علاوه یک هوک reload.\u003C/p>\u003Cp>&nbsp;\u003C/p>","devops","دواپس","https://api.dornadevops.com/media/articles/category/images/devops.png",{"name":167,"avatar":8,"firstName":8,"lastName":8},"شهیار کمالی",20,"https://api.dornadevops.com/media/articles/images/ChatGPT_Image_Aug_18_2026_05_17_10_AM.png",[171,172,173],"DevOps","SSL","nginx",[175,176,178],{"name":164,"name_en":171},{"name":177,"name_en":172},"گواهی SSL",{"name":173,"name_en":173},[180,189,213],{"id":5,"name":6,"description":7,"image":8,"slug":9,"service_groups":181,"key":29,"title":6,"services":184},[182,183],{"id":12,"name":13,"name_en":14,"image":15,"description":16,"slug":14,"headline":17,"tagline":18,"hidden":19,"group_type":20,"sort_order":21,"category":5},{"id":5,"name":23,"name_en":9,"image":24,"description":25,"slug":9,"headline":26,"tagline":27,"hidden":19,"group_type":20,"sort_order":28,"category":5},[185,187],{"id":12,"name":13,"name_en":14,"image":32,"description":16,"slug":14,"headline":17,"tagline":18,"hidden":19,"group_type":20,"sort_order":21,"category":5,"services":186,"serviceCategoryKey":29,"serviceCategoryImage":8},[],{"id":5,"name":23,"name_en":9,"image":35,"description":25,"slug":9,"headline":26,"tagline":27,"hidden":19,"group_type":20,"sort_order":28,"category":5,"services":188,"serviceCategoryKey":29,"serviceCategoryImage":8},[],{"id":38,"name":39,"description":40,"image":8,"slug":41,"service_groups":190,"key":106,"title":39,"services":198},[191,192,193,194,195,196,197],{"id":38,"name":44,"name_en":45,"image":46,"description":47,"slug":45,"headline":48,"tagline":49,"hidden":19,"group_type":50,"sort_order":51,"category":38},{"id":53,"name":54,"name_en":55,"image":56,"description":57,"slug":55,"headline":58,"tagline":59,"hidden":19,"group_type":20,"sort_order":60,"category":38},{"id":62,"name":63,"name_en":64,"image":65,"description":66,"slug":64,"headline":67,"tagline":68,"hidden":19,"group_type":20,"sort_order":69,"category":38},{"id":71,"name":72,"name_en":73,"image":74,"description":75,"slug":73,"headline":76,"tagline":77,"hidden":19,"group_type":20,"sort_order":78,"category":38},{"id":80,"name":81,"name_en":82,"image":83,"description":84,"slug":82,"headline":85,"tagline":86,"hidden":19,"group_type":20,"sort_order":87,"category":38},{"id":89,"name":90,"name_en":91,"image":92,"description":93,"slug":91,"headline":94,"tagline":95,"hidden":19,"group_type":20,"sort_order":96,"category":38},{"id":98,"name":99,"name_en":100,"image":101,"description":102,"slug":100,"headline":103,"tagline":104,"hidden":19,"group_type":20,"sort_order":105,"category":38},[199,201,203,205,207,209,211],{"id":38,"name":44,"name_en":45,"image":109,"description":47,"slug":45,"headline":48,"tagline":49,"hidden":19,"group_type":50,"sort_order":51,"category":38,"services":200,"serviceCategoryKey":106,"serviceCategoryImage":8},[],{"id":53,"name":54,"name_en":55,"image":112,"description":57,"slug":55,"headline":58,"tagline":59,"hidden":19,"group_type":20,"sort_order":60,"category":38,"services":202,"serviceCategoryKey":106,"serviceCategoryImage":8},[],{"id":62,"name":63,"name_en":64,"image":115,"description":66,"slug":64,"headline":67,"tagline":68,"hidden":19,"group_type":20,"sort_order":69,"category":38,"services":204,"serviceCategoryKey":106,"serviceCategoryImage":8},[],{"id":71,"name":72,"name_en":73,"image":118,"description":75,"slug":73,"headline":76,"tagline":77,"hidden":19,"group_type":20,"sort_order":78,"category":38,"services":206,"serviceCategoryKey":106,"serviceCategoryImage":8},[],{"id":80,"name":81,"name_en":82,"image":121,"description":84,"slug":82,"headline":85,"tagline":86,"hidden":19,"group_type":20,"sort_order":87,"category":38,"services":208,"serviceCategoryKey":106,"serviceCategoryImage":8},[],{"id":89,"name":90,"name_en":91,"image":124,"description":93,"slug":91,"headline":94,"tagline":95,"hidden":19,"group_type":20,"sort_order":96,"category":38,"services":210,"serviceCategoryKey":106,"serviceCategoryImage":8},[],{"id":98,"name":99,"name_en":100,"image":127,"description":102,"slug":100,"headline":103,"tagline":104,"hidden":19,"group_type":20,"sort_order":105,"category":38,"services":212,"serviceCategoryKey":106,"serviceCategoryImage":8},[],{"id":89,"name":130,"description":131,"image":8,"slug":132,"service_groups":214,"key":132,"title":130,"services":217},[215,216],{"id":135,"name":136,"name_en":137,"image":138,"description":139,"slug":137,"headline":140,"tagline":141,"hidden":19,"group_type":20,"sort_order":142,"category":89},{"id":144,"name":145,"name_en":146,"image":147,"description":148,"slug":146,"headline":149,"tagline":150,"hidden":19,"group_type":20,"sort_order":151,"category":89},[218,220],{"id":135,"name":136,"name_en":137,"image":154,"description":139,"slug":137,"headline":140,"tagline":141,"hidden":19,"group_type":20,"sort_order":142,"category":89,"services":219,"serviceCategoryKey":132,"serviceCategoryImage":8},[],{"id":144,"name":145,"name_en":146,"image":157,"description":148,"slug":146,"headline":149,"tagline":150,"hidden":19,"group_type":20,"sort_order":151,"category":89,"services":221,"serviceCategoryKey":132,"serviceCategoryImage":8},[],{"articles":223,"count":225,"next":549,"previous":549},[224,236,246,252,261,274,285,297,307,317,329,339,350,360,369,381,393,405,414,423,432,441,449,458,469,477,486,494,503,511,522,531,540],{"id":225,"title":226,"slug":227,"excerpt":228,"content":228,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":229,"publishedAt":232,"readTime":135,"image":233,"tags":234,"tagsFa":235,"views":105},33,"راه‌اندازی رجیستری خصوصی داکر با Nexus Repository Manager","local-docker-registery-setup-on-nexus","وقتی یک تیم چند نفره روی چند پروژه کار می‌کنه، هر  docker pull یعنی دانلود مجدد از اینترنت: هم کند، هم مصرف پهنای باند، هم گیر کردن روی محدودیت‌های شبکه و rate limit داکرهاب. از طرف دیگه ایمیج‌هایی که خودمون می‌سازیم باید جایی نگه‌داری بشن که تحت کنترل ما باشه.\r\n\r\nدر این مقاله سه ریپوی داکر در نکسوس می‌سازیم و به هم وصل می‌کنیم:\r\n\r\n- یک proxy که واسط و کش داکرهاب می‌شه\r\n- یک hosted که رجیستری خصوصی ایمیج‌های خودمونه\r\n- یک group که هر دو رو زیر یک آدرس واحد جمع می‌کنه",{"name":167,"avatar":8,"firstName":230,"lastName":231},"شهیار","کمالی","1405-05-27","https://api.dornadevops.com/media/articles/images/B8-ESdR4WB-CTxJzTk1HInyVV9k-NwlpdjXXSRamUPh4twb2SQ.png",[],[],{"id":237,"title":238,"slug":239,"excerpt":240,"content":240,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":241,"publishedAt":232,"readTime":242,"image":243,"tags":244,"tagsFa":245,"views":105},32,"نحوه راه اندازی nexus repository manager","how-to-install-nexus-repository-manager","وقتی روی یک سرور چند تا پروژه داریم یا یک تیم چند نفره روی یک محصول کار می‌کنه، هر بار دانلود شدن پکیج‌ها و ایمیج‌ها از اینترنت هم وقت می‌گیره هم پهنای باند مصرف می‌کنه؛ بعضی وقت‌ها هم به خاطر محدودیت‌های شبکه یا تحریم‌ها اصلاً به رجیستری‌های اصلی مثل Docker Hub دسترسی نداریم. برای حل این مشکل، بهترین گزینه راه‌اندازی یک ریپازیتوری منیجر داخلیه؛ سیستمی که هم می‌تونه واسط بین ما و رجیستری‌های عمومی باشه (پروکسی و کش) و هم ریپوی خصوصی خودمون برای ایمیج‌ها و پکیج‌هایی باشه که خودمون ساختیم.\r\n\r\nدر این مقاله قدم به قدم Nexus Repository Manager رو روی یک سرور اوبونتو راه‌اندازی می‌کنیم؛ از استخراج فایل نصب و ساخت کاربر اختصاصی و سرویس systemd گرفته تا اولین ورود به رابط وب، گرفتن پسورد ادمین و آشنایی با محیط نکوس رو باهم پیش میبریم",{"name":167,"avatar":8,"firstName":230,"lastName":231},6,"https://api.dornadevops.com/media/articles/images/ChatGPT_Image_Aug_18_2026_04_59_49_AM.png",[],[],{"id":247,"title":160,"slug":248,"excerpt":161,"content":161,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":249,"publishedAt":232,"readTime":168,"image":169,"tags":250,"tagsFa":251,"views":105},31,"how-to-enable-https-with-nginx",{"name":167,"avatar":8,"firstName":230,"lastName":231},[],[],{"id":253,"title":254,"slug":255,"excerpt":256,"content":256,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":257,"publishedAt":232,"readTime":53,"image":258,"tags":259,"tagsFa":260,"views":105},30,"راه اندازی ریورس پروکسی در nginx","reverse-proxy-nginx-setup","فرض کنید می‌خواهیم چندین سرویس مختلف را روی یک سرور واحد و از روی پورت عادی 80 سرو کنیم. مشکلی که به آن برمی‌خوریم این است که نمی‌شود چندین سرویس روی یک پورت یکسان پاسخگو باشند و قطعاً به ارور مشغول بودن آن پورت (port already in use) برمی‌خوریم. در این مقاله به آموزش نحوه استفاده از راه حل وب سرور nginx برای این مشکل به اسم reverse proxy میپردازیم و نگاهی کلی به اینکه چطور nginx رو کانفیگ کنیم و ساختارش چطوریه میندازیم",{"name":167,"avatar":8,"firstName":230,"lastName":231},"https://api.dornadevops.com/media/articles/images/ChatGPT_Image_Aug_18_2026_05_05_00_AM.png",[],[],{"id":262,"title":263,"slug":264,"excerpt":265,"content":265,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":266,"publishedAt":270,"readTime":168,"image":271,"tags":272,"tagsFa":273,"views":105},29,"طراحی سیستم‌های Highly Available چیست؟ راهنمای کامل معماری‌های در دسترس‌پذیر","highly-available-system-design-guide-2026","طراحی سیستم‌های Highly Available یعنی ساخت معماری‌هایی که در برابر خرابی‌های روزمره، outage و failover مقاوم باشند. در این مقاله HA را عمیق بررسی می‌کنیم.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"الیاس پوررجب","الیاس","پوررجب","1405-02-26","https://api.dornadevops.com/media/articles/images/highly-available-system-design-2026.jpg.png",[],[],{"id":275,"title":276,"slug":277,"excerpt":278,"content":278,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":279,"publishedAt":280,"readTime":281,"image":282,"tags":283,"tagsFa":284,"views":105},28,"SRE چیست؟ راهنمای کامل Site Reliability Engineering در سیستم‌های مدرن","sre-site-reliability-engineering-guide-2026","SRE یا Site Reliability Engineering رویکردی مهندسی برای ساخت و نگهداری سیستم‌های قابل‌اعتماد، مقیاس‌پذیر و پایدار است. در این مقاله SRE را کامل بررسی می‌کنیم.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-02-25",18,"https://api.dornadevops.com/media/articles/images/sre-site-reliability-engineering-2026.jpg.png",[],[],{"id":286,"title":287,"slug":288,"excerpt":289,"content":289,"categoryId":71,"categorySlug":132,"categoryTitle":290,"categoryImage":291,"author":292,"publishedAt":280,"readTime":293,"image":294,"tags":295,"tagsFa":296,"views":105},27,"SLA چیست؟ راهنمای کامل Service Level Agreement در خدمات ابری","what-is-sla-cloud-service-level-agreement-2026","SLA یا Service Level Agreement قرارداد سطح خدمت در cloud است که uptime، service credit، scope و مسئولیت‌ها را مشخص می‌کند. در این مقاله SLA را کامل بررسی می‌کنیم.","امنیت","https://api.dornadevops.com/media/articles/category/images/security.jpeg",{"name":267,"avatar":8,"firstName":268,"lastName":269},15,"https://api.dornadevops.com/media/articles/images/sla-cloud-service-level-agreement-2026.jpg.png",[],[],{"id":298,"title":299,"slug":300,"excerpt":301,"content":301,"categoryId":71,"categorySlug":132,"categoryTitle":290,"categoryImage":291,"author":302,"publishedAt":303,"readTime":168,"image":304,"tags":305,"tagsFa":306,"views":105},26,"Network Firewall چیست؟ معرفی کامل فایروال شبکه و بهترین فایروال‌های جهان در ۲۰۲۶","what-is-network-firewall-best-firewalls-2026","Network Firewall لایه‌ای کلیدی برای کنترل ترافیک بین شبکه‌های قابل‌اعتماد و غیرقابل‌اعتماد است. در این مقاله، فایروال شبکه را عمیق بررسی می‌کنیم و بهترین گزینه‌های جهان را معرفی می‌کنیم.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-02-24","https://api.dornadevops.com/media/articles/images/network-firewall-best-firewalls-2026.jpg.png",[],[],{"id":308,"title":309,"slug":310,"excerpt":311,"content":311,"categoryId":71,"categorySlug":132,"categoryTitle":290,"categoryImage":291,"author":312,"publishedAt":303,"readTime":313,"image":314,"tags":315,"tagsFa":316,"views":105},25,"WAF چیست؟ معرفی کامل Web Application Firewall و بهترین WAFهای جهان","what-is-waf-best-waf-2026","WAF یا Web Application Firewall لایه‌ای امنیتی برای محافظت از وب‌اپلیکیشن‌ها در برابر حملات HTTP و HTTPS است. در این مقاله، WAF را کامل بررسی می‌کنیم و بهترین WAFهای جهان را معرفی می‌کنیم.",{"name":267,"avatar":8,"firstName":268,"lastName":269},17,"https://api.dornadevops.com/media/articles/images/what-is-waf-web-application-firewall-best-waf-2026.jpg.png",[],[],{"id":318,"title":319,"slug":320,"excerpt":321,"content":321,"categoryId":80,"categorySlug":322,"categoryTitle":323,"categoryImage":324,"author":325,"publishedAt":303,"readTime":135,"image":326,"tags":327,"tagsFa":328,"views":105},24,"گارد قرمز چیست؟ راهکار حرفه‌ای برای انسداد درخواست‌های خارجی وردپرس و افزایش سرعت پیشخوان","red-guard-wordpress-external-requests","افزونه گارد قرمز برای انسداد درخواست‌های خارجی وردپرس و افزایش سرعت پیشخوان سایت","wordpress","وردپرس","https://api.dornadevops.com/media/articles/category/images/wordpress.jpeg",{"name":267,"avatar":8,"firstName":268,"lastName":269},"https://api.dornadevops.com/media/articles/images/red-guard-wordpress-external-requests-2026.jpg.png",[],[],{"id":330,"title":331,"slug":332,"excerpt":333,"content":333,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":334,"publishedAt":303,"readTime":335,"image":336,"tags":337,"tagsFa":338,"views":105},23,"GitLab چیست؟ ستون فقرات DevOps و CI/CD مدرن برای تیم‌های ایرانی","gitlab-devops-ci-cd-platform-iran","GitLab یک پلتفرم کامل DevOps برای مدیریت repository، CI/CD، Container Registry و Platform Engineering است که با زیرساخت داخلی، سرعت و پایداری بیشتری برای تیم‌های ایرانی فراهم می‌کند.",{"name":267,"avatar":8,"firstName":268,"lastName":269},14,"https://api.dornadevops.com/media/articles/images/gitlab-devops-platform-cloudnative-ci-cd-iran.jpg.png",[],[],{"id":340,"title":341,"slug":342,"excerpt":343,"content":343,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":344,"publishedAt":345,"readTime":346,"image":347,"tags":348,"tagsFa":349,"views":105},22,"آینده DevOps در عصر هوش مصنوعی ۲۰۲۶","future-of-devops-ai-agentic-2026","آینده DevOps به سمت AI-Native Delivery، agentic workflows، observability هوشمند و عملیات نیمه‌خودمختار مبتنی بر AI و Platform Engineering حرکت می‌کند.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-02-22",16,"https://api.dornadevops.com/media/articles/images/future-devops-ai-agentic-cloud-native-2026.jpg.png",[],[],{"id":351,"title":352,"slug":353,"excerpt":354,"content":354,"categoryId":71,"categorySlug":132,"categoryTitle":290,"categoryImage":291,"author":355,"publishedAt":356,"readTime":281,"image":357,"tags":358,"tagsFa":359,"views":105},21,"OS Hardening چیست؟ راهنمای جامع امن‌سازی سیستم‌عامل در ۲۰۲۶","os-hardening-guide-2026","OS Hardening مجموعه‌ای از تکنیک‌های چندلایه برای کاهش سطح حمله، محدودسازی دسترسی‌ها و مقاوم‌سازی سیستم‌عامل در برابر نفوذ است.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-02-18","https://api.dornadevops.com/media/articles/images/os-hardening-linux-security-cloud-native-2026.jpg.png",[],[],{"id":168,"title":361,"slug":362,"excerpt":363,"content":363,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":364,"publishedAt":365,"readTime":340,"image":366,"tags":367,"tagsFa":368,"views":105},"Prometheus و Grafana چیست؟ راهنمای کامل Observability در Cloud-Native","prometheus-grafana-observability-cloud-native","Prometheus و Grafana ستون‌های اصلی Observability هستند که متریک‌ها را جمع می‌کنند، تحلیل می‌کنند و به داشبوردهای عملیاتی و هشدارهای قابل‌اقدام تبدیل می‌کنند.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-02-16","https://api.dornadevops.com/media/articles/images/prometheus-grafana-observability-cloud-native-2026.jpg.png",[],[],{"id":370,"title":371,"slug":372,"excerpt":373,"content":373,"categoryId":242,"categorySlug":374,"categoryTitle":375,"categoryImage":376,"author":377,"publishedAt":365,"readTime":168,"image":378,"tags":379,"tagsFa":380,"views":105},19,"cPanel چیست؟ راهنمای کامل مدیریت سرور و هاست","cpanel-server-hosting-management-guide","cPanel همه‌چیز مدیریت هاست و سرور لینوکسی را در یک داشبورد ساده و قدرتمند جمع می‌کند؛ از سایت و ایمیل تا امنیت و اتوماسیون.","cpanel","سیپنل","https://api.dornadevops.com/media/articles/category/images/cpanel.png",{"name":267,"avatar":8,"firstName":268,"lastName":269},"https://api.dornadevops.com/media/articles/images/cpanel-hosting-control-panel-dashboard-2026_vzAoNcZ.jpg.png",[],[],{"id":281,"title":382,"slug":383,"excerpt":384,"content":384,"categoryId":98,"categorySlug":385,"categoryTitle":386,"categoryImage":387,"author":388,"publishedAt":389,"readTime":313,"image":390,"tags":391,"tagsFa":392,"views":105},"DefectDojo چیست؟ راهنمای کامل مدیریت آسیب‌پذیری در DevSecOps","defectdojo-vulnerability-management-devsecops","DefectDojo گزارش‌های امنیتی پراکنده را به یک مرکز فرماندهی واحد تبدیل می‌کند تا آسیب‌پذیری‌ها سریع‌تر، دقیق‌تر و قابل‌ردیابی‌تر مدیریت شوند.","devsecops","DevSecOps","https://api.dornadevops.com/media/articles/category/images/devsecops.jpeg",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-02-13","https://api.dornadevops.com/media/articles/images/defectdojo-vulnerability-management-devsecops-2026.jpg.png",[],[],{"id":313,"title":394,"slug":395,"excerpt":396,"content":396,"categoryId":71,"categorySlug":132,"categoryTitle":290,"categoryImage":291,"author":397,"publishedAt":401,"readTime":5,"image":402,"tags":403,"tagsFa":404,"views":105},"آسیب‌پذیری بسیار مهم در cPanel – هشدار امنیتی درباره CVE‑2026‑41940","cpanel-cve-2026-41940-security-alert","با انتشار آسیب‌پذیری CVE‑2026‑41940 برای cPanel، سرورهایی که هنوز روی نسخه‌های قدیمی‌تر از آخرین نسخه امن هستند در معرض تهدید جدی قرار گرفته‌اند. این آسیب‌پذیری می‌تواند امنیت کامل سرویس را به خطر بیندازد.",{"name":398,"avatar":8,"firstName":399,"lastName":400},"درنا ادمین","درنا","ادمین","1405-02-12","https://api.dornadevops.com/media/articles/images/cpanel-vuln.png",[],[],{"id":346,"title":406,"slug":407,"excerpt":408,"content":408,"categoryId":98,"categorySlug":385,"categoryTitle":386,"categoryImage":387,"author":409,"publishedAt":410,"readTime":144,"image":411,"tags":412,"tagsFa":413,"views":105},"GitLeaks چیست؟ ابزار شناسایی Secrets در Git","what-is-gitleaks-sast-secret-detection","GitLeaks ابزار متن‌باز برای شناسایی رمزها و API Keyهای لو رفته در Git است که قبل از انتشار، جلوی نشت اطلاعات حساس را می‌گیرد.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-02-09","https://api.dornadevops.com/media/articles/images/gitleaks-git-secrets-scanner-security.jpg.png",[],[],{"id":293,"title":415,"slug":416,"excerpt":417,"content":417,"categoryId":98,"categorySlug":385,"categoryTitle":386,"categoryImage":387,"author":418,"publishedAt":419,"readTime":12,"image":420,"tags":421,"tagsFa":422,"views":105},"Semgrep چیست؟ ابزار سریع SAST برای امنیت کد و DevSecOps","semgrep-sast-devsecops","ابزار Semgrep با اسکن سریع کد، باگ‌ها، آسیب‌پذیری‌ها و secrets را قبل از اجرا پیدا می‌کند و امنیت را وارد جریان توسعه می‌کند.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-02-07","https://api.dornadevops.com/media/articles/images/semgrep-sast-code-security-devsecops.jpg.png",[],[],{"id":335,"title":424,"slug":425,"excerpt":426,"content":426,"categoryId":98,"categorySlug":385,"categoryTitle":386,"categoryImage":387,"author":427,"publishedAt":428,"readTime":168,"image":429,"tags":430,"tagsFa":431,"views":105},"DevSecOps در ۲۰۲۶؛ تزریق امنیت به CI/CD و کلود","devsecops-2026-security-in-ci-cd-cloud","چطور امنیت را از ابتدا وارد CI/CD و زیرساخت ابری کنیم بدون اینکه سرعت توسعه قربانی شود؟",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-02-02","https://api.dornadevops.com/media/articles/images/devsecops-security-ci-cd-cloud-2026_hnouteW.png",[],[],{"id":433,"title":434,"slug":435,"excerpt":436,"content":436,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":437,"publishedAt":428,"readTime":281,"image":438,"tags":439,"tagsFa":440,"views":105},13,"CI/CD در ۲۰۲۶؛ از صفر تا دیپلوی بدون قطعی","ci-cd-2026-zero-downtime-deployment","از پایه تا حرفه‌ای یاد بگیرید چطور بدون قطعی روی سرور ابری دیپلوی کنید.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"https://api.dornadevops.com/media/articles/images/ci-cd-zero-downtime-cloud-deployment.png",[],[],{"id":135,"title":442,"slug":443,"excerpt":444,"content":444,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":445,"publishedAt":428,"readTime":346,"image":446,"tags":447,"tagsFa":448,"views":105},"ابزارهای DevOps در ۲۰۲۶؛ معرفی کامل و کاربردی","devops-tools-2026-complete-guide","بهترین ابزارهای DevOps را بشناسید و بفهمید هرکدام دقیقاً کجا استفاده می‌شوند.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"https://api.dornadevops.com/media/articles/images/devops-tools-list-2026-cloud.png",[],[],{"id":144,"title":450,"slug":451,"excerpt":452,"content":452,"categoryId":53,"categorySlug":163,"categoryTitle":164,"categoryImage":165,"author":453,"publishedAt":454,"readTime":281,"image":455,"tags":456,"tagsFa":457,"views":105},"DevOps چیست؟ راهنمای کامل از صفر تا حرفه‌ای (۲۰۲۶)","what-is-devops-complete-guide-2026","از تعریف تا ابزارها و مسیر یادگیری DevOps را یک‌جا و حرفه‌ای یاد بگیرید.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-02-01","https://api.dornadevops.com/media/articles/images/what-is-devops-cloud-architecture-2026.png",[],[],{"id":12,"title":459,"slug":460,"excerpt":461,"content":461,"categoryId":62,"categorySlug":462,"categoryTitle":463,"categoryImage":464,"author":465,"publishedAt":454,"readTime":12,"image":466,"tags":467,"tagsFa":468,"views":105},"تغییر دامنه در DirectAdmin؛ سریع و بدون دردسر","change-domain-directadmin-guide","دامنه سایت را در DirectAdmin بدون خطا و از دست رفتن اطلاعات تغییر دهید.","directadmin","دایرکت ادمین","https://api.dornadevops.com/media/articles/category/images/directadmin.jpg",{"name":267,"avatar":8,"firstName":268,"lastName":269},"https://api.dornadevops.com/media/articles/images/directadmin-change-domain-tutorial.jpg",[],[],{"id":80,"title":470,"slug":471,"excerpt":472,"content":472,"categoryId":62,"categorySlug":462,"categoryTitle":463,"categoryImage":464,"author":473,"publishedAt":454,"readTime":12,"image":474,"tags":475,"tagsFa":476,"views":105},"نصب SSL رایگان در DirectAdmin؛ امن‌سازی فوری سایت","install-free-ssl-directadmin","در چند دقیقه SSL رایگان نصب کنید و امنیت سایت را تضمین کنید.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"https://api.dornadevops.com/media/articles/images/directadmin-free-ssl-install.jpg",[],[],{"id":71,"title":478,"slug":479,"excerpt":480,"content":480,"categoryId":62,"categorySlug":462,"categoryTitle":463,"categoryImage":464,"author":481,"publishedAt":482,"readTime":144,"image":483,"tags":484,"tagsFa":485,"views":105},"ساخت DNS اختصاصی برای دامنه؛ راهنمای کامل","create-custom-dns-domain-guide","یاد بگیرید DNS اختصاصی بسازید و کنترل کامل دامنه را در دست بگیرید.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-01-31","https://api.dornadevops.com/media/articles/images/custom-dns-setup-domain.jpg",[],[],{"id":98,"title":487,"slug":488,"excerpt":489,"content":489,"categoryId":62,"categorySlug":462,"categoryTitle":463,"categoryImage":464,"author":490,"publishedAt":482,"readTime":346,"image":491,"tags":492,"tagsFa":493,"views":105},"آموزش کامل و قدم‌ به‌ قدم بازگردانی بکاپ در دایرکت ادمین","restore-backup-directadmin-guide","چطور در کمترین زمان سایت را از بکاپ برگردانیم؟",{"name":267,"avatar":8,"firstName":268,"lastName":269},"https://api.dornadevops.com/media/articles/images/directadmin-backup-restore.jpg",[],[],{"id":242,"title":495,"slug":496,"excerpt":497,"content":497,"categoryId":62,"categorySlug":462,"categoryTitle":463,"categoryImage":464,"author":498,"publishedAt":499,"readTime":135,"image":500,"tags":501,"tagsFa":502,"views":105},"تغییر دامنه در وردپرس؛ قدم‌به‌قدم و بدون خطا","change-domain-wordpress-step-by-step","تغییر نام، بدون تغییر سرنوشت ، دامنه وردپرس را بدون خراب شدن سایت تغییر دهید.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-01-30","https://api.dornadevops.com/media/articles/images/wordpress-domain-change-guide.jpg",[],[],{"id":53,"title":504,"slug":505,"excerpt":506,"content":506,"categoryId":62,"categorySlug":462,"categoryTitle":463,"categoryImage":464,"author":507,"publishedAt":499,"readTime":135,"image":508,"tags":509,"tagsFa":510,"views":105},"بکاپ‌گیری حرفه‌ای در DirectAdmin (Admin Level)","directadmin-admin-backup-guide","چطور از کل سرور بکاپ بگیریم و در بحران نجاتش دهیم؟",{"name":267,"avatar":8,"firstName":268,"lastName":269},"https://api.dornadevops.com/media/articles/images/directadmin-admin-level-backup.jpg",[],[],{"id":62,"title":512,"slug":513,"excerpt":514,"content":514,"categoryId":5,"categorySlug":515,"categoryTitle":516,"categoryImage":517,"author":518,"publishedAt":499,"readTime":433,"image":519,"tags":520,"tagsFa":521,"views":105},"Portainer چیست؟ مدیریت حرفه‌ای Docker و Kubernetes","what-is-portainer-docker-management","Docker و Kubernetes را بدون دردسر و گرافیکی مدیریت کنید.","docker","داکر","https://api.dornadevops.com/media/articles/category/images/Screenshot_from_2026-03-06_15-05-14.png",{"name":267,"avatar":8,"firstName":268,"lastName":269},"https://api.dornadevops.com/media/articles/images/portainer-docker-kubernetes-ui.png",[],[],{"id":89,"title":523,"slug":524,"excerpt":525,"content":525,"categoryId":5,"categorySlug":515,"categoryTitle":516,"categoryImage":517,"author":526,"publishedAt":527,"readTime":12,"image":528,"tags":529,"tagsFa":530,"views":105},"۷ اشتباه مرگبار در Docker که باید همین امروز اصلاح کنید","docker-mistakes-developers","اشتباهاتی که پروژه‌ات را نابود می‌کنند و چطور ازشان جلوگیری کنی.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1405-01-29","https://api.dornadevops.com/media/articles/images/docker-common-mistakes.png",[],[],{"id":38,"title":532,"slug":533,"excerpt":534,"content":534,"categoryId":62,"categorySlug":462,"categoryTitle":463,"categoryImage":464,"author":535,"publishedAt":536,"readTime":12,"image":537,"tags":538,"tagsFa":539,"views":105},"بکاپ‌گیری در DirectAdmin؛ آموزش کامل و ساده(بیمه عمر سایت شما!)","directadmin-backup-complete-guide","با چند کلیک از سایتت بکاپ بگیر و خیالت را راحت کن.",{"name":267,"avatar":8,"firstName":268,"lastName":269},"1404-12-15","https://api.dornadevops.com/media/articles/images/directadmin-backup-guide.jpg",[],[],{"id":5,"title":541,"slug":542,"excerpt":543,"content":543,"categoryId":5,"categorySlug":515,"categoryTitle":516,"categoryImage":517,"author":544,"publishedAt":545,"readTime":5,"image":546,"tags":547,"tagsFa":548,"views":105},"نصب Docker بدون تحریم","install-docker-in-iran","نصب آفلاین Docker مخصوص سرورهای داخل ایران",{"name":398,"avatar":8,"firstName":399,"lastName":400},"1404-11-30","https://api.dornadevops.com/media/articles/images/install-docker-iran.png",[],[],null,1788244646057]