I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+1 234 567 890

Email

contact@botble.com

Website

https://botble.com

Address

123 Main Street, New York, NY 10001

Social

Web Development

راه اندازی Repository Manager

توی شرایط تحریم و مشکلات موجود راه اندازی یک Repository Manager تا حدی لازم و ضروری هست

راه اندازی Repository Manager

تنظیم سرور پروکسی کش برای npm, Docker, pip, و Composer

این راهنما شما را در فرآیند تنظیم یک سرور پروکسی کش برای مدیریت‌کننده‌های بسته‌های مختلف با استفاده از Nexus Repository Manager یاری می‌کند.

چرا از پروکسی کش استفاده کنیم؟

  • دانلود سریع‌تر: پس از دانلود یک بسته، از کش محلی سرور شما ارائه می‌شود که زمان دانلود را برای درخواست‌های بعدی به طور چشمگیری کاهش می‌دهد.

  • کاهش پهنای باند: ترافیک کمتری به مخازن خارجی ارسال می‌شود.

  • دسترسی آفلاین: حتی اگر مخازن خارجی به طور موقت در دسترس نباشند، به بسته‌ها دسترسی خواهید داشت.

  • امنیت بهبود یافته: کنترل متمرکز بر روی بسته‌های مصرفی را فراهم می‌کند.

  • تکرارپذیری ساخت: اطمینان حاصل کنید که ساخت‌های شما از نسخه‌های دقیق و یکسان وابستگی‌ها استفاده می‌کنند.

مروری بر Nexus Repository Manager

Nexus Repository Manager به عنوان یک مرکز اصلی برای تمام وابستگی‌های شما عمل می‌کند. این ابزار از موارد زیر پشتیبانی می‌کند:

  • مخازن پروکسی (Proxy Repositories): اجزا را از مخازن راه دور (مانند رجیستری عمومی npm، Docker Hub، PyPI، Packagist) کش می‌کند.

  • مخازن میزبانی شده (Hosted Repositories): اجزای خصوصی خودتان را ذخیره می‌کند.

  • مخازن گروهی (Group Repositories): چندین مخزن پروکسی و میزبانی شده را در یک URL واحد ترکیب می‌کند و پیکربندی کلاینت را ساده‌تر می‌سازد.

مرحله 1: نصب و راه‌اندازی Nexus Repository Manager

نکسوس را می‌توان به روش‌های مختلفی نصب کرد. آسان‌ترین راه برای بسیاری از محیط‌ها از طریق داکر (Docker) است.

استفاده از داکر (توصیه شده برای راه‌اندازی سریع):

docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3

  • -d : کانتینر را در حالت جدا شده (در پس‌زمینه) اجرا می‌کند.

  • --name=nexus : نامی را برای کانتینر شما برای ارجاع آسان اختصاص می‌دهد.

  • -p 8081:8081 : پورت 8081 کانتینر (رابط کاربری/API نکسوس) را به پورت 8081 هاست نگاشت می‌کند.

  • -v nexus-data:/nexus-data : یک ولوم داکر به نام ( gitea-data ) برای ذخیره‌سازی دائمی ایجاد می‌کند، بنابراین داده‌های کش شده شما حتی در صورت راه‌اندازی مجدد کانتینر از بین نمی‌روند.

  • --restart=always : تضمین می‌کند که کانتینر Gitea در صورت توقف یا راه‌اندازی مجدد داکر دیمون، به طور خودکار مجدداً راه‌اندازی می‌شود.

  • sonatype/nexus3 : ایمیج رسمی داکر نکسوس 3.

پس از شروع، نکسوس ممکن است چند دقیقه طول بکشد تا راه‌اندازی شود. می‌توانید از طریق http://localhost:8081 به رابط کاربری دسترسی پیدا کنید (اگر یک ماشین راه دور است، localhost را با IP سرور خود جایگزین کنید).

ورود اولیه:

  • نام کاربری پیش‌فرض admin است.

  • برای یافتن رمز عبور اولیه ادمین، باید لاگ‌های نکسوس را بررسی کنید:

    docker exec -it nexus cat /nexus-data/admin.password
    
    

    (اگر از داکر استفاده نمی‌کنید، NEXUS_DATA/admin.password را که دایرکتوری داده‌های شماست، بررسی کنید).

  • پس از اولین ورود، نکسوس از شما می‌خواهد رمز عبور ادمین را تغییر دهید.

مرحله 2: پیکربندی مخازن پروکسی نکسوس

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

  1. به نکسوس وارد شوید (پیش‌فرض: admin / <initial_password_from_log> ).

  2. به Server Administration & Configuration (نماد چرخ‌دنده در نوار کناری سمت چپ) -> Repositories بروید.

  3. روی "Create repository" کلیک کنید.

  4. "Type" مناسب را برای هر یک انتخاب کنید (مثلاً npm (proxy) ، docker (proxy) ، pypi (proxy) ، composer (proxy) ).

