برنامه‌نویسی در ایران: دو میدانی با موانع!

تا حالا شده وسط یه کدزنی هیجان‌انگیز، یهو با انبوهی از ارورهای تایم‌اوت قرمز تو ترمینال مواجه بشید؟ یا مثلاً وقتی دارید با کلی ذوق یه پروژه جدید رو بالا میارید، نصب یه پکیج ساده اونقدر طول بکشه که کلاً حس و حال برنامه‌نویسی از سرتون بپره؟ متاسفانه، این سناریو برای خیلی از ما برنامه‌نویس‌های ایرانی به یک اتفاق روزمره تبدیل شده. دسترسی محدود به سرورهای جهانی و زیرساخت‌های لازم، کار رو حسابی سخت کرده.


pip install -i https://mirror-pypi.runflare.com/simple django

اما خب، ما برنامه‌نویسیم! کار ما دقیقاً حل کردن مشکلاته، حتی اگه این مشکلات مربوط به محدودیت‌های اینترنتی باشه. اینجاست که پیدا کردن مخازن جایگزین و میرورهای داخلی، از یک ترفند، به یک مهارت اساسی تبدیل میشه. مهارتی که به شما کمک می‌کنه پروژه‌هاتون رو بدون وقفه پیش ببرید و لنگ نمونید.

چالش‌های همیشگی دولوپرها با اینترنت ملی:

همه ما این درد رو کشیدیم که وسط یه کار مهم، ارور docker pull یا مشکل apt-get update اعصابمون رو حسابی بهم بریزه. این خطاها نشونه‌ای واضح از قطع شدن ارتباط ما با دنیای بیرون برنامه‌نویسیه. اما نگران نباشید! راه‌حل‌های بومی و کارآمدی وجود داره که می‌تونید با استفاده از اون‌ها، این موانع رو دور بزنید.

نصب پکیج‌های پایتون نت ملی

کلید حل این مشکل، استفاده از میرورهای داخلی (Mirror) هست. این میرورها، در واقع سرورهای واسطه‌ای هستند که داخل ایران قرار دارن و نسخه‌ای از مخازن اصلی جهانی رو در خودشون نگه می‌دارن. با استفاده از این سرورها، می‌تونید دسترسی به ابزارهایی مثل داکر، پایتون و مخازن لینوکس رو بدون مشکل و با سرعت بالا داشته باشید.

پایتون و میرورهای داخلی: نجات‌بخش پکیج‌ها!

اگه با پایتون کار می‌کنید، حتماً تجربه نصب پکیج‌ها رو در شرایط اینترنتی فعلی دارید. گاهی نصب یک فریم‌ورک مثل جنگو () اونقدر طول می‌کشه که آدم کلاً قید شروع پروژه رو می‌زنه. اما خوشبختانه، میرورهای داخلی مثل ، این مشکل رو حل کردن.

نصب پکیج‌های پایتون با میرور رانفلر:


pip config --user set global.index https://mirror-pypi.runflare.com/simple
pip config --user set global.index-url https://mirror-pypi.runflare.com/simple
pip config --user set global.trusted-host repo.hmirror.ir

برای نصب یک پکیج پایتون مثل django با استفاده از میرور رانفلر، کافیه دستور زیر رو تو ترمینال وارد کنید:

با این کار، پکیج مورد نظر شما خیلی سریع و بدون دردسر از میرور داخلی نصب میشه.

تنظیم پیش‌فرض میرور برای Pip:

اگه می‌خواید همیشه pip از همین میرور داخلی استفاده کنه، می‌تونید اون رو به صورت گلوبال تنظیم کنید. دستورات زیر این کار رو براتون انجام میدن:

حالا دیگه می‌تونید با خیال راحت از دستور pip install django استفاده کنید و ببینید که چطور django بدون نیاز به پروکسی و با سرعت بالا نصب میشه!

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

لینوکس و میرورهای APT در ایران:

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

تنظیم میرور آروان کلاد برای اوبونتو:

برای تغییر آدرس مخازن لینوکس به میرور آروان، کافیه دستور زیر رو تو ترمینال سرورتون اجرا کنید:

بعد از اجرای این دستور، برای به‌روزرسانی لیست پکیج‌ها، apt-get update رو بزنید:

حالا می‌تونید با خیال راحت برنامه‌های مورد نظرتون رو نصب کنید، مثلاً htop:

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

