توی شرایط تحریم و مشکلات موجود راه اندازی یک Repository Manager تا حدی لازم و ضروری هست
این راهنما شما را در فرآیند تنظیم یک سرور پروکسی کش برای مدیریتکنندههای بستههای مختلف با استفاده از Nexus Repository Manager یاری میکند.
دانلود سریعتر: پس از دانلود یک بسته، از کش محلی سرور شما ارائه میشود که زمان دانلود را برای درخواستهای بعدی به طور چشمگیری کاهش میدهد.
کاهش پهنای باند: ترافیک کمتری به مخازن خارجی ارسال میشود.
دسترسی آفلاین: حتی اگر مخازن خارجی به طور موقت در دسترس نباشند، به بستهها دسترسی خواهید داشت.
امنیت بهبود یافته: کنترل متمرکز بر روی بستههای مصرفی را فراهم میکند.
تکرارپذیری ساخت: اطمینان حاصل کنید که ساختهای شما از نسخههای دقیق و یکسان وابستگیها استفاده میکنند.
Nexus Repository Manager به عنوان یک مرکز اصلی برای تمام وابستگیهای شما عمل میکند. این ابزار از موارد زیر پشتیبانی میکند:
مخازن پروکسی (Proxy Repositories): اجزا را از مخازن راه دور (مانند رجیستری عمومی npm، Docker Hub، PyPI، Packagist) کش میکند.
مخازن میزبانی شده (Hosted Repositories): اجزای خصوصی خودتان را ذخیره میکند.
مخازن گروهی (Group Repositories): چندین مخزن پروکسی و میزبانی شده را در یک URL واحد ترکیب میکند و پیکربندی کلاینت را سادهتر میسازد.
نکسوس را میتوان به روشهای مختلفی نصب کرد. آسانترین راه برای بسیاری از محیطها از طریق داکر (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
را که دایرکتوری دادههای شماست، بررسی کنید).
پس از اولین ورود، نکسوس از شما میخواهد رمز عبور ادمین را تغییر دهید.
هنگامی که نکسوس در حال اجرا است و به عنوان admin
وارد شدهاید، مخازن پروکسی را برای هر مدیریتکننده بسته پیکربندی میکنید.
به نکسوس وارد شوید (پیشفرض: admin
/ <initial_password_from_log>
).
به Server Administration & Configuration (نماد چرخدنده در نوار کناری سمت چپ) -> Repositories بروید.
روی "Create repository" کلیک کنید.
"Type" مناسب را برای هر یک انتخاب کنید (مثلاً npm (proxy)
، docker (proxy)
، pypi (proxy)
، composer (proxy)
).
Type: npm (proxy)
Name: npm-central
(یا نام مشابه)
Remote URL: https://registry.npmjs.org/
مطمئن شوید که Blob Store تنظیم شده است (مثلاً default
).
روی "Create repository" کلیک کنید.
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" کلیک کنید.
Type: pypi (proxy)
Name: pypi-central
(یا نام مشابه)
Remote URL: https://pypi.org/simple/
مطمئن شوید که Blob Store تنظیم شده است.
روی "Create repository" کلیک کنید.
Type: composer (proxy)
Name: packagist-proxy
(یا نام مشابه)
Remote URL: https://packagist.org
مطمئن شوید که Blob Store تنظیم شده است.
روی "Create repository" کلیک کنید.
اکنون که نکسوس راهاندازی شده است، باید به مدیریتکنندههای بسته خود بگویید که نکسوس را به عنوان منبع خود استفاده کنند. your_nexus_server_ip
و پورتها را با جزئیات واقعی سرور نکسوس خود جایگزین کنید.
میتوانید npm را به صورت سراسری یا برای هر پروژه پیکربندی کنید.
رفع ERR_PNPM_FETCH_401
و دریافت توکن احراز هویت برای npm/pnpm:
خطای 401 Unauthorized
نشان میدهد که پروکسی npm نکسوس شما احتمالاً به احراز هویت نیاز دارد. در اینجا نحوه ایجاد توکن احراز هویت و پیکربندی pnpm/npm برای استفاده از آن آورده شده است.
دو روش اصلی برای دریافت و استفاده از توکن احراز هویت با مخازن npm نکسوس وجود دارد:
_auth
)این روش زمانی مفید است که نیاز دارید فیلد _auth
را به طور صریح در فایل .npmrc
خود تنظیم کنید.
ایجاد یک کاربر در نکسوس با دسترسی:
به عنوان 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" کلیک کنید.
ایجاد یک توکن با رمزگذاری Base64:
ترمینال خود را باز کرده و دستور زیر را اجرا کنید. your_nexus_username
و your_nexus_password
را با اعتبارنامههای کاربری که در نکسوس ایجاد کردهاید جایگزین کنید.
echo -n 'your_nexus_username:your_nexus_password' | openssl base64
این دستور یک رشته با رمزگذاری base64 (مثلاً eW91cl9uZXh1c191c2VybmFtZTp5b3VyX25leHVzX3Bhc3N3b3JkCg==
) خروجی میدهد. این مقدار برای توکن _auth
شما است.
پیکربندی 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
پیشنهاد میکند.
npm login
(اگر "npm Bearer Token Realm" نکسوس فعال است)این اغلب سادهترین روش است اگر نمونه نکسوس شما از آن پشتیبانی میکند و "npm Bearer Token Realm" فعال است (که معمولاً برای مخازن npm در نکسوس 3 به طور پیشفرض فعال است).
فعال کردن npm Bearer Token Realm (مدیر نکسوس):
به عنوان admin
وارد نکسوس شوید.
به Server Administration & Configuration (نماد چرخدنده) -> Security -> Realms بروید.
مطمئن شوید که "npm Bearer Token Realm" از "Available Realms" به "Active Realms" منتقل شده و ذخیره شده است.
اجرای 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
(یا نام کانتینر نکسوس شما).
اگر از 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 پیکربندی کنید. این یک روش پیشرفتهتر است. برای تنظیمات سادهتر، پیشوند صریح همانطور که در بالا ذکر شد کافی است.
میتوانید 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.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ها و پورتهای پیشفرض را با جزئیات واقعی سرور خود جایگزین کنید. این تنظیمات با فراهم کردن دسترسی سریعتر، قابل اعتمادتر و کنترلشدهتر به وابستگیهای بسته شما، روند توسعه را به طور قابل توجهی بهبود میبخشد.
Your email address will not be published. Required fields are marked *