الف. پروکسی npm

  • Type: npm (proxy)

  • Name: npm-central (یا نام مشابه)

  • Remote URL: https://registry.npmjs.org/

  • مطمئن شوید که Blob Store تنظیم شده است (مثلاً default ).

  • روی "Create repository" کلیک کنید.

ب. پروکسی Docker

  • Type: docker (proxy)

  • Name: docker-hub-proxy (یا نام مشابه)

  • Remote URL: https://registry-1.docker.io/

  • Docker V1 API Enabled: true (اگر نیاز به پشتیبانی از کلاینت‌های قدیمی‌تر داکر دارید، اگرچه به طور کلی دیگر نیازی نیست)

  • Docker Hub Bearer Token Realm: اگر با مشکلات احراز هویت با Docker Hub مواجه شدید، این گزینه را علامت بزنید.

  • HTTP Port: یک پورت اختصاصی اختصاص دهید (مثلاً 8082 برای HTTP، یا 8083 برای HTTPS اگر بعداً SSL را پیکربندی کنید). برای سادگی، فرض می‌کنیم 8082 .

  • روی "Create repository" کلیک کنید.

ج. پروکسی PyPI (pip)

  • Type: pypi (proxy)

  • Name: pypi-central (یا نام مشابه)

  • Remote URL: https://pypi.org/simple/

  • مطمئن شوید که Blob Store تنظیم شده است.

  • روی "Create repository" کلیک کنید.

د. پروکسی Composer (Packagist)

  • Type: composer (proxy)

  • Name: packagist-proxy (یا نام مشابه)

  • Remote URL: https://packagist.org

  • مطمئن شوید که Blob Store تنظیم شده است.

  • روی "Create repository" کلیک کنید.

مرحله 3: پیکربندی ابزارهای کلاینت برای استفاده از نکسوس

اکنون که نکسوس راه‌اندازی شده است، باید به مدیریت‌کننده‌های بسته خود بگویید که نکسوس را به عنوان منبع خود استفاده کنند. your_nexus_server_ip و پورت‌ها را با جزئیات واقعی سرور نکسوس خود جایگزین کنید.

الف. پیکربندی npm

می‌توانید npm را به صورت سراسری یا برای هر پروژه پیکربندی کنید.

رفع ERR_PNPM_FETCH_401 و دریافت توکن احراز هویت برای npm/pnpm:

خطای 401 Unauthorized نشان می‌دهد که پروکسی npm نکسوس شما احتمالاً به احراز هویت نیاز دارد. در اینجا نحوه ایجاد توکن احراز هویت و پیکربندی pnpm/npm برای استفاده از آن آورده شده است.

دو روش اصلی برای دریافت و استفاده از توکن احراز هویت با مخازن npm نکسوس وجود دارد:

روش 1: ایجاد دستی توکن با رمزگذاری Base64 (برای فیلد _auth )

این روش زمانی مفید است که نیاز دارید فیلد _auth را به طور صریح در فایل .npmrc خود تنظیم کنید.

  1. ایجاد یک کاربر در نکسوس با دسترسی:

    • به عنوان admin وارد نمونه Nexus Repository Manager خود شوید.

    • به Server Administration & Configuration (نماد چرخ‌دنده) -> Security -> Users بروید.

    • روی "Create user" کلیک کنید.

    • جزئیات را پر کنید (مثلاً username ، password ، email ).

    • در بخش "Roles"، مطمئن شوید که کاربر دارای نقش‌هایی باشد که مجوزهای nx-repository-view-*-*-read را برای مخزن پروکسی npm که ایجاد کرده‌اید (مثلاً npm-central ) اعطا کند. یک نقش رایج nx-anonymous برای دسترسی فقط خواندنی است، یا می‌توانید یک نقش سفارشی ایجاد کنید.

    • روی "Create user" کلیک کنید.

  2. ایجاد یک توکن با رمزگذاری Base64:

    • ترمینال خود را باز کرده و دستور زیر را اجرا کنید. your_nexus_username و your_nexus_password را با اعتبارنامه‌های کاربری که در نکسوس ایجاد کرده‌اید جایگزین کنید.

      echo -n 'your_nexus_username:your_nexus_password' | openssl base64
      
      
    • این دستور یک رشته با رمزگذاری base64 (مثلاً eW91cl9uZXh1c191c2VybmFtZTp5b3VyX25leHVzX3Bhc3N3b3JkCg== ) خروجی می‌دهد. این مقدار برای توکن _auth شما است.

  3. پیکربندی pnpm/npm با توکن (سراسری یا پروژه-خاص):

    • پیکربندی سراسری: (این بر تمام پروژه‌های npm/pnpm برای کاربر فعلی تأثیر می‌گذارد)

      npm config set registry https://repo.noly.ir/repository/npm/
      npm config set //repo.noly.ir/repository/npm/:_auth="YOUR_GENERATED_BASE64_TOKEN"
      npm config set //repo.noly.ir/repository/npm/:always-auth true
      
      
    • پیکربندی پروژه-خاص: (این خطوط را به یک فایل .npmrc در ریشه پروژه خود اضافه کنید)

      registry=https://repo.noly.ir/repository/npm/
      //repo.noly.ir/repository/npm/:_auth="YOUR_GENERATED_BASE64_TOKEN"
      //repo.noly.ir/repository/npm/:always-auth=true
      
      
    • به یاد داشته باشید که YOUR_GENERATED_BASE64_TOKEN را با توکن واقعی که ایجاد کرده‌اید جایگزین کنید.

    • توجه: مطمئن شوید که از https استفاده می‌کنید، اگر نکسوس شما برای آن پیکربندی شده است، همانطور که repo.noly.ir پیشنهاد می‌کند.

