開発ツール別プロキシ設定まとめ — git / apt / npm / pip / Docker / VSCode 対応

社内ネットワークや VPN 環境でプロキシが必要な場合、ツールごとに設定方法がバラバラで毎回調べ直すことがあります。 この記事では コピペですぐ使える コマンドを中心に、主要ツール別の設定方法をまとめます。

目次

  1. シェル環境変数(基本)
  2. git
  3. apt(Ubuntu / Debian)
  4. curl
  5. wget
  6. npm / pnpm / yarn
  7. pip(Python)
  8. Docker
  9. VSCode
  10. Homebrew(macOS)
  11. Go
  12. Rust(cargo)
  13. SSH over proxy
  14. WSL2
  15. まとめ表

プロキシ変数の基本(シェル環境変数)

まず OS レベルの環境変数を設定しておくと、多くのツールがこれを自動参照します。

# ~/.bashrc または ~/.zshrc に追記
export http_proxy="http://proxy.example.com:8080"
export https_proxy="http://proxy.example.com:8080"
export no_proxy="localhost,127.0.0.1,::1,*.local"

# 大文字も設定しておくと安全(ツールによって参照する変数が異なる)
export HTTP_PROXY="$http_proxy"
export HTTPS_PROXY="$https_proxy"
export NO_PROXY="$no_proxy"

設定を反映する:

source ~/.bashrc
# または
source ~/.zshrc

PROXY_URL を自分の環境に合わせて変更してください。 認証が必要な場合は http://user:password@proxy.example.com:8080 の形式を使います。


git

グローバル設定(推奨)

git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy http://proxy.example.com:8080

確認

git config --global --get http.proxy
git config --global --get https.proxy

解除

git config --global --unset http.proxy
git config --global --unset https.proxy

特定ホストだけプロキシを使う

# github.com だけプロキシを通す場合
git config --global http.https://github.com.proxy http://proxy.example.com:8080

~/.gitconfig の直接編集

[http]
    proxy = http://proxy.example.com:8080
[https]
    proxy = http://proxy.example.com:8080

apt(Ubuntu / Debian)

一時的に使う(1コマンドだけ)

sudo http_proxy=http://proxy.example.com:8080 apt update

永続設定

sudo nano /etc/apt/apt.conf.d/01proxy

以下を貼り付け:

Acquire::http::Proxy "http://proxy.example.com:8080";
Acquire::https::Proxy "http://proxy.example.com:8080";

確認・削除

# 確認
cat /etc/apt/apt.conf.d/01proxy

# 削除
sudo rm /etc/apt/apt.conf.d/01proxy

curl

# オプションで指定
curl -x http://proxy.example.com:8080 https://example.com

# または環境変数(前節の http_proxy / https_proxy が使われる)
curl https://example.com

~/.curlrc で永続設定

proxy = http://proxy.example.com:8080

wget

# 一時的
wget -e use_proxy=yes -e http_proxy=http://proxy.example.com:8080 https://example.com

# ~/.wgetrc で永続設定
echo 'use_proxy = on' >> ~/.wgetrc
echo 'http_proxy = http://proxy.example.com:8080' >> ~/.wgetrc
echo 'https_proxy = http://proxy.example.com:8080' >> ~/.wgetrc

npm / pnpm / yarn

npm

npm config set proxy http://proxy.example.com:8080
npm config set https-proxy http://proxy.example.com:8080

# 確認
npm config get proxy

# 解除
npm config delete proxy
npm config delete https-proxy

pnpm

pnpm config set proxy http://proxy.example.com:8080
pnpm config set https-proxy http://proxy.example.com:8080

# 解除
pnpm config delete proxy
pnpm config delete https-proxy

yarn

yarn config set proxy http://proxy.example.com:8080
yarn config set https-proxy http://proxy.example.com:8080

# 解除
yarn config delete proxy
yarn config delete https-proxy

.npmrc の直接編集

proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080

pip(Python)