داکر و ایمیج‌ها: راه حلی برای تحریم!

داکر () یکی از ابزارهای ضروری برای دولوپرهاست، اما تحریم‌ها باعث شده دانلود ایمیج‌های داکر هم به یک چالش بزرگ تبدیل بشه. باز هم آروان کلاد با کش‌رجیستری خودش به کمک ما اومده.

دانلود ایمیج داکر با کش‌رجیستری آروان:

به جای اینکه مستقیم اسم ایمیج رو وارد کنید، از آدرس کش‌رجیستری آروان استفاده کنید. مثلاً برای دانلود ایمیج nginx:

Dockerfile اختصاصی Knowxis برای اینترنت ملی:

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

فلاتر و میرور رانفلر: برای موبایل دولوپرها!

محدودیت‌ها فقط برای بک‌اندی‌ها نیست! اگه توسعه‌دهنده موبایل با فلاتر () هستید، حتماً با مشکل flutter pub get و عدم دسترسی به pub.dev آشنایید. رانفلر باز هم راه حلی برای این مشکل ارائه داده.

وقتی شما flutter pub get رو اجرا می‌کنید، فلاتر به صورت پیش‌فرض به سرورهای اصلی گوگل متصل میشه. اما با میرور رانفلر، می‌تونید سیستم رو طوری تنظیم کنید که به جای سرورهای گوگل، از سرور داخلی رانفلر برای دانلود پکیج‌ها استفاده کنه. این کار با تغییر متغیرهای محیطی سیستم انجام میشه.

چگونه میرور فلاتر را تنظیم کنیم؟

برای تنظیم میرور فلاتر، باید متغیر محیطی PUB_HOSTED_URL رو به آدرس میرور رانفلر تغییر بدید. نحوه انجام این کار بسته به سیستم‌عامل شما (ویندوز، مک یا لینوکس) کمی متفاوته. در مستندات رانفلر می‌تونید راهنمای دقیق رو پیدا کنید.

نتیجه‌گیری: با Knowxis همیشه یک قدم جلوترید!

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

سوالات متداول:

چرا استفاده از میرورهای داخلی مهم است؟

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

آیا استفاده از این میرورها امن است؟

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


pip install django

sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirror.arvancloud.ir/ubuntu/|g' /etc/apt/sources.list

apt-get update

apt install htop

docker pull docker.arvancloud.ir/nginx:latest

# Pull official base image from Arvan mirror
FROM docker.arvancloud.ir/python:3.12-slim-bullseye

# Maintainer info - Knowxis
LABEL maintainer="sales@Knowxis"
LABEL website="/courses"

# Set environment variables for Python mirror
ENV PYTHONUNBUFFERED=1 \
    PIP_INDEX_URL=https://mirror-pypi.runflare.com/simple

# Replace Debian mirrors with ArvanCloud
RUN sed -i 's|http://deb.debian.org/debian|http://mirror.arvancloud.ir/debian|g' /etc/apt/sources.list \
 && sed -i 's|http://security.debian.org/debian-security|http://mirror.arvancloud.ir/debian-security|g' /etc/apt/sources.list

# Install Nginx
RUN apt-get update -o Acquire::Check-Valid-Until=false \
    && apt-get install -y nginx \
    && rm -rf /var/lib/apt/lists/*

# Set up work directory for Knowxis project
WORKDIR /Knowxis/app

# Install Python dependencies via internal mirror
COPY ./requirements.txt .
RUN pip install --upgrade pip  \
    && pip install -r requirements.txt 

# Copy project files
COPY ./src .

# Configure Nginx for the project
COPY ./config/nginx.conf /etc/nginx/nginx.conf

# Expose port
EXPOSE 80

# Setup and run entrypoint
COPY ./scripts/entrypoint.sh .
RUN chmod +x ./entrypoint.sh
CMD ["./entrypoint.sh"]

PUB_HOSTED_URL

https://mirror-flutter.runflare.com/pub
دور زدن نت ملی برای برنامه‌نویسان

FLUTTER_STORAGE_BASE_URL

https://mirror-flutter.runflare.com/storage

nano ~/.bashrc

export PUB_HOSTED_URL=https://mirror-flutter.runflare.com/pub

export FLUTTER_STORAGE_BASE_URL=https://mirror-flutter.runflare.com/storage

source ~/.bashrc

docker pull hub.liara.ir/ubuntu