روش 2: استفاده از npm login (اگر "npm Bearer Token Realm" نکسوس فعال است)

این اغلب ساده‌ترین روش است اگر نمونه نکسوس شما از آن پشتیبانی می‌کند و "npm Bearer Token Realm" فعال است (که معمولاً برای مخازن npm در نکسوس 3 به طور پیش‌فرض فعال است).

  1. فعال کردن npm Bearer Token Realm (مدیر نکسوس):

    • به عنوان admin وارد نکسوس شوید.

    • به Server Administration & Configuration (نماد چرخ‌دنده) -> Security -> Realms بروید.

    • مطمئن شوید که "npm Bearer Token Realm" از "Available Realms" به "Active Realms" منتقل شده و ذخیره شده است.

  2. اجرای npm login از ترمینال شما:

    • ترمینال خود را باز کرده و اجرا کنید:

      npm login --registry=https://repo.noly.ir/repository/npm/
      
      

      اگر از npm CLI نسخه 9 یا بالاتر استفاده می‌کنید، ممکن است لازم باشد --auth-type=legacy را اضافه کنید:

      npm login --registry=https://repo.noly.ir/repository/npm/ --auth-type=legacy
      
      
    • هنگامی که از شما خواسته شد، نام کاربری، رمز عبور و ایمیل کاربر نکسوس که ایجاد کرده‌اید (از روش 1، مرحله 1) را وارد کنید.

    • در صورت موفقیت، npm به طور خودکار یک _authToken (یا _auth ) را در فایل .npmrc سراسری کاربر شما ( ~/.npmrc در لینوکس/macOS، یا %USERPROFILE%\.npmrc در ویندوز) ذخیره می‌کند. این توکن، یک توکن امن‌تر و تولید شده توسط نکسوس است، نه اعتبارنامه‌های رمزگذاری شده Base64 شما.

بررسی‌های نهایی:

  • بررسی محتوای .npmrc : پس از هر یک از روش‌ها، می‌توانید فایل .npmrc خود را بررسی کنید تا مطمئن شوید خطوط registry و _auth (یا _authToken ) به درستی برای URL نکسوس شما اضافه شده‌اند.

  • بررسی لاگ‌های نکسوس: اگر همچنان با مشکل مواجه هستید، لاگ‌های سرور نکسوس را برای پیام‌های خطای دقیق‌تر بررسی کنید. این لاگ‌ها اغلب می‌توانند دلایل خاص‌تری برای خطاهای احراز هویت ارائه دهند.

    • اگر از داکر استفاده می‌کنید: docker logs nexus (یا نام کانتینر نکسوس شما).

ب. پیکربندی Docker

اگر از HTTP (نه HTTPS) استفاده می‌کنید، باید داکر دیمون را پیکربندی کنید تا پروکسی داکر نکسوس شما را به عنوان یک رجیستری ناامن بشناسد.

1. پیکربندی Docker Daemon (در ماشینی که Docker را اجرا می‌کند): فایل /etc/docker/daemon.json (لینوکس) را ویرایش یا ایجاد کنید یا از طریق تنظیمات Docker Desktop (ویندوز/macOS) پیکربندی کنید.

{
  "insecure-registries": [
    "your_nexus_server_ip:8082" # از پورتی استفاده کنید که برای پروکسی Docker در Nexus پیکربندی کرده‌اید (مثلاً 8082)
  ]
}

