[{"data":1,"prerenderedAt":555},["ShallowReactive",2],{"header-service-categories":3,"footer-service-categories":159,"article-local-docker-registery-setup-on-nexus":202,"related-local-docker-registery-setup-on-nexus":228},[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",[],[160,169,193],{"id":5,"name":6,"description":7,"image":8,"slug":9,"service_groups":161,"key":29,"title":6,"services":164},[162,163],{"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},[165,167],{"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":166,"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":168,"serviceCategoryKey":29,"serviceCategoryImage":8},[],{"id":38,"name":39,"description":40,"image":8,"slug":41,"service_groups":170,"key":106,"title":39,"services":178},[171,172,173,174,175,176,177],{"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},[179,181,183,185,187,189,191],{"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":180,"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":182,"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":184,"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":186,"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":188,"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":190,"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":192,"serviceCategoryKey":106,"serviceCategoryImage":8},[],{"id":89,"name":130,"description":131,"image":8,"slug":132,"service_groups":194,"key":132,"title":130,"services":197},[195,196],{"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},[198,200],{"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":199,"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":201,"serviceCategoryKey":132,"serviceCategoryImage":8},[],{"id":-1,"title":203,"slug":8,"excerpt":204,"content":205,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":209,"publishedAt":8,"readTime":135,"image":211,"tags":212,"tagsFa":218,"views":105},"راه‌اندازی رجیستری خصوصی داکر با Nexus Repository Manager","وقتی یک تیم چند نفره روی چند پروژه کار می‌کنه، هر  docker pull یعنی دانلود مجدد از اینترنت: هم کند، هم مصرف پهنای باند، هم گیر کردن روی محدودیت‌های شبکه و rate limit داکرهاب. از طرف دیگه ایمیج‌هایی که خودمون می‌سازیم باید جایی نگه‌داری بشن که تحت کنترل ما باشه.\r\n\r\nدر این مقاله سه ریپوی داکر در نکسوس می‌سازیم و به هم وصل می‌کنیم:\r\n\r\n- یک proxy که واسط و کش داکرهاب می‌شه\r\n- یک hosted که رجیستری خصوصی ایمیج‌های خودمونه\r\n- یک group که هر دو رو زیر یک آدرس واحد جمع می‌کنه","\u003Cp>وقتی یک تیم چند نفره روی چند پروژه کار می‌کنه، هر \u003Ccode>docker pull\u003C/code> یعنی دانلود مجدد از اینترنت: هم کند، هم مصرف پهنای باند، هم گیر کردن روی محدودیت‌های شبکه و rate limit داکرهاب. از طرف دیگه ایمیج‌هایی که خودمون می‌سازیم باید جایی نگه‌داری بشن که تحت کنترل ما باشه.\u003C/p>\u003Cp>خب حالا میخوایم از نکسوس به عنوان \u003Cstrong>mirror رجیستری داکر\u003C/strong> استفاده کنیم. مثلا ریپوی پروکسی‌ای ساختیم به اسم \u003Ccode>arvan-miror\u003C/code> که به میرور لیارا وصل میشه. آدرسی که UI بهمون میده اینه:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">http://&lt;server-ip&gt;:8081/repository/arvan-mirror/\r\n\u003C/code>\u003C/pre>\u003Cp>اما اگر این آدرس رو جایی به داکر بدیم کار \u003Cstrong>نمی‌کنه\u003C/strong>! چرا؟ چون API رجیستری داکر نمی‌تونه روی یک مسیر زیرشاخه‌ای (path-based) سرو بشه؛ داکر همیشه منتظر API روی \u003Cstrong>root یک host:port\u003C/strong> هست.\u003Cbr>راه حل : باید نوع connector سرویس nexus رو از path based به other connectors و در نهایت یک پورت http (یا https) انتخاب کنیم\u003C/p>\u003Ch3>سه نوع ریپازیتوری در نکسوس\u003C/h3>\u003Cp>قبل از ادامه این سه نوع رو باید خوب بفهمیم:\u003C/p>\u003Cfigure class=\"table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Type\u003C/th>\u003Cth>وظیفه\u003C/th>\u003Cth>مثال\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Cstrong>proxy\u003C/strong>\u003C/td>\u003Ctd>واسط بین ما و یک رجیستری remote؛ اولین درخواست رو از اینترنت میگیره و روی سرور کش می‌کنه؛ درخواست‌های بعدی از کش جواب داده میشن\u003C/td>\u003Ctd>پروکسی Docker Hub\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Cstrong>hosted\u003C/strong>\u003C/td>\u003Ctd>ریپوی خصوصی خودمون؛ ایمیج‌هایی که خودمون build کردیم رو اینجا push می‌کنیم\u003C/td>\u003Ctd>ایمیج‌های داخلی تیم\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Cstrong>group\u003C/strong>\u003C/td>\u003Ctd>یک URL واحد که چند ریپوی دیگه (proxy و hosted) رو کنار هم قرار میده؛ به ترتیب چک می‌کنه و از اولین منبعی که آرتیفکت رو داشته جواب میده\u003C/td>\u003Ctd>یک پورت برای همه چیز\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/figure>\u003Cfigure class=\"image\">\u003Cimg style=\"aspect-ratio:1774/887;\" src=\"https://api.dornadevops.com/media/articles/posts/docker-nexus-article-image1_H3qWZvk.png\" width=\"1774\" height=\"887\">\u003C/figure>\u003Cp>ترتیب اعضا در group مهمه\u003C/p>\u003Cp>اعضای group به ترتیب اولویت چک میشن؛ همیشه hosted رو بالاتر از proxy بذارید تا ایمیج‌های داخلی خودتون اولویت داشته باشن. ضمنا group خودش چیزی ذخیره نمی‌کنه؛ فقط یک روتر هوشمنده.\u003C/p>\u003Cp>&nbsp;\u003C/p>\u003Ch3>ساخت ریپوی proxy (کش داکرهاب)\u003C/h3>\u003Cp>از \u003Ccode>settings → Repository → Repositories → Create repository\u003C/code> نوع \u003Cstrong>docker (proxy)\u003C/strong> رو انتخاب کنید.\u003C/p>\u003Cfigure class=\"image\">\u003Cimg style=\"aspect-ratio:1919/1002;\" src=\"https://api.dornadevops.com/media/articles/posts/neuxs-docker-image2_ZvYmMLa.png\" width=\"1919\" height=\"1002\">\u003C/figure>\u003Cp>\u003Cstrong>Name:\u003C/strong> \u003Ccode>docker-proxy\u003C/code>\u003C/p>\u003Cp>فیلد \u003Cstrong>Repository Connectors:\u003C/strong> ابتدا other connectors رو انتخاب کنید بعد تیک \u003Ccode>HTTP\u003C/code> رو بزنید و پورت \u003Ccode>8082\u003C/code> رو وارد کنید. این پورت آدرس رجیستری این ریپو می‌شه.\u003C/p>\u003Cp>فیلد \u003Cstrong>Allow anonymous docker pull:\u003C/strong> اگر می‌خواید کلاینت‌ها بدون \u003Ccode>docker login\u003C/code> بتونن pull کنن، تیکش رو بزنید.\u003C/p>\u003Cp>\u003Cstrong>Remote storage:\u003C/strong> (به عنوان مثال مخزن اروان رو استفاده میکنیم)\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">https://docker.arvancloud.ir\r\n\u003C/code>\u003C/pre>\u003Cp>فیلد \u003Cstrong>Docker Index:\u003C/strong> گزینه‌ی Use proxy registry رو انتخاب کنید. این تنظیم مسئول جست‌وجوی ایمیج‌هاست و اگر برای پروکسی داکرهاب روی \u003Ccode>Custom\u003C/code> بمونه، بعضی pull ها با خطاهای گمراه‌کننده می‌شکنن. برای پروکسی رجیستری‌های دیگه (مثل \u003Ccode>ghcr.io\u003C/code> یا میرورهای داخلی) این گزینه رو روی \u003Ccode>Use proxy registry\u003C/code> بذارید.\u003C/p>\u003Cp>فیلد \u003Cstrong>Authentication (اختیاری ولی توصیه‌شده):\u003C/strong> در بخش \u003Ccode>HTTP → Authentication\u003C/code> نوع \u003Ccode>Username\u003C/code> رو انتخاب و یک اکانت داکرهاب وارد کنید. سهمیه‌ی pull اکانت‌دار خیلی بیشتر از IP ناشناسه و برای تیم چند‌نفره تفاوت محسوسی داره.\u003C/p>\u003Chr>\u003Ch3>ساخت ریپوی hosted (رجیستری خصوصی)\u003C/h3>\u003Cp>ریپوری خصوصی و لوکال تنظیمات نوع پروکسی رو نداره و تنها چیزی که میشه بهش توجه کرد \u003Cstrong>Deployment policy\u003C/strong> هست که دو حالت داره allow redeploy اجازه میده که تگ های ایمیج ها قابلیت بازنویسی داشته باشن و در صورت disable این اجازه داده نمیشه\u003Cbr>روش امن‌تر: دو ریپوی hosted جدا بسازید، یکی \u003Ccode>docker-snapshots\u003C/code> با redeploy آزاد و یکی \u003Ccode>docker-releases\u003C/code> با redeploy بسته.\u003C/p>\u003Chr>\u003Ch2>ساخت ریپوی group (آدرس واحد)\u003C/h2>\u003Cp>\u003Ccode>Create repository → docker (group)\u003C/code>\u003C/p>\u003Cp>\u003Cstrong>Name:\u003C/strong> \u003Ccode>docker-group\u003C/code>\u003Cbr>\u003Cstrong>Repository Connectors:\u003C/strong> \u003Ccode>HTTP\u003C/code> روی پورت \u003Ccode>8084\u003C/code>\u003Cbr>\u003Cstrong>Member repositories:\u003C/strong> به این ترتیب اضافه کنید:\u003C/p>\u003Col>\u003Cli data-list-item-id=\"ee4d74f94969e8ef57775ceb799c69bfe\">docker-hosted\u003C/li>\u003Cli data-list-item-id=\"ec96f581ea903ee74e8e5ab36be4407f6\">docker-proxy\u003C/li>\u003C/ol>\u003Cp>از این به بعد کلاینت‌ها فقط با پورت \u003Ccode>8084\u003C/code> (و بعد از Nginx، فقط با یک دامنه) کار می‌کنن و نمی‌دونن ایمیج از کش اومده یا از انبار داخلی.\u003C/p>\u003Cblockquote>\u003Cp>سیستم \u003Cstrong>push به group:\u003C/strong> ریپوی group به‌صورت پیش‌فرض فقط خواندنیه. در نسخه‌های جدید نکسوس فیلد \u003Ccode>Writable member\u003C/code> برای group وجود داره که با ست کردنش می‌تونید push رو هم از همون آدرس انجام بدید. اگر این فیلد رو در نسخه‌ی خودتون دیدید، \u003Ccode>docker-hosted\u003C/code> رو انتخاب کنید؛ در غیر این صورت مثل نمونه‌ی این مقاله، آدرس push رو جدا نگه دارید.\u003C/p>\u003C/blockquote>\u003Cblockquote>\u003Cp>همچنین ترتیب مخزن ها در group مهمه و نکسوس هنگام pull گرفتن به ترتیب موجود بودن اون ایمیج رو چک میکنه پس بهتره که نمونه hosted در اولویت اول قرار بگیره تا همیشه در صورت امکان از مخزن لوکال ایمیج ها دانلود بشن\u003C/p>\u003C/blockquote>\u003Cfigure class=\"image\">\u003Cimg style=\"aspect-ratio:809/288;\" src=\"https://api.dornadevops.com/media/articles/posts/nexus-docker-image3_EOErXll.png\" width=\"809\" height=\"288\">\u003C/figure>\u003Ch2>تنظیمات مخزن های داکر\u003C/h2>\u003Cp>برای هر مخزن داکر علاوه بر اسم و مقدار url که خود nexus بهمون برای دسترسی سریعتر و راحت تر به ادرس اختصاصی اون مخزن میده. مقداری تنظیمات برای مشخص کردن رفتار اون مخزن هم در اختیار میزاره. به عنوان مثال نوع connector رو در بخش قبلی عوض کردیم.\u003C/p>\u003Cp>یا برای مخزن داکر از نوع proxy باید ادرس مخزن اصلی که قراره nexus از اون ایمیج هارو دریافت کنه رو وارد میکنیم\u003Cbr>دو متغیر دیگری که مخزن های داکر دارن متغیر های maximum component age و maximum metadata age هست\u003C/p>\u003Cul>\u003Cli data-list-item-id=\"ef989dd29fe70657d629989270d9c5c8b\">maximum component age\u003Cbr>نشان دهنده مقدار زمانی هست که nexus برای دریافت یک ایمیج از cache خودش استفاده میکنه و برای دریافت اون ایمیج به مخزن proxy مراجعه نمیکنه که با مقدار -1 معنی بی نهایت رو میده\u003C/li>\u003Cli data-list-item-id=\"e39b3a7daf2ad30b77f22c3369584c770\">maximum metadata age\u003Cbr>معنی مشابهی داره اما برای metadata انجام میشه. به عنوان مثال اگر ایمیج با تگ latest در cache سرور ذخیره شده باشه بعد از تایم مشخص شده در این متغیر اون ایمیج دوباره بررسی میشه که ایا ورژن جدیدی منتشر شده یا نه\u003C/li>\u003C/ul>\u003Ch3>تست پراکسی\u003C/h3>\u003Cp>اول چک می‌کنیم connector درسته:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">curl http://&lt;server-ip&gt;:8082/v2/\r\n\u003C/code>\u003C/pre>\u003Cp>اگر جواب \u003Ccode>{}\u003C/code> یا کد 200 بود یعنی درسته. حالا pull:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">docker pull &lt;server-ip&gt;:8082/alpine\r\n\u003C/code>\u003C/pre>\u003Cp>اما دو تا خطای رایج این مرحله:\u003C/p>\u003Cp>\u003Cstrong>خطای اول — HTTPS client به سرور HTTP:\u003C/strong>\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">http: server gave HTTP response to HTTPS client\r\n\u003C/code>\u003C/pre>\u003Cp>داکر به صورت پیش‌فرض سعی می‌کنه با HTTPS وصل بشه، ولی کانکتور ما HTTP هست. باید به داکر بگیم این رجیستری رو به عنوان insecure قبول کنه. در \u003Cstrong>لینوکس\u003C/strong> فایل \u003Ccode>/etc/docker/daemon.json\u003C/code>:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">{\r\n  \"insecure-registries\": [\"&lt;server-ip&gt;:8082\"]\r\n}\r\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo systemctl restart docker\r\n\u003C/code>\u003C/pre>\u003Cp>و در \u003Cstrong>ویندوز\u003C/strong> (Docker Desktop) این تنظیم از داخل برنامه میشه: Settings → Docker Engine → همون JSON رو اضافه می‌کنیم → Apply &amp; Restart.\u003C/p>\u003Cp>\u003Cstrong>خطای دوم no basic auth credentials:\u003C/strong>\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">pull access denied ... may require authorization: no basic auth credentials\r\n\u003C/code>\u003C/pre>\u003Cp>یعنی نکسوس احراز هویت میخواد. دو راه داریم:\u003C/p>\u003Cp>راه اول (برای mirror عمومی راحت‌تره):\u003Cbr>فعال کردن دسترسی anonymous. در \u003Cstrong>Server administration → Security → Anonymous\u003C/strong> فعالش می‌کنیم و در تنظیمات خود ریپو هم anonymous access رو Allow می‌کنیم.\u003C/p>\u003Cp>راه دوم: login با کاربر نکسوس:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">docker login &lt;server-ip&gt;:8082\r\n\u003C/code>\u003C/pre>\u003Ch3>تست hosted و group\u003C/h3>\u003Cp>فرض کنیم hosted رو روی پورت 8083 و group (شامل hosted + proxy) رو روی پورت 8084 بردیم. هر سه پورت رو به insecure-registries اضافه می‌کنیم و برای push حتما login می‌کنیم:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">docker login &lt;server-ip&gt;:8083\r\ndocker tag alpine &lt;server-ip&gt;:8083/my-alpine:test\r\ndocker push &lt;server-ip&gt;:8083/my-alpine:test\r\n\u003C/code>\u003C/pre>\u003Cp>و تست group که باید \u003Cstrong>هر دو\u003C/strong> رو سرو کنه:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">docker pull &lt;server-ip&gt;:8084/my-alpine:test   # از hosted جواب میگیره\r\ndocker pull &lt;server-ip&gt;:8084/nginx            # از proxy میگیره و کش می‌کنه\r\n\u003C/code>\u003C/pre>\u003Ch3>یک برداشت اشتباه رایج درباره group\u003C/h3>\u003Cp>شاید فکر کنیم وقتی از group ایمیج عمومی می‌گیریم، چون ایمیج در hosted نیست، از proxy گرفته میشه و \u003Cstrong>داخل hosted ذخیره میشه\u003C/strong>. اینطور نیست! ایمیج در \u003Cstrong>کش خود ریپوی proxy\u003C/strong> ذخیره میشه و hosted دست‌نخورده می‌مونه. یعنی:\u003C/p>\u003Cul>\u003Cli data-list-item-id=\"e17d3f7ab5455d5aa9f6c0b376fba94ea\">pull از group → کش میشه در proxy → pull های بعدی از همون کش\u003C/li>\u003Cli data-list-item-id=\"e7f1770d0d2cc1d6da0341330e15cb2e6\">group هیچ‌وقت چیزی داخل hosted نمی‌ریزه\u003C/li>\u003C/ul>\u003Cp>نکته خوب اینه که کش proxy به صورت پیش‌فرض \u003Cstrong>دائمی\u003C/strong> هست؛ چیزی پاک نمیشه مگه اینکه خودمون \u003Cstrong>Cleanup Policy\u003C/strong> تعریف کنیم. پس برای اکثر موارد اصلا نیازی به کپی کردن داخل hosted نیست.\u003C/p>\u003Ch2>مرحله اخر HTTPS کردن رجیستری (حذف insecure-registries)\u003C/h2>\u003Cp>تنظیم \u003Ccode>insecure-registries\u003C/code> روی همه کلاینت‌ها اذیت‌کننده‌ست و راه درستش گذوندن رجیستری روی HTTPS با گواهی معتبره\u003C/p>\u003Cp>مسیر اول (بدون نیاز به nginx) استفاده از TLS داخلی خود نکسوسه:\u003C/p>\u003Cp>\u003Cstrong>1. گرفتن گواهی با certbot\u003C/strong> (پورت 80 باید آزاد باشه):\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo apt install -y certbot\r\nsudo certbot certonly --standalone -d nexus.yourdomain.com\r\n# خروجی: /etc/letsencrypt/live/nexus.yourdomain.com/\r\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>2. ایمپورت در نکسوس:\u003C/strong> در UI مسیر \u003Cstrong>Security → TLS certificates\u003C/strong> → افزودن گواهی جدید؛ محتوای \u003Ccode>privkey.pem\u003C/code> به عنوان کلید خصوصی و \u003Ccode>fullchain.pem\u003C/code> به عنوان زنجیره گواهی.\u003C/p>\u003Cp>\u003Cstrong>3. تغییر Docker Connector ها به HTTPS:\u003C/strong> در تنظیمات هر ریپو، به جای HTTP گزینه HTTPS رو با پورت جدید (مثلا 8442 و 8443 و 8444) فعال می‌کنیم و گواهی ایمپورت شده رو انتخاب می‌کنیم.\u003C/p>\u003Cp>\u003Cstrong>4. باز کردن پورت‌ها در فایروال\u003C/strong> و بعد از اطمینان، حذف \u003Ccode>insecure-registries\u003C/code> از همه کلاینت‌ها و restart داکر. از این به بعد همه چیز بدون هیچ تنظیم اضافه‌ای کار می‌کنه:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">docker pull nexus.yourdomain.com:8444/alpine\r\ndocker login nexus.yourdomain.com:8443\r\n\u003C/code>\u003C/pre>\u003Cp>تمدید گواهی فراموش نشه\u003C/p>\u003Cp>گواهی‌های Let's Encrypt هر ۹۰ روز منقضی میشن. بعد از هر بار \u003Ccode>certbot renew\u003C/code> باید گواهی جدید در نکسوس هم آپدیت بشه (دستی از UI یا با اسکریپت REST API) — وگرنه یک روز داکر کلاینت‌ها خطای گواهی می‌گیرن.\u003C/p>\u003Cp>راه جایگزین: گذاشتن \u003Cstrong>nginx به عنوان reverse proxy\u003C/strong> با TLS termination جلوی نکسوس؛ مزیتش اینه که \u003Ccode>certbot --nginx\u003C/code> تمدید رو خودکار می‌کنه و UI خود نکسوس هم HTTPS میشه. برای راه اندازی nginx می‌تونید مقاله‌ی ریورس پروکسی nginx رو ببینید.\u003Cbr>برای انجام دادن این روش دو مقاله \u003Ca href=\"https://dornadevops.com/blog/devops/reverse-proxy-nginx-setup/\">راه اندازی ریورس پروکسی در nginx\u003C/a> و \u003Ca href=\"https://dornadevops.com/blog/devops/how-to-enable-https-with-nginx/\">نحوه فعال کردن https در nginx\u003C/a> رو میتونید مطالعه کنید\u003C/p>\u003Ch2>نکات تکمیلی برای محیط عملیاتی\u003C/h2>\u003Cul>\u003Cli data-list-item-id=\"ef5237bff971ffaedb93d4920d9cab678\">\u003Cstrong>تغییر پسورد admin\u003C/strong> بعد از اولین login و فعال کردن \u003Cstrong>anonymous فقط در حد لازم\u003C/strong> — اگر رجیستری روی اینترنت عمومیه، anonymous رو محدود به خواندن از ریپوهای proxy/group کنید.\u003C/li>\u003Cli data-list-item-id=\"ec5367533558339e99e515896b2eada92\">\u003Cstrong>مدیریت رم:\u003C/strong> تنظیمات heap در فایل \u003Ccode>bin/nexus.vmoptions\u003C/code> (یا \u003Ccode>nexus.vmoptions\u003C/code> در data dir) قابل تغییره؛ روی سرورهای کم‌رم می‌شه \u003Ccode>-Xms\u003C/code> و \u003Ccode>-Xmx\u003C/code> رو دستی کم کرد.\u003C/li>\u003Cli data-list-item-id=\"e96f317efa4888e92a8601f0dbc85eb93\">\u003Cstrong>Cleanup Policy:\u003C/strong> برای اینکه کش proxy و ریپوهای hosted بی‌نهایت بزرگ نشن، از Administration → Repository → Cleanup policies می‌توانیم قانون حذف بر اساس آخرین دسترسی یا تاریخ دانلود تعریف و به ریپوها متصل کنیم.\u003C/li>\u003Cli data-list-item-id=\"ee0d5f3d810407882b4a603f6455380d6\">\u003Cstrong>Blob Store:\u003C/strong> داده هر ریپو در یک blob store ذخیره میشه؛ میشه برای هر ریپو blob store جدا (حتی روی دیسک جدا) تعریف کرد.\u003C/li>\u003Cli data-list-item-id=\"e1f1e98e05fd4758814655f4c5c0e45b1\">\u003Cstrong>بکاپ:\u003C/strong> ساده‌ترین راه بکاپ گیری از کل دایرکتوری \u003Ccode>/opt/sonatype-work\u003C/code> در زمانی که سرویس down یا حداقل بیکاره.\u003C/li>\u003Cli data-list-item-id=\"e19182be474b012a7fbfc32fb8aa7bf90\">\u003Cstrong>ثبت در UI چه اتفاقی افتاد:\u003C/strong> برای دیدن اینکه واقعا ایمیج‌ها از کش سرو شدن یا نه، بخش Browse هر ریپو لیست کامپوننت‌های کش شده رو نشون میده.\u003C/li>\u003C/ul>\u003Ch2>مدیریت کاربر ها و تنظیم سطح دسترسی\u003C/h2>\u003Cp>برای ایجاد کاربر های بیشتر و مدیریت سطح دسترسی هر کاربر به عملیاتی که روی هر repository بتونه انجام بده باید به بخش settings -&gt; security -&gt; user بریم و گزینه ایجاد کاربر رو بزنیم\u003Cbr>قبل از اون باید role همراه با دسترسی های مورد نظر رو ایجاد کنیم تا بشه این role رو به هر user که مدنظرمونه وصل کنیم\u003C/p>\u003Ch3>انواع role ها\u003C/h3>\u003Cp>برای ساخت role هم به مسیر settings -&gt; security -&gt; roles\u003Cbr>توی nexus دو دسته کلی از Privilege ها داریم(جزییات دسترسی که به یک role تخصیص داده میشن)\u003Cbr>\u003Ccode>nx-repository-view\u003C/code> و `nx-repository-admin\u003Cbr>که نقش view برای مدیریت محتوای درون repository هاست و admin برای مدیریت خود repository ها\u003C/p>\u003Cp>&nbsp;\u003C/p>\u003Cfigure class=\"image\">\u003Cimg style=\"aspect-ratio:1893/992;\" src=\"https://api.dornadevops.com/media/articles/posts/neuxs-docker-image4_75EPbKl.png\" width=\"1893\" height=\"992\">\u003C/figure>\u003Cp>دسترسی ها برای view\u003C/p>\u003Cfigure class=\"table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Action\u003C/th>\u003Cth>What it allows\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>browse\u003C/code>\u003C/td>\u003Ctd>See the repo in the UI and list/navigate components (tree, search, metadata) — but&nbsp;\u003Cstrong>not\u003C/strong>&nbsp;open/download files\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>read\u003C/code>\u003C/td>\u003Ctd>\u003Cstrong>Download\u003C/strong>&nbsp;the actual artifact (HTTP GET, pull packages)\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>add\u003C/code>\u003C/td>\u003Ctd>\u003Cstrong>Upload/deploy\u003C/strong>&nbsp;new components\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>edit\u003C/code>\u003C/td>\u003Ctd>Overwrite/modify existing components (redeploy)\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>delete\u003C/code>\u003C/td>\u003Ctd>Remove components\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/figure>\u003Cp>دسترسی ها برای admin\u003C/p>\u003Cfigure class=\"table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Action\u003C/th>\u003Cth>What it allows\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>browse\u003C/code>\u003C/td>\u003Ctd>See the repo listed under Administration/server config\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>read\u003C/code>\u003C/td>\u003Ctd>View its settings page (URL, storage, connectors)\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>edit\u003C/code>\u003C/td>\u003Ctd>Change its configuration (change settings, blob store, policies)\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>add\u003C/code>\u003C/td>\u003Ctd>\u003Cstrong>Create\u003C/strong>&nbsp;new repositories\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>delete\u003C/code>\u003C/td>\u003Ctd>\u003Cstrong>Delete\u003C/strong>&nbsp;the whole repository\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/figure>\u003Cp>به عنوان مثال برای درست کردن یک role برای دسترسی فقط به push و pull از سرور hosted میتونیم فقط دسترسی های read و edit و add و browse از گروه view رو برای اون مخزن خاص رو باز کنیم\u003C/p>\u003Ch2>نگه‌داری\u003C/h2>\u003Ch3>Cleanup Policy\u003C/h3>\u003Cp>کش ریپوی proxy سقف رشد نداره و بزرگ‌ترین علت پر شدن دیسک سرور نکسوسه. حتماً سیاست پاک‌سازی تعریف کنید.\u003C/p>\u003Cp>\u003Ccode>settings → Repository → Cleanup Policies → Create Cleanup Policy\u003C/code>\u003C/p>\u003Cfigure class=\"table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>فیلد\u003C/th>\u003Cth>مقدار پیشنهادی برای proxy\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>Name\u003C/td>\u003Ctd>\u003Ccode>docker-proxy-cleanup\u003C/code>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>Format\u003C/td>\u003Ctd>\u003Ccode>docker\u003C/code>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>Component usage — last downloaded before\u003C/td>\u003Ctd>\u003Ccode>30\u003C/code> روز\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/figure>\u003Cp>این یعنی هر ایمیجی که ۳۰ روز pull نشده حذف می‌شه. برای کش پروکسی کاملاً بی‌خطره چون در صورت نیاز دوباره از داکرهاب گرفته می‌شه.\u003C/p>\u003Cp>برای \u003Ccode>docker-hosted\u003C/code> محافظه‌کارتر باشید و به‌جای معیار دانلود، از \u003Cstrong>Component age\u003C/strong> با بازه‌ی بلندتر (مثلاً ۹۰ روز) استفاده کنید، و ریپوی release رو معمولاً بهتره کلاً از سیاست پاک‌سازی خارج نگه دارید.\u003C/p>\u003Cp>سیاست رو در تب \u003Ccode>Cleanup\u003C/code> تنظیمات هر ریپو انتخاب کنید. بعد سه تسک زمان‌بندی‌شده در \u003Ccode>Administration → System → Tasks\u003C/code> بسازید:\u003C/p>\u003Cfigure class=\"table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>تسک\u003C/th>\u003Cth>کارکرد\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>Admin - Cleanup repositories using their associated policies\u003C/code>\u003C/td>\u003Ctd>اجرای سیاست‌های پاک‌سازی\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>Admin - Cleanup tags\u003C/code> یا حذف مانیفست‌های بلااستفاده‌ی داکر\u003C/td>\u003Ctd>پاک کردن مانیفست‌ها و لایه‌های بی‌ارجاع\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>Admin - Compact blob store\u003C/code>\u003C/td>\u003Ctd>آزاد کردن واقعی فضای دیسک\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/figure>\u003Cp>نکته‌ی مهم: تا وقتی \u003Ccode>Compact blob store\u003C/code> اجرا نشه، فضای دیسک آزاد نمی‌شه. حذف در نکسوس اول soft delete هست. تسک‌ها رو در ساعت کم‌ترافیک شبانه زمان‌بندی کنید.\u003C/p>\u003Ch1>جمع بندی\u003C/h1>\u003Cp>مسیر کلی چیزی که ساختیم:\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\">docker hub  ←→  proxy (8082)  ←┐\r\n                               ├──  group (8084)  ←→  کلاینت‌ها (pull)\r\nprivate imgs  →  hosted (8083) ←┘        ↑\r\n                                    (push ایمیج‌های خودمون)\r\n\u003C/code>\u003C/pre>\u003Cp>الان یک رجیستری داکر عملیاتی دارید: \u003Ccode>docker.example.com\u003C/code> برای pull (که پشت صحنه هم کش داکرهابه هم انبار خصوصی)، \u003Ccode>docker-push.example.com\u003C/code> برای انتشار ایمیج‌های خودتون، هر دو روی HTTPS معتبر، با دسترسی‌های تفکیک‌شده و سیاست پاک‌سازی خودکار.\u003C/p>","devops","دواپس","https://api.dornadevops.com/media/articles/category/images/devops.png",{"name":210,"avatar":8,"firstName":8,"lastName":8},"شهیار کمالی","https://api.dornadevops.com/media/articles/images/B8-ESdR4WB-CTxJzTk1HInyVV9k-NwlpdjXXSRamUPh4twb2SQ.png",[213,214,215,216,217],"docker","iran_accress","DevOps","nexus","repository",[219,221,223,224,226],{"name":220,"name_en":213},"داکر",{"name":222,"name_en":214},"ایرانـاکسس",{"name":207,"name_en":215},{"name":225,"name_en":216},"نکسوس",{"name":227,"name_en":217},"رپوزیتوری",{"articles":229,"count":231,"next":554,"previous":554},[230,239,249,259,268,281,292,304,314,324,336,346,357,367,376,388,400,412,421,430,439,448,456,465,476,484,493,501,510,518,527,536,545],{"id":231,"title":203,"slug":232,"excerpt":204,"content":204,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":233,"publishedAt":236,"readTime":135,"image":211,"tags":237,"tagsFa":238,"views":105},33,"local-docker-registery-setup-on-nexus",{"name":210,"avatar":8,"firstName":234,"lastName":235},"شهیار","کمالی","1405-05-27",[],[],{"id":240,"title":241,"slug":242,"excerpt":243,"content":243,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":244,"publishedAt":236,"readTime":245,"image":246,"tags":247,"tagsFa":248,"views":105},32,"نحوه راه اندازی nexus repository manager","how-to-install-nexus-repository-manager","وقتی روی یک سرور چند تا پروژه داریم یا یک تیم چند نفره روی یک محصول کار می‌کنه، هر بار دانلود شدن پکیج‌ها و ایمیج‌ها از اینترنت هم وقت می‌گیره هم پهنای باند مصرف می‌کنه؛ بعضی وقت‌ها هم به خاطر محدودیت‌های شبکه یا تحریم‌ها اصلاً به رجیستری‌های اصلی مثل Docker Hub دسترسی نداریم. برای حل این مشکل، بهترین گزینه راه‌اندازی یک ریپازیتوری منیجر داخلیه؛ سیستمی که هم می‌تونه واسط بین ما و رجیستری‌های عمومی باشه (پروکسی و کش) و هم ریپوی خصوصی خودمون برای ایمیج‌ها و پکیج‌هایی باشه که خودمون ساختیم.\r\n\r\nدر این مقاله قدم به قدم Nexus Repository Manager رو روی یک سرور اوبونتو راه‌اندازی می‌کنیم؛ از استخراج فایل نصب و ساخت کاربر اختصاصی و سرویس systemd گرفته تا اولین ورود به رابط وب، گرفتن پسورد ادمین و آشنایی با محیط نکوس رو باهم پیش میبریم",{"name":210,"avatar":8,"firstName":234,"lastName":235},6,"https://api.dornadevops.com/media/articles/images/ChatGPT_Image_Aug_18_2026_04_59_49_AM.png",[],[],{"id":250,"title":251,"slug":252,"excerpt":253,"content":253,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":254,"publishedAt":236,"readTime":255,"image":256,"tags":257,"tagsFa":258,"views":105},31,"نحوه فعال کردن https  و مدیریت سرتیفیکیت دامنه با nginx","how-to-enable-https-with-nginx","بیشتر آموزش‌های فعال‌سازی HTTPS روی Nginx به شما می‌گویند دستور certbot --nginx -d example.com را اجرا کنید و تمام! این روش کار می‌کند اما اولین باری که چیزی خراب شود، گم می‌شوید؛ چون هیچ‌وقت نفهمیده‌اید آن دستور در واقع چه کاری انجام داده است.\r\n\r\nاین مقاله مسیر متفاوتی را طی می‌کند. ابتدا می‌فهمیم پشت صحنه چه می‌گذرد، بعد با دستورهای خام Certbot (بدون افزونه Nginx) گواهی می‌گیریم و آن را خودمان به کانفیگ Nginx وصل می‌کنیم. فقط بعد از این مراحل، سراغ آن یک دستور جادویی می‌رویم که همه کارها را خودکار می‌کند و در آن لحظه دقیقاً می‌دانید چه کاری برایتان انجام می‌دهد.",{"name":210,"avatar":8,"firstName":234,"lastName":235},20,"https://api.dornadevops.com/media/articles/images/ChatGPT_Image_Aug_18_2026_05_17_10_AM.png",[],[],{"id":260,"title":261,"slug":262,"excerpt":263,"content":263,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":264,"publishedAt":236,"readTime":53,"image":265,"tags":266,"tagsFa":267,"views":105},30,"راه اندازی ریورس پروکسی در nginx","reverse-proxy-nginx-setup","فرض کنید می‌خواهیم چندین سرویس مختلف را روی یک سرور واحد و از روی پورت عادی 80 سرو کنیم. مشکلی که به آن برمی‌خوریم این است که نمی‌شود چندین سرویس روی یک پورت یکسان پاسخگو باشند و قطعاً به ارور مشغول بودن آن پورت (port already in use) برمی‌خوریم. در این مقاله به آموزش نحوه استفاده از راه حل وب سرور nginx برای این مشکل به اسم reverse proxy میپردازیم و نگاهی کلی به اینکه چطور nginx رو کانفیگ کنیم و ساختارش چطوریه میندازیم",{"name":210,"avatar":8,"firstName":234,"lastName":235},"https://api.dornadevops.com/media/articles/images/ChatGPT_Image_Aug_18_2026_05_05_00_AM.png",[],[],{"id":269,"title":270,"slug":271,"excerpt":272,"content":272,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":273,"publishedAt":277,"readTime":255,"image":278,"tags":279,"tagsFa":280,"views":105},29,"طراحی سیستم‌های Highly Available چیست؟ راهنمای کامل معماری‌های در دسترس‌پذیر","highly-available-system-design-guide-2026","طراحی سیستم‌های Highly Available یعنی ساخت معماری‌هایی که در برابر خرابی‌های روزمره، outage و failover مقاوم باشند. در این مقاله HA را عمیق بررسی می‌کنیم.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"الیاس پوررجب","الیاس","پوررجب","1405-02-26","https://api.dornadevops.com/media/articles/images/highly-available-system-design-2026.jpg.png",[],[],{"id":282,"title":283,"slug":284,"excerpt":285,"content":285,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":286,"publishedAt":287,"readTime":288,"image":289,"tags":290,"tagsFa":291,"views":105},28,"SRE چیست؟ راهنمای کامل Site Reliability Engineering در سیستم‌های مدرن","sre-site-reliability-engineering-guide-2026","SRE یا Site Reliability Engineering رویکردی مهندسی برای ساخت و نگهداری سیستم‌های قابل‌اعتماد، مقیاس‌پذیر و پایدار است. در این مقاله SRE را کامل بررسی می‌کنیم.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-02-25",18,"https://api.dornadevops.com/media/articles/images/sre-site-reliability-engineering-2026.jpg.png",[],[],{"id":293,"title":294,"slug":295,"excerpt":296,"content":296,"categoryId":71,"categorySlug":132,"categoryTitle":297,"categoryImage":298,"author":299,"publishedAt":287,"readTime":300,"image":301,"tags":302,"tagsFa":303,"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":274,"avatar":8,"firstName":275,"lastName":276},15,"https://api.dornadevops.com/media/articles/images/sla-cloud-service-level-agreement-2026.jpg.png",[],[],{"id":305,"title":306,"slug":307,"excerpt":308,"content":308,"categoryId":71,"categorySlug":132,"categoryTitle":297,"categoryImage":298,"author":309,"publishedAt":310,"readTime":255,"image":311,"tags":312,"tagsFa":313,"views":105},26,"Network Firewall چیست؟ معرفی کامل فایروال شبکه و بهترین فایروال‌های جهان در ۲۰۲۶","what-is-network-firewall-best-firewalls-2026","Network Firewall لایه‌ای کلیدی برای کنترل ترافیک بین شبکه‌های قابل‌اعتماد و غیرقابل‌اعتماد است. در این مقاله، فایروال شبکه را عمیق بررسی می‌کنیم و بهترین گزینه‌های جهان را معرفی می‌کنیم.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-02-24","https://api.dornadevops.com/media/articles/images/network-firewall-best-firewalls-2026.jpg.png",[],[],{"id":315,"title":316,"slug":317,"excerpt":318,"content":318,"categoryId":71,"categorySlug":132,"categoryTitle":297,"categoryImage":298,"author":319,"publishedAt":310,"readTime":320,"image":321,"tags":322,"tagsFa":323,"views":105},25,"WAF چیست؟ معرفی کامل Web Application Firewall و بهترین WAFهای جهان","what-is-waf-best-waf-2026","WAF یا Web Application Firewall لایه‌ای امنیتی برای محافظت از وب‌اپلیکیشن‌ها در برابر حملات HTTP و HTTPS است. در این مقاله، WAF را کامل بررسی می‌کنیم و بهترین WAFهای جهان را معرفی می‌کنیم.",{"name":274,"avatar":8,"firstName":275,"lastName":276},17,"https://api.dornadevops.com/media/articles/images/what-is-waf-web-application-firewall-best-waf-2026.jpg.png",[],[],{"id":325,"title":326,"slug":327,"excerpt":328,"content":328,"categoryId":80,"categorySlug":329,"categoryTitle":330,"categoryImage":331,"author":332,"publishedAt":310,"readTime":135,"image":333,"tags":334,"tagsFa":335,"views":105},24,"گارد قرمز چیست؟ راهکار حرفه‌ای برای انسداد درخواست‌های خارجی وردپرس و افزایش سرعت پیشخوان","red-guard-wordpress-external-requests","افزونه گارد قرمز برای انسداد درخواست‌های خارجی وردپرس و افزایش سرعت پیشخوان سایت","wordpress","وردپرس","https://api.dornadevops.com/media/articles/category/images/wordpress.jpeg",{"name":274,"avatar":8,"firstName":275,"lastName":276},"https://api.dornadevops.com/media/articles/images/red-guard-wordpress-external-requests-2026.jpg.png",[],[],{"id":337,"title":338,"slug":339,"excerpt":340,"content":340,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":341,"publishedAt":310,"readTime":342,"image":343,"tags":344,"tagsFa":345,"views":105},23,"GitLab چیست؟ ستون فقرات DevOps و CI/CD مدرن برای تیم‌های ایرانی","gitlab-devops-ci-cd-platform-iran","GitLab یک پلتفرم کامل DevOps برای مدیریت repository، CI/CD، Container Registry و Platform Engineering است که با زیرساخت داخلی، سرعت و پایداری بیشتری برای تیم‌های ایرانی فراهم می‌کند.",{"name":274,"avatar":8,"firstName":275,"lastName":276},14,"https://api.dornadevops.com/media/articles/images/gitlab-devops-platform-cloudnative-ci-cd-iran.jpg.png",[],[],{"id":347,"title":348,"slug":349,"excerpt":350,"content":350,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":351,"publishedAt":352,"readTime":353,"image":354,"tags":355,"tagsFa":356,"views":105},22,"آینده DevOps در عصر هوش مصنوعی ۲۰۲۶","future-of-devops-ai-agentic-2026","آینده DevOps به سمت AI-Native Delivery، agentic workflows، observability هوشمند و عملیات نیمه‌خودمختار مبتنی بر AI و Platform Engineering حرکت می‌کند.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-02-22",16,"https://api.dornadevops.com/media/articles/images/future-devops-ai-agentic-cloud-native-2026.jpg.png",[],[],{"id":358,"title":359,"slug":360,"excerpt":361,"content":361,"categoryId":71,"categorySlug":132,"categoryTitle":297,"categoryImage":298,"author":362,"publishedAt":363,"readTime":288,"image":364,"tags":365,"tagsFa":366,"views":105},21,"OS Hardening چیست؟ راهنمای جامع امن‌سازی سیستم‌عامل در ۲۰۲۶","os-hardening-guide-2026","OS Hardening مجموعه‌ای از تکنیک‌های چندلایه برای کاهش سطح حمله، محدودسازی دسترسی‌ها و مقاوم‌سازی سیستم‌عامل در برابر نفوذ است.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-02-18","https://api.dornadevops.com/media/articles/images/os-hardening-linux-security-cloud-native-2026.jpg.png",[],[],{"id":255,"title":368,"slug":369,"excerpt":370,"content":370,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":371,"publishedAt":372,"readTime":347,"image":373,"tags":374,"tagsFa":375,"views":105},"Prometheus و Grafana چیست؟ راهنمای کامل Observability در Cloud-Native","prometheus-grafana-observability-cloud-native","Prometheus و Grafana ستون‌های اصلی Observability هستند که متریک‌ها را جمع می‌کنند، تحلیل می‌کنند و به داشبوردهای عملیاتی و هشدارهای قابل‌اقدام تبدیل می‌کنند.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-02-16","https://api.dornadevops.com/media/articles/images/prometheus-grafana-observability-cloud-native-2026.jpg.png",[],[],{"id":377,"title":378,"slug":379,"excerpt":380,"content":380,"categoryId":245,"categorySlug":381,"categoryTitle":382,"categoryImage":383,"author":384,"publishedAt":372,"readTime":255,"image":385,"tags":386,"tagsFa":387,"views":105},19,"cPanel چیست؟ راهنمای کامل مدیریت سرور و هاست","cpanel-server-hosting-management-guide","cPanel همه‌چیز مدیریت هاست و سرور لینوکسی را در یک داشبورد ساده و قدرتمند جمع می‌کند؛ از سایت و ایمیل تا امنیت و اتوماسیون.","cpanel","سیپنل","https://api.dornadevops.com/media/articles/category/images/cpanel.png",{"name":274,"avatar":8,"firstName":275,"lastName":276},"https://api.dornadevops.com/media/articles/images/cpanel-hosting-control-panel-dashboard-2026_vzAoNcZ.jpg.png",[],[],{"id":288,"title":389,"slug":390,"excerpt":391,"content":391,"categoryId":98,"categorySlug":392,"categoryTitle":393,"categoryImage":394,"author":395,"publishedAt":396,"readTime":320,"image":397,"tags":398,"tagsFa":399,"views":105},"DefectDojo چیست؟ راهنمای کامل مدیریت آسیب‌پذیری در DevSecOps","defectdojo-vulnerability-management-devsecops","DefectDojo گزارش‌های امنیتی پراکنده را به یک مرکز فرماندهی واحد تبدیل می‌کند تا آسیب‌پذیری‌ها سریع‌تر، دقیق‌تر و قابل‌ردیابی‌تر مدیریت شوند.","devsecops","DevSecOps","https://api.dornadevops.com/media/articles/category/images/devsecops.jpeg",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-02-13","https://api.dornadevops.com/media/articles/images/defectdojo-vulnerability-management-devsecops-2026.jpg.png",[],[],{"id":320,"title":401,"slug":402,"excerpt":403,"content":403,"categoryId":71,"categorySlug":132,"categoryTitle":297,"categoryImage":298,"author":404,"publishedAt":408,"readTime":5,"image":409,"tags":410,"tagsFa":411,"views":105},"آسیب‌پذیری بسیار مهم در cPanel – هشدار امنیتی درباره CVE‑2026‑41940","cpanel-cve-2026-41940-security-alert","با انتشار آسیب‌پذیری CVE‑2026‑41940 برای cPanel، سرورهایی که هنوز روی نسخه‌های قدیمی‌تر از آخرین نسخه امن هستند در معرض تهدید جدی قرار گرفته‌اند. این آسیب‌پذیری می‌تواند امنیت کامل سرویس را به خطر بیندازد.",{"name":405,"avatar":8,"firstName":406,"lastName":407},"درنا ادمین","درنا","ادمین","1405-02-12","https://api.dornadevops.com/media/articles/images/cpanel-vuln.png",[],[],{"id":353,"title":413,"slug":414,"excerpt":415,"content":415,"categoryId":98,"categorySlug":392,"categoryTitle":393,"categoryImage":394,"author":416,"publishedAt":417,"readTime":144,"image":418,"tags":419,"tagsFa":420,"views":105},"GitLeaks چیست؟ ابزار شناسایی Secrets در Git","what-is-gitleaks-sast-secret-detection","GitLeaks ابزار متن‌باز برای شناسایی رمزها و API Keyهای لو رفته در Git است که قبل از انتشار، جلوی نشت اطلاعات حساس را می‌گیرد.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-02-09","https://api.dornadevops.com/media/articles/images/gitleaks-git-secrets-scanner-security.jpg.png",[],[],{"id":300,"title":422,"slug":423,"excerpt":424,"content":424,"categoryId":98,"categorySlug":392,"categoryTitle":393,"categoryImage":394,"author":425,"publishedAt":426,"readTime":12,"image":427,"tags":428,"tagsFa":429,"views":105},"Semgrep چیست؟ ابزار سریع SAST برای امنیت کد و DevSecOps","semgrep-sast-devsecops","ابزار Semgrep با اسکن سریع کد، باگ‌ها، آسیب‌پذیری‌ها و secrets را قبل از اجرا پیدا می‌کند و امنیت را وارد جریان توسعه می‌کند.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-02-07","https://api.dornadevops.com/media/articles/images/semgrep-sast-code-security-devsecops.jpg.png",[],[],{"id":342,"title":431,"slug":432,"excerpt":433,"content":433,"categoryId":98,"categorySlug":392,"categoryTitle":393,"categoryImage":394,"author":434,"publishedAt":435,"readTime":255,"image":436,"tags":437,"tagsFa":438,"views":105},"DevSecOps در ۲۰۲۶؛ تزریق امنیت به CI/CD و کلود","devsecops-2026-security-in-ci-cd-cloud","چطور امنیت را از ابتدا وارد CI/CD و زیرساخت ابری کنیم بدون اینکه سرعت توسعه قربانی شود؟",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-02-02","https://api.dornadevops.com/media/articles/images/devsecops-security-ci-cd-cloud-2026_hnouteW.png",[],[],{"id":440,"title":441,"slug":442,"excerpt":443,"content":443,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":444,"publishedAt":435,"readTime":288,"image":445,"tags":446,"tagsFa":447,"views":105},13,"CI/CD در ۲۰۲۶؛ از صفر تا دیپلوی بدون قطعی","ci-cd-2026-zero-downtime-deployment","از پایه تا حرفه‌ای یاد بگیرید چطور بدون قطعی روی سرور ابری دیپلوی کنید.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"https://api.dornadevops.com/media/articles/images/ci-cd-zero-downtime-cloud-deployment.png",[],[],{"id":135,"title":449,"slug":450,"excerpt":451,"content":451,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":452,"publishedAt":435,"readTime":353,"image":453,"tags":454,"tagsFa":455,"views":105},"ابزارهای DevOps در ۲۰۲۶؛ معرفی کامل و کاربردی","devops-tools-2026-complete-guide","بهترین ابزارهای DevOps را بشناسید و بفهمید هرکدام دقیقاً کجا استفاده می‌شوند.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"https://api.dornadevops.com/media/articles/images/devops-tools-list-2026-cloud.png",[],[],{"id":144,"title":457,"slug":458,"excerpt":459,"content":459,"categoryId":53,"categorySlug":206,"categoryTitle":207,"categoryImage":208,"author":460,"publishedAt":461,"readTime":288,"image":462,"tags":463,"tagsFa":464,"views":105},"DevOps چیست؟ راهنمای کامل از صفر تا حرفه‌ای (۲۰۲۶)","what-is-devops-complete-guide-2026","از تعریف تا ابزارها و مسیر یادگیری DevOps را یک‌جا و حرفه‌ای یاد بگیرید.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-02-01","https://api.dornadevops.com/media/articles/images/what-is-devops-cloud-architecture-2026.png",[],[],{"id":12,"title":466,"slug":467,"excerpt":468,"content":468,"categoryId":62,"categorySlug":469,"categoryTitle":470,"categoryImage":471,"author":472,"publishedAt":461,"readTime":12,"image":473,"tags":474,"tagsFa":475,"views":105},"تغییر دامنه در DirectAdmin؛ سریع و بدون دردسر","change-domain-directadmin-guide","دامنه سایت را در DirectAdmin بدون خطا و از دست رفتن اطلاعات تغییر دهید.","directadmin","دایرکت ادمین","https://api.dornadevops.com/media/articles/category/images/directadmin.jpg",{"name":274,"avatar":8,"firstName":275,"lastName":276},"https://api.dornadevops.com/media/articles/images/directadmin-change-domain-tutorial.jpg",[],[],{"id":80,"title":477,"slug":478,"excerpt":479,"content":479,"categoryId":62,"categorySlug":469,"categoryTitle":470,"categoryImage":471,"author":480,"publishedAt":461,"readTime":12,"image":481,"tags":482,"tagsFa":483,"views":105},"نصب SSL رایگان در DirectAdmin؛ امن‌سازی فوری سایت","install-free-ssl-directadmin","در چند دقیقه SSL رایگان نصب کنید و امنیت سایت را تضمین کنید.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"https://api.dornadevops.com/media/articles/images/directadmin-free-ssl-install.jpg",[],[],{"id":71,"title":485,"slug":486,"excerpt":487,"content":487,"categoryId":62,"categorySlug":469,"categoryTitle":470,"categoryImage":471,"author":488,"publishedAt":489,"readTime":144,"image":490,"tags":491,"tagsFa":492,"views":105},"ساخت DNS اختصاصی برای دامنه؛ راهنمای کامل","create-custom-dns-domain-guide","یاد بگیرید DNS اختصاصی بسازید و کنترل کامل دامنه را در دست بگیرید.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-01-31","https://api.dornadevops.com/media/articles/images/custom-dns-setup-domain.jpg",[],[],{"id":98,"title":494,"slug":495,"excerpt":496,"content":496,"categoryId":62,"categorySlug":469,"categoryTitle":470,"categoryImage":471,"author":497,"publishedAt":489,"readTime":353,"image":498,"tags":499,"tagsFa":500,"views":105},"آموزش کامل و قدم‌ به‌ قدم بازگردانی بکاپ در دایرکت ادمین","restore-backup-directadmin-guide","چطور در کمترین زمان سایت را از بکاپ برگردانیم؟",{"name":274,"avatar":8,"firstName":275,"lastName":276},"https://api.dornadevops.com/media/articles/images/directadmin-backup-restore.jpg",[],[],{"id":245,"title":502,"slug":503,"excerpt":504,"content":504,"categoryId":62,"categorySlug":469,"categoryTitle":470,"categoryImage":471,"author":505,"publishedAt":506,"readTime":135,"image":507,"tags":508,"tagsFa":509,"views":105},"تغییر دامنه در وردپرس؛ قدم‌به‌قدم و بدون خطا","change-domain-wordpress-step-by-step","تغییر نام، بدون تغییر سرنوشت ، دامنه وردپرس را بدون خراب شدن سایت تغییر دهید.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-01-30","https://api.dornadevops.com/media/articles/images/wordpress-domain-change-guide.jpg",[],[],{"id":53,"title":511,"slug":512,"excerpt":513,"content":513,"categoryId":62,"categorySlug":469,"categoryTitle":470,"categoryImage":471,"author":514,"publishedAt":506,"readTime":135,"image":515,"tags":516,"tagsFa":517,"views":105},"بکاپ‌گیری حرفه‌ای در DirectAdmin (Admin Level)","directadmin-admin-backup-guide","چطور از کل سرور بکاپ بگیریم و در بحران نجاتش دهیم؟",{"name":274,"avatar":8,"firstName":275,"lastName":276},"https://api.dornadevops.com/media/articles/images/directadmin-admin-level-backup.jpg",[],[],{"id":62,"title":519,"slug":520,"excerpt":521,"content":521,"categoryId":5,"categorySlug":213,"categoryTitle":220,"categoryImage":522,"author":523,"publishedAt":506,"readTime":440,"image":524,"tags":525,"tagsFa":526,"views":105},"Portainer چیست؟ مدیریت حرفه‌ای Docker و Kubernetes","what-is-portainer-docker-management","Docker و Kubernetes را بدون دردسر و گرافیکی مدیریت کنید.","https://api.dornadevops.com/media/articles/category/images/Screenshot_from_2026-03-06_15-05-14.png",{"name":274,"avatar":8,"firstName":275,"lastName":276},"https://api.dornadevops.com/media/articles/images/portainer-docker-kubernetes-ui.png",[],[],{"id":89,"title":528,"slug":529,"excerpt":530,"content":530,"categoryId":5,"categorySlug":213,"categoryTitle":220,"categoryImage":522,"author":531,"publishedAt":532,"readTime":12,"image":533,"tags":534,"tagsFa":535,"views":105},"۷ اشتباه مرگبار در Docker که باید همین امروز اصلاح کنید","docker-mistakes-developers","اشتباهاتی که پروژه‌ات را نابود می‌کنند و چطور ازشان جلوگیری کنی.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1405-01-29","https://api.dornadevops.com/media/articles/images/docker-common-mistakes.png",[],[],{"id":38,"title":537,"slug":538,"excerpt":539,"content":539,"categoryId":62,"categorySlug":469,"categoryTitle":470,"categoryImage":471,"author":540,"publishedAt":541,"readTime":12,"image":542,"tags":543,"tagsFa":544,"views":105},"بکاپ‌گیری در DirectAdmin؛ آموزش کامل و ساده(بیمه عمر سایت شما!)","directadmin-backup-complete-guide","با چند کلیک از سایتت بکاپ بگیر و خیالت را راحت کن.",{"name":274,"avatar":8,"firstName":275,"lastName":276},"1404-12-15","https://api.dornadevops.com/media/articles/images/directadmin-backup-guide.jpg",[],[],{"id":5,"title":546,"slug":547,"excerpt":548,"content":548,"categoryId":5,"categorySlug":213,"categoryTitle":220,"categoryImage":522,"author":549,"publishedAt":550,"readTime":5,"image":551,"tags":552,"tagsFa":553,"views":105},"نصب Docker بدون تحریم","install-docker-in-iran","نصب آفلاین Docker مخصوص سرورهای داخل ایران",{"name":405,"avatar":8,"firstName":406,"lastName":407},"1404-11-30","https://api.dornadevops.com/media/articles/images/install-docker-iran.png",[],[],null,1788244646057]