一時的

pip install requests --proxy http://proxy.example.com:8080

環境変数で設定(http_proxy / https_proxy が使われる)

export http_proxy=http://proxy.example.com:8080
pip install requests

pip.conf で永続設定

mkdir -p ~/.config/pip
nano ~/.config/pip/pip.conf
[global]
proxy = http://proxy.example.com:8080

Docker

Docker デーモン(イメージの pull 時)

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080"
Environment="HTTPS_PROXY=http://proxy.example.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1"

設定を反映:

sudo systemctl daemon-reload
sudo systemctl restart docker

Dockerfile の中でプロキシを使う

ARG HTTP_PROXY
ARG HTTPS_PROXY
ENV http_proxy=$HTTP_PROXY
ENV https_proxy=$HTTPS_PROXY

RUN apt-get update && apt-get install -y curl

ビルド時に渡す:

docker build \
  --build-arg HTTP_PROXY=http://proxy.example.com:8080 \
  --build-arg HTTPS_PROXY=http://proxy.example.com:8080 \
  -t myimage .

Docker Desktop(Mac / Windows)

Settings → Resources → Proxies から GUI で設定できます。


VSCode

settings.json で設定

Ctrl+Shift+POpen User Settings (JSON) を開いて追記:

{
  "http.proxy": "http://proxy.example.com:8080",
  "http.proxyStrictSSL": false
}

http.proxyStrictSSL: false は自己署名証明書を使う社内プロキシで必要になる場合があります。

拡張機能のインストールがプロキシで詰まる場合

VSCode は起動時にシェルの環境変数を引き継ぐため、ターミナルで環境変数を設定してから起動すると解決することがあります:

export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
code .

Homebrew(macOS)

export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
brew install <formula>

Homebrew はシェルの環境変数をそのまま参照するため、専用の設定コマンドはありません。


Go(go get)

go env -w GOPROXY=https://proxy.golang.org,direct
go env -w GONOSUMCHECK=*

# HTTP プロキシは環境変数で
export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080

Rust(cargo)

~/.cargo/config.toml に追記

[http]
proxy = "http://proxy.example.com:8080"

または環境変数:

export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
cargo install <crate>

SSH(git over SSH でプロキシを通す)

社内プロキシ経由で GitHub に SSH 接続したい場合は ~/.ssh/config に以下を追記します。

Host github.com
    HostName github.com
    User git
    ProxyCommand nc -x proxy.example.com:8080 %h %p

nc(netcat)の代わりに connect-proxy を使う場合:

sudo apt install connect-proxy
Host github.com
    ProxyCommand connect-proxy -H proxy.example.com:8080 %h %p

WSL2 でホスト側のプロキシを使う

WSL2 からホスト(Windows)のプロキシを使う場合、ホスト IP を動的に取得して設定します。

# ホスト IP の取得
HOST_IP=$(ip route show | grep -i default | awk '{ print $3}')

export http_proxy="http://${HOST_IP}:8080"
export https_proxy="http://${HOST_IP}:8080"

~/.bashrc~/.zshrc に書いておくと毎回自動設定されます。


まとめ

ツール設定方法設定ファイル
シェル全体環境変数 http_proxy~/.bashrc / ~/.zshrc
gitgit config --global http.proxy~/.gitconfig
apt/etc/apt/apt.conf.d/01proxy/etc/apt/apt.conf.d/
npm / pnpmnpm config set proxy~/.npmrc
pippip.conf または環境変数~/.config/pip/pip.conf
Dockersystemd drop-in/etc/systemd/system/docker.service.d/
VSCodesettings.jsonUser Settings
cargoconfig.toml~/.cargo/config.toml

基本方針:まず http_proxy / https_proxy 環境変数をシェルに設定し、それでも動かないツールだけ個別に設定するのが効率的です。 認証付きプロキシの場合はパスワードに特殊文字が含まれると URL エンコードが必要になるので注意してください(例:@%40)。