Back to Blog

गिटहब और npm के लिए प्रॉक्सी: उन देशों से रिपॉजिटरी और पैकेजों तक पहुँचने का तरीका जहाँ गिटहब ब्लॉक किया गया है या धीमा काम करता है

यदि GitHub अवरुद्ध है या धीमी गति से काम कर रहा है - प्रॉक्सी 10 मिनट में समस्या का समाधान करती है। हम बताते हैं कि बिना VPN के रिपॉजिटरी और npm पैकेजों तक कैसे पहुंच स्थापित करें।

📅April 4, 2026
```html

GitHub अवरुद्ध है, 10-30 सेकंड की देरी से काम कर रहा है या npm install आधे रास्ते में अटक गया है - यह रूस, ईरान, चीन और कई अन्य देशों के डेवलपर्स के लिए एक परिचित स्थिति है। इसका समाधान है, और यह जितना लगता है उससे कहीं अधिक सरल है: सही तरीके से सेट किया गया प्रॉक्सी रिपॉजिटरी, पैकेज और GitHub API तक स्थिर पहुंच प्रदान करता है बिना VPN और बिना अतिरिक्त जटिलताओं के।

क्यों GitHub और npm अवरुद्ध या धीमे होते हैं

प्रॉक्सी सेट करने से पहले, यह समझना महत्वपूर्ण है कि आप वास्तव में किस समस्या का सामना कर रहे हैं। GitHub और npm तक पहुंच में समस्याएँ तीन प्रकार की होती हैं, और प्रत्येक के लिए अलग दृष्टिकोण की आवश्यकता होती है।

राज्य स्तर पर पूर्ण अवरोध

कुछ देश - चीन, ईरान, उत्तर कोरिया, और 2022 से समय-समय पर रूस - DNS या IP स्तर पर GitHub को अवरुद्ध करते हैं। इसका मतलब है कि github.com के लिए अनुरोध या तो बिल्कुल नहीं जाते हैं, या कनेक्शन त्रुटि लौटाते हैं। इस बीच, npm रजिस्ट्री (registry.npmjs.org) सामान्य रूप से काम कर सकती है - या इसे भी अवरुद्ध किया जा सकता है।

कॉर्पोरेट फ़ायरवॉल और नेटवर्क प्रतिबंध

राज्य अवरोध के बिना भी, कॉर्पोरेट नेटवर्क अक्सर बाहरी रिपॉजिटरी तक पहुंच को सीमित करते हैं। यह बैंकों, सरकारी संस्थाओं और बड़े उद्यमों में एक सामान्य प्रथा है: IT विभाग 443 पोर्ट पर आउटगोइंग कनेक्शन को बंद कर देता है या विशेष डोमेन को अवरुद्ध कर देता है। ऐसे नेटवर्क में डेवलपर git clone या npm install बिना किसी बाईपास के नहीं कर सकता।

भौगोलिक कारणों से धीमी गति

तकनीकी रूप से GitHub उपलब्ध है, लेकिन 500 MB के रिपॉजिटरी को क्लोन करने में 40 मिनट लगते हैं, और npm के माध्यम से निर्भरताएँ स्थापित करने में अनंत काल लग जाता है। यह रूटिंग की समस्या है: पैकेज ओवरलोडेड नोड्स या लंबे मार्गों के माध्यम से जाते हैं। अमेरिका या यूरोप में स्थित एक प्रॉक्सी सर्वर मार्ग को छोटा करता है और 3-10 गुना वास्तविक गति में वृद्धि प्रदान करता है।

समझना महत्वपूर्ण है:

प्रॉक्सी इन तीनों समस्याओं का समाधान करती है: अवरोध को बाईपास करती है, अनुमत पोर्ट के माध्यम से ट्रैफ़िक को टनल करती है और भौगोलिक रूप से निकटतम आउटगोइंग नोड के माध्यम से गति में सुधार करती है। इस प्रक्रिया में, प्रॉक्सी विशेष एप्लिकेशन स्तर पर काम करती है - Git, npm, ब्राउज़र - मशीन पर अन्य ट्रैफ़िक को प्रभावित किए बिना।

प्रॉक्सी बनाम VPN: कोड के साथ काम करने के लिए क्या चुनें

कई डेवलपर्स आदतन VPN की ओर बढ़ते हैं। यह समझ में आता है - VPN सेट करने में सरल है और पूरे सिस्टम के लिए तुरंत काम करता है। लेकिन GitHub और npm के साथ काम करने के लिए प्रॉक्सी अक्सर अधिक सुविधाजनक होती है। आइए अंतर को समझते हैं।

मानदंड प्रॉक्सी VPN
ट्रैफ़िक का दायरा केवल विशिष्ट एप्लिकेशन (Git, npm) सिस्टम का पूरा ट्रैफ़िक
CI/CD में सेटअप पर्यावरण चर के माध्यम से, सरल क्लाइंट की स्थापना की आवश्यकता, जटिल
Docker में काम करना ENV के माध्यम से पास किया जाता है, बिना किसी समस्या के विशेषाधिकार मोड की आवश्यकता
गति उच्च (सभी ट्रैफ़िक का एन्क्रिप्शन नहीं) एन्क्रिप्शन के कारण कम
कॉर्पोरेट नेटवर्क के साथ संघर्ष न्यूनतम आवर्ती (IT विभाग द्वारा अवरुद्ध)
सर्वर पर उपयोग env चर के माध्यम से मूल रूप से डेमॉन की स्थापना की आवश्यकता

निष्कर्ष सरल है: यदि आपका कार्य टीम को GitHub और npm तक पहुंच प्रदान करना है, तो प्रॉक्सी को एक बार कॉन्फ़िगरेशन में सेट किया जाता है और यह प्रत्येक मशीन की सिस्टम सेटिंग्स में हस्तक्षेप किए बिना काम करता है। यह CI/CD पाइपलाइनों के लिए विशेष रूप से महत्वपूर्ण है, जहां VPN को भौतिक रूप से स्थापित करना कठिन होता है।

GitHub और npm के लिए कौन सा प्रॉक्सी प्रकार उपयुक्त है

सभी प्रॉक्सी Git और npm के साथ समान रूप से अच्छी तरह से काम नहीं करती हैं। चयन आपकी आवश्यकता पर निर्भर करता है: अवरोध को बाईपास करना, डाउनलोड गति बढ़ाना या कॉर्पोरेट नेटवर्क से काम करना।

HTTP/HTTPS प्रॉक्सी

सबसे सरल विकल्प। Git और npm स्वाभाविक रूप से HTTP प्रॉक्सी का समर्थन करते हैं मानक पर्यावरण चर के माध्यम से। यह अधिकांश कार्यों के लिए उपयुक्त है: रिपॉजिटरी क्लोन करना, पैकेज स्थापित करना, GitHub API के साथ काम करना। यदि आपका प्रॉक्सी प्रदाता HTTP पता प्रदान करता है - तो इससे शुरू करें।

SOCKS5 प्रॉक्सी

अधिक लचीला प्रोटोकॉल, TCP स्तर पर काम करता है। SSH कनेक्शनों सहित किसी भी प्रकार के ट्रैफ़िक का समर्थन करता है (पोर्ट 22)। यदि आप HTTPS के बजाय SSH के माध्यम से Git का उपयोग कर रहे हैं - तो SOCKS5 अधिक पसंदीदा है। Git SOCKS5 को कॉन्फ़िगरेशन में socks5:// पैरामीटर के माध्यम से समर्थन करता है।

रेसिडेंशियल प्रॉक्सी

रेसिडेंशियल प्रॉक्सी वास्तविक घरेलू उपयोगकर्ताओं के IP पते का उपयोग करती हैं। GitHub के लिए यह विशेष रूप से प्रासंगिक है, यदि आप एक ऐसे देश से काम कर रहे हैं जहां कड़ी अवरोधन है: ऐसे IP बहुत कम ही काले सूचियों में आते हैं और सामान्य उपयोगकर्ता ट्रैफ़िक की तरह दिखते हैं। यह उन स्थितियों के लिए उपयुक्त है जब डेटा सेंटर के IP पहले से ही प्रदाता स्तर पर अवरुद्ध हैं।

डेटा सेंटर प्रॉक्सी

डेटा सेंटर प्रॉक्सी अधिकांश डेवलपर्स के लिए सबसे अच्छा विकल्प है। वे रेसिडेंशियल प्रॉक्सी की तुलना में तेज़ हैं, सस्ते हैं और स्थिर कनेक्शन प्रदान करते हैं। यदि GitHub केवल धीमा है, न कि अवरुद्ध - तो अमेरिका या यूरोप में डेटा सेंटर प्रॉक्सी क्लोनिंग और पैकेज डाउनलोड करते समय अधिकतम गति में वृद्धि प्रदान करेगा।

प्रॉक्सी प्रकार गति अवरोधों को बाईपास करना के लिए सबसे अच्छा
डेटा सेंटर HTTP ⭐⭐⭐⭐⭐ मध्यम लोडिंग को तेज करना, npm install
डेटा सेंटर SOCKS5 ⭐⭐⭐⭐⭐ मध्यम SSH के माध्यम से Git, लचीला सेटअप
रेसिडेंशियल ⭐⭐⭐ उच्च कड़ी अवरोधन (ईरान, चीन)
मोबाइल ⭐⭐⭐ बहुत उच्च अधिकतम बाईपास, दुर्लभ मामले

Git के लिए प्रॉक्सी सेटअप: चरण-दर-चरण निर्देश

Git प्रॉक्सी का समर्थन встроенный कॉन्फ़िग और पर्यावरण चर के माध्यम से करता है। हम दोनों तरीकों को दिखाएंगे - उस तरीके को चुनें जो आपके कार्य प्रवाह के लिए अधिक सुविधाजनक हो।

तरीका 1: git config के माध्यम से (सिफारिश की)

यह एक स्थायी सेटिंग है, जो मशीन पर सभी Git ऑपरेशनों पर लागू होती है। टर्मिनल खोलें और निम्नलिखित करें:

# HTTP/HTTPS प्रॉक्सी के लिए
git config --global http.proxy http://username:password@proxy-host:port
git config --global https.proxy http://username:password@proxy-host:port

# SOCKS5 प्रॉक्सी के लिए
git config --global http.proxy socks5://username:password@proxy-host:port
git config --global https.proxy socks5://username:password@proxy-host:port

# यह जांचने के लिए कि सेटिंग्स लागू हुई हैं
git config --global --list | grep proxy

username:password@proxy-host:port को अपने प्रॉक्सी के डेटा से बदलें। यदि प्रॉक्सी बिना प्रमाणीकरण के है - तो username:password@ हटा दें।

तरीका 2: पर्यावरण चर के माध्यम से

अस्थायी उपयोग या स्क्रिप्ट में उपयोग के लिए सुविधाजनक। Git स्वचालित रूप से मानक चर HTTP_PROXY और HTTPS_PROXY को उठाता है:

# Linux / macOS — ~/.bashrc या ~/.zshrc में जोड़ें
export HTTP_PROXY="http://username:password@proxy-host:port"
export HTTPS_PROXY="http://username:password@proxy-host:port"
export NO_PROXY="localhost,127.0.0.1,::1"

# Windows (PowerShell)
$env:HTTP_PROXY="http://username:password@proxy-host:port"
$env:HTTPS_PROXY="http://username:password@proxy-host:port"

# बिना टर्मिनल को पुनः आरंभ किए लागू करें (Linux/macOS)
source ~/.bashrc

केवल GitHub के लिए प्रॉक्सी सेटअप

यदि आप केवल GitHub के लिए अनुरोधों को प्रॉक्सी के माध्यम से भेजना चाहते हैं, न कि सभी रिपॉजिटरी के लिए, तो अनुभागीय सेटिंग का उपयोग करें:

# केवल github.com के लिए प्रॉक्सी
git config --global http.https://github.com.proxy http://username:password@proxy-host:port

# प्रॉक्सी के माध्यम से क्लोनिंग की जांच
git clone https://github.com/username/repo.git

SOCKS5 के माध्यम से SSH के लिए Git

यदि आप SSH के माध्यम से GitHub के साथ काम कर रहे हैं (HTTPS के बजाय), तो सेटअप थोड़ा अलग है। आपको ~/.ssh/config फ़ाइल को संपादित करना होगा:

# ~/.ssh/config

Host github.com
    HostName github.com
    User git
    # Linux/macOS पर nc (netcat) का उपयोग करें
    ProxyCommand nc -X 5 -x proxy-host:port %h %p
    
    # या connect-proxy के माध्यम से (स्थापना की आवश्यकता है)
    # ProxyCommand connect -S proxy-host:port %h %p
    
    # Windows पर Git Bash के माध्यम से
    # ProxyCommand connect -S proxy-host:port %h %p

इसके बाद git clone [email protected]:user/repo.git और git push आदेश स्वचालित रूप से SOCKS5 प्रॉक्सी के माध्यम से जाएंगे।

प्रॉक्सी सेटिंग्स को रीसेट करना

# वैश्विक कॉन्फ़िग से प्रॉक्सी हटाना
git config --global --unset http.proxy
git config --global --unset https.proxy

npm, yarn और pnpm के लिए प्रॉक्सी सेटअप

प्रत्येक पैकेज प्रबंधक के पास प्रॉक्सी सेट करने का अपना तरीका है। हम सभी तीनों - npm, yarn और pnpm - को विशिष्ट आदेशों के साथ समझते हैं।

npm

npm कॉन्फ़िग सेटिंग्स के माध्यम से प्रॉक्सी का समर्थन करता है:

# npm के लिए प्रॉक्सी सेट करना
npm config set proxy http://username:password@proxy-host:port
npm config set https-proxy http://username:password@proxy-host:port

# सेटिंग्स की जांच करें
npm config get proxy
npm config get https-proxy

# परीक्षण: प्रॉक्सी के माध्यम से पैकेज स्थापित करना
npm install lodash

# प्रॉक्सी रीसेट करना
npm config delete proxy
npm config delete https-proxy

सेटिंग्स ~/.npmrc फ़ाइल में सहेजी जाती हैं। आप इसे सीधे संपादित कर सकते हैं:

# ~/.npmrc
proxy=http://username:password@proxy-host:port
https-proxy=http://username:password@proxy-host:port
strict-ssl=false

strict-ssl=false पैरामीटर

यदि प्रॉक्सी SSL ट्रैफ़िक को इंटरसेप्ट करती है (उदाहरण के लिए, कॉर्पोरेट), तो npm प्रमाणपत्र पर शिकायत कर सकता है। strict-ssl=false चेक को बंद कर देता है। इसका उपयोग केवल कॉर्पोरेट नेटवर्क में करें, जहां आप प्रॉक्सी पर भरोसा करते हैं - सार्वजनिक नेटवर्क में यह असुरक्षित है।

Yarn (v1 क्लासिक)

# Yarn क्लासिक (v1)
yarn config set proxy http://username:password@proxy-host:port
yarn config set https-proxy http://username:password@proxy-host:port

# जांचें
yarn config get proxy

# रीसेट करें
yarn config delete proxy
yarn config delete https-proxy

Yarn बेरी (v2+)

# Yarn बेरी पर्यावरण चर का उपयोग करता है
# प्रोजेक्ट की जड़ में .yarnrc.yml में जोड़ें:
httpProxy: "http://username:password@proxy-host:port"
httpsProxy: "http://username:password@proxy-host:port"

# या पर्यावरण चर के माध्यम से
export HTTP_PROXY="http://username:password@proxy-host:port"
export HTTPS_PROXY="http://username:password@proxy-host:port"

pnpm

# pnpm उसी .npmrc का उपयोग करता है जो npm के लिए है
# यदि npm पहले से सेट है तो सेटिंग्स स्वचालित रूप से लागू होती हैं

# या स्पष्ट रूप से pnpm config के माध्यम से
pnpm config set proxy http://username:password@proxy-host:port
pnpm config set https-proxy http://username:password@proxy-host:port

वैकल्पिक: npm रजिस्ट्री के मिरर

यदि npm रजिस्ट्री धीमी है, लेकिन GitHub उपलब्ध है - तो आप मिरर पर स्विच कर सकते हैं। लोकप्रिय विकल्प: Taobao (चीन के लिए), Verdaccio (स्वयं-होस्टेड)। लेकिन मिरर अक्सर पैकेज के संस्करणों में पीछे रह जाते हैं, इसलिए प्रॉक्सी अधिक विश्वसनीय है:

# रजिस्ट्री को मिरर पर स्विच करें (केवल गति के लिए, अवरोधों के लिए नहीं)
npm config set registry https://registry.npmmirror.com

# आधिकारिक रजिस्ट्री पर लौटें
npm config set registry https://registry.npmjs.org

CI/CD में प्रॉक्सी: GitHub Actions, Docker, Jenkins

स्थानीय मशीन पर प्रॉक्सी सेट करना आधा काम है। असली समस्या तब शुरू होती है जब GitHub और npm तक पहुंच को CI/CD पाइपलाइन में सुनिश्चित करना होता है, जो एक अलग नेटवर्क में काम करती है। हम तीन सबसे सामान्य परिदृश्यों पर चर्चा करते हैं।

GitHub Actions

GitHub Actions में प्रॉक्सी को वर्कफ़्लो फ़ाइल में पर्यावरण चर के माध्यम से सेट किया जाता है। अपने रिपॉजिटरी की सेटिंग्स में सीक्रेट्स जोड़ें (Settings → Secrets), फिर उन्हें वर्कफ़्लो में उपयोग करें:

# .github/workflows/build.yml
name: Build

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    
    env:
      HTTP_PROXY: ${{ secrets.PROXY_URL }}
      HTTPS_PROXY: ${{ secrets.PROXY_URL }}
      NO_PROXY: "localhost,127.0.0.1"
    
    steps:
      - uses: actions/checkout@v3
      
      - name: Node.js सेट करें
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      
      - name: npm प्रॉक्सी कॉन्फ़िगर करें
        run: |
          npm config set proxy ${{ secrets.PROXY_URL }}
          npm config set https-proxy ${{ secrets.PROXY_URL }}
      
      - name: निर्भरताएँ स्थापित करें
        run: npm ci

Docker

Docker में प्रॉक्सी दो स्तरों पर आवश्यक है: इमेज बनाने के दौरान (docker build) और कंटेनर के भीतर। ये अलग सेटिंग्स हैं:

# --build-arg के माध्यम से निर्माण के दौरान प्रॉक्सी पास करें
docker build \
  --build-arg HTTP_PROXY=http://user:pass@proxy-host:port \
  --build-arg HTTPS_PROXY=http://user:pass@proxy-host:port \
  -t myapp .

# Dockerfile में प्रॉक्सी के लिए ARG का उपयोग करें
# Dockerfile
ARG HTTP_PROXY
ARG HTTPS_PROXY
ENV HTTP_PROXY=$HTTP_PROXY
ENV HTTPS_PROXY=$HTTPS_PROXY

RUN npm ci

# निर्भरताएँ स्थापित करने के बाद - प्रॉक्सी रीसेट करें (इमेज में न रखें!)
ENV HTTP_PROXY=""
ENV HTTPS_PROXY=""

Docker डेमॉन के लिए वैश्विक प्रॉक्सी सेटिंग (के लिए docker pull):

# /etc/docker/daemon.json
{
  "proxies": {
    "http-proxy": "http://user:pass@proxy-host:port",
    "https-proxy": "http://user:pass@proxy-host:port",
    "no-proxy": "localhost,127.0.0.1"
  }
}

# परिवर्तनों के बाद Docker को पुनः प्रारंभ करें
sudo systemctl restart docker

Jenkins

Jenkins में प्रॉक्सी को एजेंट स्तर पर Jenkinsfile में पर्यावरण चर के माध्यम से या सिस्टम सेटिंग्स में वैश्विक रूप से सेट किया जाता है:

// Jenkinsfile
pipeline {
    agent any
    
    environment {
        HTTP_PROXY  = credentials('proxy-url')
        HTTPS_PROXY = credentials('proxy-url')
        NO_PROXY    = 'localhost,127.0.0.1'
    }
    
    stages {
        stage('Install') {
            steps {
                sh 'npm config set proxy $HTTP_PROXY'
                sh 'npm config set https-proxy $HTTPS_PROXY'
                sh 'npm ci'
            }
        }
        stage('Build') {
            steps {
                sh 'npm run build'
            }
        }
    }
}

आम गलतियाँ और उन्हें कैसे ठीक करें

सही प्रॉक्सी सेटअप के बावजूद, कुछ भी गलत हो सकता है। हमने सबसे सामान्य गलतियों और उनके समाधान को संकलित किया है।

त्रुटि: ECONNREFUSED या Connection refused

प्रॉक्सी प्रतिक्रिया नहीं दे रहा है। कारण: गलत पता या पोर्ट, प्रॉक्सी सर्वर अनुपलब्ध है, क्रेडेंशियल्स की अवधि समाप्त हो गई है।

समाधान: प्रॉक्सी की उपलब्धता की जांच करें:

curl -v --proxy http://user:pass@proxy-host:port https://github.com

त्रुटि: SSL certificate problem / UNABLE_TO_VERIFY_LEAF_SIGNATURE

प्रॉक्सी SSL ट्रैफ़िक को इंटरसेप्ट करती है और अपना प्रमाणपत्र प्रस्तुत करती है, जिसे Git या npm भरोसा नहीं करते।

Git के लिए समाधान:

git config --global http.sslVerify false
# या प्रॉक्सी का रूट प्रमाणपत्र जोड़ें:
git config --global http.sslCAInfo /path/to/proxy-ca.crt

त्रुटि: npm ERR! code ENOTFOUND

npm रजिस्ट्री के DNS नाम को हल नहीं कर सकता। प्रॉक्सी सेट है, लेकिन DNS अनुरोध इसके माध्यम से नहीं जा रहे हैं।

समाधान: HTTP प्रॉक्सी के बजाय SOCKS5 का उपयोग करें - यह DNS अनुरोधों को टनल करता है:

npm config set proxy socks5://user:pass@proxy-host:port
npm config set https-proxy socks5://user:pass@proxy-host:port

त्रुटि: 407 Proxy Authentication Required

प्रॉक्सी प्रमाणीकरण की आवश्यकता है, लेकिन क्रेडेंशियल्स नहीं भेजे गए हैं या गलत भेजे गए हैं।

# सुनिश्चित करें कि URL में लॉगिन और पासवर्ड सही ढंग से एन्कोडेड हैं
# यदि पासवर्ड में विशेष वर्ण हैं (@, :, #) - उन्हें एन्कोड करें:
# @ → %40, : → %3A, # → %23

# उदाहरण: पासवर्ड "p@ss:word" → "p%40ss%3Aword"
npm config set proxy http://user:p%40ss%3Aword@proxy-host:port

Git clone काम करता है, लेकिन git push नहीं

Clone (पढ़ना) और push (लिखना) विभिन्न प्रोटोकॉल का उपयोग कर सकते हैं। सुनिश्चित करें कि प्रॉक्सी HTTP और HTTPS दोनों के लिए सेट है। यदि आप push के लिए SSH का उपयोग कर रहे हैं - तो ~/.ssh/config में अलग सेटिंग की आवश्यकता है जैसा कि ऊपर वर्णित है।

चेकलिस्ट: जांचें कि सब कुछ काम कर रहा है

प्रॉक्सी सेट करने के बाद, सुनिश्चित करें कि सब कुछ सही ढंग से काम कर रहा है, इस चेकलिस्ट के माध्यम से जाएँ।

✅ GitHub और npm के लिए प्रॉक्सी सेटअप चेकलिस्ट

  • प्रॉक्सी उपलब्ध है: curl -v --proxy PROXY_URL https://github.com 200 लौटाता है
  • Git कॉन्फ़िग सेट है: git config --global --list | grep proxy आपका प्रॉक्सी दिखाता है
  • क्लोनिंग परीक्षण: git clone https://github.com/torvalds/linux.git --depth=1 काम करता है
  • npm प्रॉक्सी सेट है: npm config get proxy आपका प्रॉक्सी दिखाता है
  • npm install परीक्षण: npm install lodash सफलतापूर्वक समाप्त होता है
  • यदि आप SSH का उपयोग कर रहे हैं: ssh -T [email protected] स्वागत संदेश लौटाता है
  • CI/CD: पर्यावरण चर सीक्रेट्स में जोड़े गए हैं, पाइपलाइन सफल होती है
  • Docker: docker build --build-arg के साथ नेटवर्क त्रुटियों के बिना समाप्त होता है
  • गति: क्लोनिंग प्रॉक्सी के बिना की तुलना में स्पष्ट रूप से तेज है
  • प्रॉक्सी क्रेडेंशियल्स को कोड में स्पष्ट रूप से नहीं रखा गया है (केवल सीक्रेट्स में)

एक कमांड से त्वरित निदान

यदि कुछ काम नहीं कर रहा है और समस्या कहाँ है यह स्पष्ट नहीं है - इस निदान स्क्रिप्ट को चलाएँ:

#!/bin/bash
# GitHub/npm के लिए प्रॉक्सी निदान

PROXY="http://user:pass@proxy-host:port"

echo "=== 1. GitHub तक सीधा पहुंच ==="
curl -s -o /dev/null -w "%{http_code}" https://github.com && echo " OK" || echo " FAIL"

echo "=== 2. प्रॉक्सी के माध्यम से पहुंच ==="
curl -s -o /dev/null -w "%{http_code}" --proxy "$PROXY" https://github.com && echo " OK" || echo " FAIL"

echo "=== 3. npm रजिस्ट्री तक प्रॉक्सी के माध्यम से पहुंच ==="
curl -s -o /dev/null -w "%{http_code}" --proxy "$PROXY" https://registry.npmjs.org && echo " OK" || echo " FAIL"

echo "=== 4. वर्तमान Git प्रॉक्सी सेटिंग्स ==="
git config --global --list | grep proxy || echo "Git प्रॉक्सी सेट नहीं है"

echo "=== 5. वर्तमान npm प्रॉक्सी सेटिंग्स ==="
npm config get proxy
npm config get https-proxy

निष्कर्ष

GitHub और npm के लिए प्रॉक्सी सेट करना एक कठिन कार्य नहीं है, यदि सही क्रम का पालन किया जाए। आइए संक्षेप में देखें:

  • धीमे GitHub को तेज करने के लिए - अमेरिका या यूरोप में डेटा सेंटर प्रॉक्सी उपयुक्त हैं: वे तेज, स्थिर और सस्ते हैं।
  • अवरोधों को बाईपास करने के लिए - रेसिडेंशियल प्रॉक्सी वास्तविक उपयोगकर्ताओं के IP के साथ अधिकतम विश्वसनीयता प्रदान करती हैं।
  • HTTPS के माध्यम से Git के लिए - Git कॉन्फ़िग में http.proxy सेट करें।
  • SSH के माध्यम से Git के लिए - ~/.ssh/config में ProxyCommand का उपयोग करें।
  • npm/yarn/pnpm के लिए - कॉन्फ़िग या पर्यावरण चर के माध्यम से प्रॉक्सी सेट करें।
  • CI/CD के लिए - प्रॉक्सी डेटा को सीक्रेट्स के माध्यम से पास करें, कोड में हार्डकोड न करें।

एक बार 10-15 मिनट सेटअप में खर्च करके, आप GitHub और npm तक स्थिर पहुंच प्राप्त करते हैं, जो इंटरनेट कनेक्शन की स्थिति या अवरोध नीति पर निर्भर नहीं करती है। टीम धीमी डाउनलोड की प्रतीक्षा में समय बर्बाद करना बंद कर देती है, CI/CD पाइपलाइन बिना नेटवर्क त्रुटियों के गुजरती है, और विभिन्न देशों में डेवलपर्स समान परिस्थितियों में काम करते हैं।

यदि आप सीमित पहुंच वाले देशों से GitHub और npm के साथ काम करने के लिए एक स्थिर प्रॉक्सी की तलाश कर रहे हैं, तो हम डेटा सेंटर प्रॉक्सी पर विचार करने की सिफारिश करते हैं - वे क्लोनिंग रिपॉजिटरी और निर्भरताओं को स्थापित करते समय उच्च गति और कनेक्शन की स्थिरता प्रदान करते हैं। कड़ी अवरोधों वाले क्षेत्रों के लिए रेसिडेंशियल प्रॉक्सी अधिक उपयुक्त हैं - उनके IP लगभग कभी भी प्रतिबंधों के अधीन नहीं आते हैं।

```