Zurück zum Blog

Proxys für GitHub und npm: So greifen Sie auf Repositories und Pakete aus Ländern zu, in denen GitHub blockiert oder langsam ist

Wenn GitHub blockiert oder langsam ist, löst ein Proxy das Problem in 10 Minuten. Wir erklären, wie man den Zugang zu Repositories und npm-Paketen ohne VPN einrichtet.

📅4. April 2026
```html

GitHub ist gesperrt, hat eine Verzögerung von 10–30 Sekunden oder npm install hängt auf halbem Weg – eine vertraute Situation für Entwickler aus Russland, Iran, China und mehreren anderen Ländern. Es gibt eine Lösung, und sie ist einfacher als sie scheint: Ein richtig konfigurierter Proxy bietet stabilen Zugriff auf Repositories, Pakete und die GitHub-API ohne VPN und ohne unnötige Umstände.

Warum GitHub und npm blockiert oder verlangsamt werden

Bevor Sie einen Proxy einrichten, ist es wichtig zu verstehen, womit genau Sie konfrontiert sind. Probleme mit dem Zugriff auf GitHub und npm können drei Arten haben, und jede erfordert einen eigenen Ansatz.

Vollständige Blockierung auf staatlicher Ebene

Eine Reihe von Ländern – China, Iran, Nordkorea und seit 2022 gelegentlich auch Russland – blockiert GitHub auf DNS- oder IP-Ebene. Das bedeutet, dass Anfragen an github.com entweder überhaupt nicht durchkommen oder einen Verbindungsfehler zurückgeben. Das npm-Registry (registry.npmjs.org) kann dabei normal funktionieren – oder ebenfalls blockiert sein.

Unternehmensfirewalls und Netzwerkbeschränkungen

Selbst ohne staatliche Blockierung schränken Unternehmensnetzwerke oft den Zugriff auf externe Repositories ein. Dies ist eine gängige Praxis in Banken, staatlichen Einrichtungen und großen Unternehmen: Die IT-Abteilung blockiert ausgehende Verbindungen zu den Ports 443 oder sperrt bestimmte Domains. Ein Entwickler in einem solchen Netzwerk kann ohne Umgehung git clone oder npm install nicht durchführen.

Langsame Geschwindigkeit aufgrund der Geografie

Technisch ist GitHub zugänglich, aber das Klonen eines 500 MB großen Repositories dauert 40 Minuten, und die Installation von Abhängigkeiten über npm – eine Ewigkeit. Dies ist ein Routing-Problem: Pakete gehen über überlastete Knoten oder lange Routen. Ein Proxy-Server, der in den USA oder Europa steht, verkürzt den Weg und bietet einen echten Geschwindigkeitszuwachs von 3–10 Mal.

Wichtig zu verstehen:

Ein Proxy löst alle drei Probleme: Umgehung der Blockierung, Tunnelung des Traffics über erlaubte Ports und Verbesserung der Geschwindigkeit durch einen geografisch nahen Ausgangsknoten. Dabei arbeitet der Proxy auf der Ebene einer bestimmten Anwendung – Git, npm, Browser – ohne den restlichen Traffic auf dem Gerät zu beeinflussen.

Proxy vs VPN: Was wählen für die Arbeit mit Code

Viele Entwickler greifen aus Gewohnheit zu VPNs. Das ist verständlich – VPNs sind einfach einzurichten und funktionieren sofort für das gesamte System. Aber für die Arbeit mit GitHub und npm ist ein Proxy oft bequemer. Lassen Sie uns den Unterschied klären.

Kriterium Proxy VPN
Traffic-Abdeckung Nur spezifische Anwendung (Git, npm) Der gesamte Traffic des Systems
Einrichtung in CI/CD Über Umgebungsvariablen, einfach Erfordert die Installation eines Clients, kompliziert
Arbeiten in Docker Wird über ENV übergeben, ohne Probleme Erfordert privilegierten Modus
Geschwindigkeit Hoch (keine Verschlüsselung des gesamten Traffics) Niedriger aufgrund der Verschlüsselung
Konflikte mit dem Unternehmensnetzwerk Minimal Häufig (wird von der IT-Abteilung blockiert)
Verwendung auf dem Server Nativ über env-Variablen Erfordert die Installation eines Daemons

Die Schlussfolgerung ist einfach: Wenn Ihr Ziel darin besteht, dem Team Zugriff auf GitHub und npm zu gewähren, wird der Proxy einmal im Konfigurationsfile eingerichtet und funktioniert ohne Eingriffe in die Systemeinstellungen jeder Maschine. Dies ist besonders wichtig für CI/CD-Pipelines, wo es physisch schwierig ist, ein VPN einzurichten.

Welcher Proxy-Typ eignet sich für GitHub und npm

Nicht alle Proxys funktionieren gleich gut mit Git und npm. Die Wahl hängt von Ihrem Ziel ab: Blockierung umgehen, Downloads beschleunigen oder aus einem Unternehmensnetzwerk arbeiten.

HTTP/HTTPS-Proxy

Die einfachste Option. Git und npm unterstützen nativ HTTP-Proxys über Standard-Umgebungsvariablen. Geeignet für die meisten Aufgaben: Klonen von Repositories, Installieren von Paketen, Arbeiten mit der GitHub-API. Wenn Ihr Proxy-Anbieter eine HTTP-Adresse bereitstellt – fangen Sie damit an.

SOCKS5-Proxy

Ein flexiblerer Protokoll, das auf der TCP-Ebene arbeitet. Unterstützt alle Arten von Traffic, einschließlich SSH-Verbindungen zu GitHub (Port 22). Wenn Sie Git über SSH und nicht über HTTPS verwenden – ist SOCKS5 vorzuziehen. Git unterstützt SOCKS5 über den Parameter socks5:// in der Konfiguration.

Residential Proxys

Residential Proxys verwenden IP-Adressen realer Haushaltsnutzer. Für GitHub ist das besonders relevant, wenn Sie aus einem Land mit strengen Blockierungen arbeiten: Solche IPs landen äußerst selten auf schwarzen Listen und sehen aus wie normaler Benutzertraffic. Geeignet für Situationen, in denen Rechenzentrums-IP bereits auf Provider-Ebene blockiert sind.

Rechenzentrums-Proxys

Rechenzentrums-Proxys sind die optimale Wahl für die meisten Entwickler. Sie sind schneller als Residential-Proxys, kostengünstiger und bieten eine stabile Verbindung. Wenn GitHub einfach langsam ist und nicht blockiert ist – wird ein Rechenzentrums-Proxy in den USA oder Europa den maximalen Geschwindigkeitszuwachs beim Klonen und Herunterladen von Paketen bieten.

Proxy-Typ Geschwindigkeit Umgehung von Blockierungen Am besten geeignet für
Rechenzentrum HTTP ⭐⭐⭐⭐⭐ Mittel Beschleunigung von Downloads, npm install
Rechenzentrum SOCKS5 ⭐⭐⭐⭐⭐ Mittel Git über SSH, flexible Konfiguration
Residential ⭐⭐⭐ Hoch Strenge Blockierungen (Iran, China)
Mobil ⭐⭐⭐ Sehr hoch Maximale Umgehung, seltene Fälle

Proxy für Git einrichten: Schritt-für-Schritt-Anleitung

Git unterstützt Proxys über die integrierte Konfiguration und über Umgebungsvariablen. Wir zeigen beide Methoden – wählen Sie die, die für Ihren Arbeitsprozess bequemer ist.

Methode 1: Über git config (empfohlen)

Dies ist eine dauerhafte Einstellung, die auf alle Git-Operationen auf dem Gerät angewendet wird. Öffnen Sie das Terminal und führen Sie aus:

# Für HTTP/HTTPS-Proxy
git config --global http.proxy http://username:password@proxy-host:port
git config --global https.proxy http://username:password@proxy-host:port

# Für SOCKS5-Proxy
git config --global http.proxy socks5://username:password@proxy-host:port
git config --global https.proxy socks5://username:password@proxy-host:port

# Überprüfen, ob die Einstellungen angewendet wurden
git config --global --list | grep proxy

Ersetzen Sie username:password@proxy-host:port durch die Daten Ihres Proxys. Wenn der Proxy ohne Authentifizierung ist – entfernen Sie username:password@.

Methode 2: Über Umgebungsvariablen

Praktisch für die temporäre Nutzung oder in Skripten. Git erfasst automatisch die Standardvariablen HTTP_PROXY und HTTPS_PROXY:

# Linux / macOS – fügen Sie in ~/.bashrc oder ~/.zshrc hinzu
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"

# Anwenden ohne Terminalneustart (Linux/macOS)
source ~/.bashrc

Proxy nur für GitHub einrichten

Wenn Sie nur Anfragen an GitHub über den Proxy leiten möchten und nicht an alle Repositories, verwenden Sie die Abschnittseinstellung:

# Proxy nur für github.com
git config --global http.https://github.com.proxy http://username:password@proxy-host:port

# Überprüfung des Klonens über den Proxy
git clone https://github.com/username/repo.git

Git über SSH über SOCKS5

Wenn Sie mit GitHub über SSH (und nicht über HTTPS) arbeiten, ist die Einrichtung etwas anders. Sie müssen die Datei ~/.ssh/config bearbeiten:

# ~/.ssh/config

Host github.com
    HostName github.com
    User git
    # Unter Linux/macOS verwenden Sie nc (netcat)
    ProxyCommand nc -X 5 -x proxy-host:port %h %p
    
    # Oder über connect-proxy (muss installiert werden)
    # ProxyCommand connect -S proxy-host:port %h %p
    
    # Unter Windows über Git Bash
    # ProxyCommand connect -S proxy-host:port %h %p

Danach werden die Befehle git clone [email protected]:user/repo.git und git push automatisch über den SOCKS5-Proxy geleitet.

Wie man die Proxy-Einstellungen zurücksetzt

# Proxy aus der globalen Konfiguration entfernen
git config --global --unset http.proxy
git config --global --unset https.proxy

Proxy für npm, yarn und pnpm einrichten

Jeder Paketmanager hat seine eigene Methode zur Proxy-Einrichtung. Lassen Sie uns alle drei – npm, yarn und pnpm – mit konkreten Befehlen durchgehen.

npm

npm unterstützt Proxys über die integrierten Konfigurationseinstellungen:

# Proxy für npm einrichten
npm config set proxy http://username:password@proxy-host:port
npm config set https-proxy http://username:password@proxy-host:port

# Einstellungen überprüfen
npm config get proxy
npm config get https-proxy

# Test: Paket über den Proxy installieren
npm install lodash

# Proxy zurücksetzen
npm config delete proxy
npm config delete https-proxy

Die Einstellungen werden in der Datei ~/.npmrc gespeichert. Sie können sie direkt bearbeiten:

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

Parameter strict-ssl=false

Wenn der Proxy SSL-Traffic abfängt (z. B. im Unternehmensnetzwerk), kann npm über das Zertifikat meckern. Der Parameter strict-ssl=false deaktiviert die Überprüfung. Verwenden Sie dies nur im Unternehmensnetzwerk, wo Sie dem Proxy vertrauen – in öffentlichen Netzwerken ist dies unsicher.

Yarn (v1 Classic)

# Yarn Classic (v1)
yarn config set proxy http://username:password@proxy-host:port
yarn config set https-proxy http://username:password@proxy-host:port

# Überprüfen
yarn config get proxy

# Zurücksetzen
yarn config delete proxy
yarn config delete https-proxy

Yarn Berry (v2+)

# Yarn Berry verwendet Umgebungsvariablen
# Fügen Sie in .yarnrc.yml im Stammverzeichnis des Projekts hinzu:
httpProxy: "http://username:password@proxy-host:port"
httpsProxy: "http://username:password@proxy-host:port"

# Oder über Umgebungsvariablen
export HTTP_PROXY="http://username:password@proxy-host:port"
export HTTPS_PROXY="http://username:password@proxy-host:port"

pnpm

# pnpm verwendet dasselbe .npmrc wie npm
# Einstellungen werden automatisch angewendet, wenn npm bereits konfiguriert ist

# Oder explizit über pnpm config
pnpm config set proxy http://username:password@proxy-host:port
pnpm config set https-proxy http://username:password@proxy-host:port

Alternative: Mirrors des npm-Registrys

Wenn das npm-Registry langsam ist, aber GitHub zugänglich ist – können Sie auf ein Mirror umschalten. Beliebte Optionen: Taobao (für China), Verdaccio (selbst gehostet). Aber Mirrors hinken oft bei den Paketversionen hinterher, daher ist ein Proxy zuverlässiger:

# Wechseln Sie das Registry auf ein Mirror (nur zur Beschleunigung, nicht für Blockierungen)
npm config set registry https://registry.npmmirror.com

# Zurück zum offiziellen Registry
npm config set registry https://registry.npmjs.org

Proxy in CI/CD: GitHub Actions, Docker, Jenkins

Die Einrichtung eines Proxys auf dem lokalen Gerät ist nur die halbe Miete. Der echte Schmerz beginnt, wenn Sie Zugriff auf GitHub und npm in einer CI/CD-Pipeline gewährleisten müssen, die in einem isolierten Netzwerk arbeitet. Lassen Sie uns drei der häufigsten Szenarien durchgehen.

GitHub Actions

In GitHub Actions wird der Proxy über Umgebungsvariablen in der Workflow-Datei eingerichtet. Fügen Sie Geheimnisse in den Repository-Einstellungen hinzu (Einstellungen → Geheimnisse), und verwenden Sie sie dann im Workflow:

# .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: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      
      - name: Configure npm proxy
        run: |
          npm config set proxy ${{ secrets.PROXY_URL }}
          npm config set https-proxy ${{ secrets.PROXY_URL }}
      
      - name: Install dependencies
        run: npm ci

Docker

In Docker wird der Proxy auf zwei Ebenen benötigt: beim Erstellen des Images (in docker build) und innerhalb des Containers. Dies sind unterschiedliche Einstellungen:

# Proxy beim Build über --build-arg übergeben
docker build \
  --build-arg HTTP_PROXY=http://user:pass@proxy-host:port \
  --build-arg HTTPS_PROXY=http://user:pass@proxy-host:port \
  -t myapp .

# Im Dockerfile ARG für Proxy verwenden
# Dockerfile
ARG HTTP_PROXY
ARG HTTPS_PROXY
ENV HTTP_PROXY=$HTTP_PROXY
ENV HTTPS_PROXY=$HTTPS_PROXY

RUN npm ci

# Nach der Installation der Abhängigkeiten – Proxy zurücksetzen (nicht im Image speichern!)
ENV HTTP_PROXY=""
ENV HTTPS_PROXY=""

Globale Proxy-Einstellungen für den Docker-Daemon (für 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 nach Änderungen neu starten
sudo systemctl restart docker

Jenkins

In Jenkins wird der Proxy auf der Ebene des Agents über Umgebungsvariablen im Jenkinsfile oder global in den Systemeinstellungen eingerichtet:

// 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'
            }
        }
    }
}

Häufige Fehler und wie man sie behebt

Selbst bei korrekter Proxy-Einrichtung kann etwas schiefgehen. Wir haben die häufigsten Fehler und deren Lösungen zusammengestellt.

Fehler: ECONNREFUSED oder Connection refused

Der Proxy antwortet nicht. Gründe: falsche Adresse oder Port, Proxy-Server nicht erreichbar, abgelaufene Anmeldedaten.

Lösung: Überprüfen Sie die Erreichbarkeit des Proxys mit dem Befehl:

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

Fehler: SSL certificate problem / UNABLE_TO_VERIFY_LEAF_SIGNATURE

Der Proxy fängt SSL-Traffic ab und setzt sein eigenes Zertifikat ein, dem Git oder npm nicht vertrauen.

Lösung für Git:

git config --global http.sslVerify false
# Oder fügen Sie das Root-Zertifikat des Proxys hinzu:
git config --global http.sslCAInfo /path/to/proxy-ca.crt

Fehler: npm ERR! code ENOTFOUND

npm kann den DNS-Namen des Registrys nicht auflösen. Der Proxy ist konfiguriert, aber die DNS-Anfragen gehen nicht darüber.

Lösung: Verwenden Sie SOCKS5 anstelle von HTTP-Proxy – es tunnelt die DNS-Anfragen:

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

Fehler: 407 Proxy Authentication Required

Der Proxy erfordert eine Authentifizierung, aber die Anmeldedaten wurden nicht übermittelt oder wurden falsch übermittelt.

# Stellen Sie sicher, dass Benutzername und Passwort in der URL richtig kodiert sind
# Wenn im Passwort Sonderzeichen (@, :, #) enthalten sind – kodieren Sie sie:
# @ → %40, : → %3A, # → %23

# Beispiel: Passwort "p@ss:word" → "p%40ss%3Aword"
npm config set proxy http://user:p%40ss%3Aword@proxy-host:port

Git clone funktioniert, aber git push nicht

Clone (lesen) und push (schreiben) können unterschiedliche Protokolle verwenden. Stellen Sie sicher, dass der Proxy sowohl für HTTP als auch für HTTPS konfiguriert ist. Wenn Sie SSH für push verwenden – ist eine separate Einstellung in ~/.ssh/config erforderlich, wie oben beschrieben.

Checkliste: Überprüfen, ob alles funktioniert

Nach der Einrichtung des Proxys gehen Sie diese Checkliste durch, um sicherzustellen, dass alles korrekt funktioniert.

✅ Checkliste zur Proxy-Einrichtung für GitHub und npm

  • Proxy verfügbar: curl -v --proxy PROXY_URL https://github.com gibt 200 zurück
  • Git config eingerichtet: git config --global --list | grep proxy zeigt Ihren Proxy
  • Testklon: git clone https://github.com/torvalds/linux.git --depth=1 funktioniert
  • npm-Proxy eingerichtet: npm config get proxy zeigt Ihren Proxy
  • Test npm install: npm install lodash wird erfolgreich abgeschlossen
  • Wenn Sie SSH verwenden: ssh -T [email protected] gibt eine Begrüßung zurück
  • CI/CD: Umgebungsvariablen wurden zu Geheimnissen hinzugefügt, die Pipeline läuft
  • Docker: docker build mit --build-arg wird ohne Netzwerkfehler abgeschlossen
  • Geschwindigkeit: Klonen ist deutlich schneller als ohne Proxy
  • Proxy-Anmeldedaten werden nicht im Klartext im Code gespeichert (nur in Geheimnissen)

Schnelle Diagnose mit einem Befehl

Wenn etwas nicht funktioniert und unklar ist, wo das Problem liegt – führen Sie dieses Diagnoseskript aus:

#!/bin/bash
# Proxy-Diagnose für GitHub/npm

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

echo "=== 1. Direkter Zugriff auf GitHub ==="
curl -s -o /dev/null -w "%{http_code}" https://github.com && echo " OK" || echo " FAIL"

echo "=== 2. Zugriff über Proxy ==="
curl -s -o /dev/null -w "%{http_code}" --proxy "$PROXY" https://github.com && echo " OK" || echo " FAIL"

echo "=== 3. Zugriff auf npm-Registry über Proxy ==="
curl -s -o /dev/null -w "%{http_code}" --proxy "$PROXY" https://registry.npmjs.org && echo " OK" || echo " FAIL"

echo "=== 4. Aktuelle Git-Proxy-Einstellungen ==="
git config --global --list | grep proxy || echo "Git-Proxy nicht eingerichtet"

echo "=== 5. Aktuelle npm-Proxy-Einstellungen ==="
npm config get proxy
npm config get https-proxy

Fazit

Die Einrichtung eines Proxys für GitHub und npm ist keine schwierige Aufgabe, wenn man die richtige Reihenfolge der Schritte kennt. Lassen Sie uns zusammenfassen:

  • Um langsames GitHub zu beschleunigen – eignen sich Rechenzentrums-Proxys in den USA oder Europa: sie sind schnell, stabil und kostengünstig.
  • Um Blockierungen zu umgehen – bieten Residential-Proxys mit IPs realer Nutzer maximale Zuverlässigkeit.
  • Für Git über HTTPS – richten Sie http.proxy in der git config ein.
  • Für Git über SSH – verwenden Sie ProxyCommand in ~/.ssh/config.
  • Für npm/yarn/pnpm – richten Sie den Proxy über die Konfiguration oder Umgebungsvariablen ein.
  • Für CI/CD – übergeben Sie die Proxy-Daten über Geheimnisse, hardcoden Sie sie nicht im Code.

Wenn Sie einmal 10–15 Minuten für die Einrichtung aufwenden, erhalten Sie stabilen Zugriff auf GitHub und npm, unabhängig vom Zustand der Internetverbindung oder der Blockierungspolitik. Das Team hört auf, Zeit mit dem Warten auf langsame Downloads zu verlieren, CI/CD-Pipelines laufen ohne Netzwerkfehler, und Entwickler in verschiedenen Ländern arbeiten unter den gleichen Bedingungen.

Wenn Sie nach einem stabilen Proxy für die Arbeit mit GitHub und npm aus Ländern mit eingeschränktem Zugang suchen, empfehlen wir, Rechenzentrums-Proxys in Betracht zu ziehen – sie bieten hohe Geschwindigkeit und Stabilität der Verbindung, was beim Klonen von Repositories und der Installation von Abhängigkeiten entscheidend ist. Für Regionen mit strengen Blockierungen sind Residential-Proxys besser geeignet – deren IPs fallen praktisch nicht unter Einschränkungen.

```