مهم: پس از اعمال تغییرات، Docker daemon را مجدداً راه‌اندازی کنید.

  • لینوکس: sudo systemctl restart docker

  • ویندوز/macOS: Docker Desktop را از منوی آن مجدداً راه‌اندازی کنید.

2. کشیدن ایمیج‌ها: اکنون، وقتی یک ایمیج را می‌کشید (pull)، می‌توانید آن را با URL رجیستری نکسوس خود پیشوند کنید:

docker pull your_nexus_server_ip:8082/nginx:latest

داکر ابتدا پروکسی نکسوس شما را بررسی می‌کند. اگر ایمیج در آنجا یافت نشد، نکسوس آن را از Docker Hub (یا از منبع راه دور پیکربندی شده) کشیده و کش می‌کند.

پروکسی کردن Docker Hub (بدون پیشوند صریح): برای اینکه ایمیج‌های Docker Hub بدون پیشوند صریح مستقیماً از نکسوس کشیده شوند، معمولاً باید یک Reverse Proxy (مانند Nginx) را جلوی نکسوس روی پورت 443 (HTTPS پیش‌فرض) تنظیم کنید و داکر را برای استفاده از آن به عنوان یک Mirror پیکربندی کنید. این یک روش پیشرفته‌تر است. برای تنظیمات ساده‌تر، پیشوند صریح همانطور که در بالا ذکر شد کافی است.

ج. پیکربندی PyPI (pip)

می‌توانید pip را با استفاده از یک فایل pip.conf (لینوکس/macOS) یا pip.ini (ویندوز) سراسری، یا از طریق متغیرهای محیطی پیکربندی کنید.

1. ایجاد/ویرایش فایل پیکربندی pip:

  • لینوکس/macOS: ~/.config/pip/pip.conf یا /etc/pip.conf

  • ویندوز: %APPDATA%\pip\pip.ini

[global]
index-url = http://your_nexus_server_ip:8081/repository/pypi-central/simple/
trusted-host = your_nexus_server_ip # فقط در صورت استفاده از HTTP و اعتماد به نکسوس محلی شما مورد نیاز است

2. استفاده از متغیر محیطی (موقت):

export PIP_INDEX_URL=http://your_nexus_server_ip:8081/repository/pypi-central/simple/
# در صورت نیاز:
export PIP_TRUSTED_HOST=your_nexus_server_ip

اکنون، pip install some-package از پروکسی نکسوس شما استفاده خواهد کرد.

د. پیکربندی Composer

می‌توانید Composer را به صورت سراسری یا برای هر پروژه با استفاده از فایل composer.json پیکربندی کنید.

پروژه-خاص (توصیه شده - در composer.json ): یک بخش repositories به composer.json خود اضافه کنید:

{
    "name": "your-project/your-app",
    "description": "My PHP application",
    "repositories": [
        {
            "type": "composer",
            "url": "http://your_nexus_server_ip:8081/repository/packagist-proxy/"
        }
    ],
    "require": {
        "monolog/monolog": "^2.0"
    }
}

  • composer install یا composer update را اجرا کنید. Composer ابتدا پروکسی نکسوس شما را بررسی خواهد کرد.

پیکربندی سراسری: می‌توانید یک متغیر محیطی سراسری COMPOSER_HOME را تنظیم کرده و یک فایل config.json در آن قرار دهید، یا پیکربندی سراسری Composer را مستقیماً تغییر دهید.

composer config -g repositories.packagist-proxy composer http://your_nexus_server_ip:8081/repository/packagist-proxy/

این دستور مخزن را به ~/.composer/config.json اضافه می‌کند.

نتیجه‌گیری

با دنبال کردن این مراحل، یک سرور پروکسی کش فعال با استفاده از Nexus Repository Manager برای npm، Docker، pip و Composer خواهید داشت. به یاد داشته باشید که IPها و پورت‌های پیش‌فرض را با جزئیات واقعی سرور خود جایگزین کنید. این تنظیمات با فراهم کردن دسترسی سریع‌تر، قابل اعتمادتر و کنترل‌شده‌تر به وابستگی‌های بسته شما، روند توسعه را به طور قابل توجهی بهبود می‌بخشد.

cache proxy, repository manager
3 min read
فوریه 05, 2025
By Hossein Jarrahi
Share

Leave a comment

Your email address will not be published. Required fields are marked *

Related posts

ژوئن 21, 2025 • 1 min read
استفاده از nexus repository در حالت آفلاین

استفاده از نکسوز ریپازیتوری توی سرور های آفلاین یه نکته مهم داره که به...

ژوئن 21, 2025 • 1 min read
راه اندازی Cloudpanel در حالت آفلاین

وقتی میخوایم کلودپنل رو روی یک سرور آفلاین بالا بیاریم احتمالا یکسری م...