Ngiêm cấm sử đụng PROXY và VPS vào mục đích trái pháp luật bạn sẽ phải chịu toàn bộ trách nhiệm trước pháp luật khi sử dụng dịch vụ của chúng tôi tks!
conda proxy: cấu hình .condarc proxy_servers và sửa lỗi

conda proxy: cấu hình .condarc proxy_servers và sửa lỗi

Chuyên viên Kỹ thuật ProxyVN 08-12-2026 Đang tính... phút đọc

conda proxy là phần cấu hình giúp lệnh conda tải chỉ mục kênh và gói qua một máy chủ proxy, thay vì ra thẳng Internet. Bài này đi từ tệp .condarc, khóa proxy_servers, thứ tự ưu tiên với biến môi trường tới các lỗi thường gặp. ProxyVN đọc mã nguồn kết nối của conda và chạy lại cùng cơ chế với proxy tự dựng có nhật ký để kiểm từng tình huống.

conda proxy là gì và khi nào cần

Lệnh conda tải những gì qua mạng

Mỗi lần chạy conda install, conda create hay conda update, công cụ này tải tệp repodata.json của từng kênh để biết gói nào có phiên bản nào. Sau khi giải xong phụ thuộc, conda tải tiếp các tệp gói .conda hoặc .tar.bz2. Cả hai loại tải này đều là request HTTPS tới máy chủ của kênh, thường là repo.anaconda.com hoặc conda.anaconda.org.

Khi máy nằm sau tường lửa công ty, trong mạng chỉ cho ra ngoài qua proxy, hoặc khi anh em cần đi qua một IP cố định đã được kênh nội bộ cho phép, conda phải biết địa chỉ proxy. Không khai báo, lệnh sẽ dừng ở bước Collecting package metadata với lỗi kết nối.

Ranh giới với bài pip proxy

Bài pip proxy đã có một mục ngắn nhắc tới .condarc. Bài này đi sâu hơn ở phía conda. Nội dung gồm khóa theo host, ai thắng khi biến môi trường và .condarc cùng có giá trị, cách conda hỏi mật khẩu khi gặp 407, chứng chỉ của proxy công ty và chế độ offline. Phần cấu hình pip trong cùng môi trường conda chỉ nhắc lại ở mức cần thiết.

Phạm vi kiểm thử

Máy lab không cài conda. Thay vào đó, bài đọc mã nguồn tệp session.py của conda trên nhánh main ngày 29/10/2026. Lớp CondaSession kế thừa Session của thư viện requests, gọi self.proxies.update(context.proxy_servers) rồi gắn bộ thử lại. Bài dựng lại đúng thao tác này với Python 3.12.10, requests 2.34.2, urllib3 2.8.0 và một proxy HTTP có tài khoản, ghi nhật ký từng request. Kết quả là hành vi của tầng requests mà conda dùng, chưa phải lần chạy conda thật.

Cấu hình conda proxy trong tệp .condarc

Vị trí tệp .condarc

Tệp cấu hình người dùng nằm ở thư mục nhà: C:\Users\tên\.condarc trên Windows, ~/.condarc trên Linux và macOS. Mỗi môi trường còn có thể có .condarc riêng trong thư mục môi trường. Lệnh conda config --show-sources liệt kê mọi tệp đang được đọc, theo thứ tự.

Nên sửa tệp bằng lệnh conda config thay vì gõ tay, để tránh lỗi thụt lề YAML. Với khóa dạng bảng như proxy_servers, lệnh có cú pháp riêng ở mục dưới.

Cú pháp proxy_servers theo scheme

Theo trang cấu hình của conda, mặc định conda lấy proxy từ biến HTTP_PROXY, HTTPS_PROXY hoặc từ hệ thống. Khi có khóa proxy_servers, giá trị trong khóa được dùng. Mẫu tối thiểu:

proxy_servers:
  http: http://user1:p%40ss%232026@203.0.113.10:8080
  https: http://user1:p%40ss%232026@203.0.113.10:8080

Hai chữ http và https ở bên trái là loại request được chuyển qua proxy, không phải giao thức của proxy. Phần URL bên phải mới nói proxy nói giao thức gì. Gói proxy HTTP thông thường thì cả hai dòng đều bắt đầu bằng http://. Đây là chỗ nhiều người gõ nhầm thành https:// ở dòng thứ hai.

Gần như mọi kênh conda đều chạy HTTPS, nên dòng https là dòng quan trọng nhất. Chỉ khai báo dòng http thì conda vẫn ra thẳng khi tải repodata từ repo.anaconda.com.

Đặt bằng lệnh conda config

Lệnh conda config hỗ trợ khóa con bằng dấu chấm:

conda config --set proxy_servers.http http://user1:p%40ss%232026@203.0.113.10:8080
conda config --set proxy_servers.https http://user1:p%40ss%232026@203.0.113.10:8080
conda config --show proxy_servers

Lệnh cuối in lại giá trị để anh em soát chính tả. Mật khẩu sẽ hiện rõ trên màn hình và nằm trong tệp .condarc ở dạng văn bản. Mục bảo mật phía dưới bàn cách tránh.

Khóa theo host

Khóa proxy_servers theo scheme và host

Khóa proxy_servers theo scheme và host

Trang cấu hình nêu thêm dạng khóa scheme://hostname, áp cho đúng một máy chủ:

proxy_servers:
  'https://conda.nhom-noi-bo.vn': 'http://10.10.1.10:3128'
  https: http://user1:p%40ss%232026@203.0.113.10:8080

Request tới conda.nhom-noi-bo.vn đi qua proxy nội bộ 10.10.1.10, các request HTTPS khác đi qua proxy thứ hai. Requests chọn khóa cụ thể theo host trước khóa chung theo scheme. Trong lab, khóa http://shop.test dẫn request tới shop.test qua proxy, còn request tới một host khác không khớp khóa nào thì đi thẳng.

Khóa theo host so khớp đúng tên, không theo đuôi tên miền. Khai báo https://anaconda.org sẽ không áp cho conda.anaconda.org.

Thứ tự ưu tiên của conda proxy với biến môi trường

Điều tài liệu nói

Trang cấu hình viết rằng proxy_servers ghi đè hành vi mặc định là đọc biến môi trường. Đọc riêng câu đó, nhiều người hiểu .condarc luôn thắng HTTP_PROXY.

Điều lab cho thấy ở tầng requests

CondaSession không tắt trust_env của requests. Trong requests 2.34.2, khi gửi request, proxy lấy từ biến môi trường được gộp vào phần cấu hình của từng request, và phần này được ưu tiên hơn session.proxies. Lab chạy bốn ca để kiểm:

Bảng: Điều lab cho thấy ở tầng requests

Ca

proxy_servers

Biến môi trường

Kết quả

1

proxy đúng

không có

200, nhật ký proxy có user1

5

không có

HTTP_PROXY proxy đúng

200, đi qua proxy

6

proxy đúng

HTTP_PROXY proxy chết

ProxyError tới cổng chết

7

proxy chết

HTTP_PROXY proxy đúng

200, đi qua proxy đúng

Ca 6 và 7 cho thấy khi biến môi trường cùng scheme có giá trị, request đi theo biến môi trường, không theo session.proxies. Nếu conda dùng session đúng như mã nguồn hiện tại, một biến HTTPS_PROXY cũ còn sót lại trong máy sẽ thắng proxy_servers trong .condarc.

Bài chưa chạy conda thật để xác nhận kết luận này trên từng phiên bản conda. Cách an toàn là chọn một nơi khai báo duy nhất. Trước khi chạy conda, kiểm cả hai nơi:

echo %HTTP_PROXY% %HTTPS_PROXY%
conda config --show proxy_servers

Trên Linux dùng env | grep -i proxy. Có giá trị ở cả hai mà không trùng nhau là nguồn của nhiều lỗi khó hiểu. Kiểu lỗi hay gặp nhất: anh em đổi sang gói proxy mới, sửa .condarc cẩn thận, nhưng conda vẫn báo không kết nối được tới địa chỉ proxy cũ. Nguyên nhân là biến HTTPS_PROXY đặt từ lâu trong biến môi trường người dùng của Windows hoặc trong tệp .bashrc vẫn còn đó.

NO_PROXY không bỏ qua proxy_servers

Ca 10 đặt proxy_servers trỏ tới proxy chết và NO_PROXY=shop.test. Request vẫn bị gửi tới proxy chết. NO_PROXY chỉ ảnh hưởng tới proxy lấy từ biến môi trường, không gỡ proxy đã gắn vào session. Muốn một kênh nội bộ đi thẳng trong khi kênh khác qua proxy, dùng khóa theo host trỏ tới proxy nội bộ, hoặc bỏ proxy_servers và chuyển sang cặp HTTPS_PROXY với NO_PROXY. Bài No_proxy là gì giải thích cú pháp danh sách loại trừ.

Mật khẩu trong conda proxy

Mã hóa ký tự đặc biệt

Trang cấu hình dặn phải mã hóa phần trăm các ký tự đặc biệt trong mật khẩu. Lab dùng mật khẩu p@ss#2026. Ca 3 ghi thẳng mật khẩu vào URL, requests đọc phần sau dấu @ đầu tiên làm tên máy chủ và báo không kết nối được tới máy tên ss. Ca 1 ghi p%40ss%232026 thì chạy đúng.

Bảng mã hay gặp: @ thành %40, # thành %23, : thành %3A, / thành %2F, dấu cách thành %20, % thành %25. Python có sẵn hàm để đổi:

python -c "from urllib.parse import quote; print(quote('p@ss#2026', safe=''))"

Bài định dạng proxy có thêm cách chuyển từ dạng ip:port:user:pass sang URL.

conda hỏi tài khoản khi gặp 407

Khi proxy trả 407 mà URL chưa có tài khoản, hàm handle_407 trong session.py gọi input để hỏi tên đăng nhập và getpass để hỏi mật khẩu, rồi gửi lại request với tiêu đề Proxy-Authorization dạng Basic. Ca 2 của lab, proxy không có tài khoản, nhận đúng 407 làm điểm vào của hàm này.

Trên máy cá nhân, lời hỏi này tiện. Trong CI hay tác vụ lập lịch không có bàn phím, lời hỏi làm lệnh treo hoặc lỗi vì không đọc được đầu vào. Với môi trường tự động, đưa tài khoản vào URL từ biến bí mật, hoặc dùng gói proxy xác thực bằng IP. Bài xác thực proxy bằng IP whitelist hay user password so sánh hai cách.

Dùng biến môi trường trong .condarc

Biến môi trường thắng tệp cấu hình

Biến môi trường thắng tệp cấu hình

Conda mở rộng biến môi trường trong một số khóa, gồm proxy_servers. Có thể để .condarc không chứa mật khẩu:

proxy_servers:
  https: http://${PROXY_USER}:${PROXY_PASS_ENC}@203.0.113.10:8080

PROXY_PASS_ENC phải là mật khẩu đã mã hóa phần trăm. Tệp .condarc lúc này có thể đưa vào kho mã chung mà không lộ bí mật. Bài chưa chạy thử dòng này, cần kiểm lại trên phiên bản conda đang dùng bằng conda config --show proxy_servers.

Lỗi SSL khi dùng conda proxy

Proxy HTTP không phải proxy HTTPS

Ca 11 khai báo https://user1:[email protected]:8971 cho một proxy HTTP thường. Requests cố bắt tay TLS với chính proxy và báo ProxyError, nhật ký proxy không ghi request nào hợp lệ. Ca 12 đổi lại tiền tố http:// thì request tới example.com đi qua lệnh CONNECT, trả 200.

Nhà cung cấp proxy thương mại hầu hết bán proxy HTTP, nghĩa là kết nối từ máy tới proxy không mã hóa, còn nội dung tới kênh conda vẫn được mã hóa trong đường hầm CONNECT. Tiền tố https:// chỉ dùng khi nhà cung cấp ghi rõ proxy nhận TLS.

Proxy công ty chặn và thay chứng chỉ

Một số proxy công ty mở gói HTTPS để kiểm tra, rồi ký lại bằng chứng chỉ nội bộ. Conda báo lỗi CERTIFICATE_VERIFY_FAILED vì chứng chỉ không do tổ chức đáng tin ký. Trang cấu hình cho ba lựa chọn với ssl_verify:

ssl_verify: truststore
ssl_verify: C:\certs\cong-ty.pem
ssl_verify: false

Giá trị truststore dùng kho chứng chỉ của hệ điều hành, cần conda 23.9.0 trở lên và gói truststore. Mã nguồn báo lỗi rõ nếu thiếu gói này. Giá trị đường dẫn trỏ tới tệp PEM của công ty. Giá trị false tắt kiểm tra, tài liệu không khuyên dùng vì mở đường cho tấn công xen giữa.

Proxy thương mại thông thường không thay chứng chỉ. Gặp lỗi chứng chỉ khi dùng proxy mua ngoài thì nên dừng lại kiểm tra, không tắt ssl_verify cho xong. Bài ERR_PROXY_CERTIFICATE_INVALID có phần nhận biết proxy chặn TLS.

Chứng chỉ cho pip trong cùng môi trường

pip không đọc ssl_verify của conda. Khi môi trường có cả gói conda và gói pip, cần đặt cert cho pip riêng, hoặc dùng biến REQUESTS_CA_BUNDLE. Đây là lý do một môi trường cài được numpy bằng conda nhưng lại lỗi chứng chỉ khi pip install requests.

Kênh nội bộ và chế độ offline của conda proxy

Kênh nội bộ thay cho proxy

Kho gói nội bộ thay cho proxy

Kho gói nội bộ thay cho proxy

Nhiều công ty không cho máy ra Internet qua proxy, mà dựng một kho nhân bản như Artifactory, Nexus hay Anaconda Server. Lúc này không cần proxy_servers, chỉ cần đổi kênh:

channel_alias: https://conda.nhom-noi-bo.vn/
default_channels:
  - https://conda.nhom-noi-bo.vn/main
channels:
  - defaults

Trên Windows, channel_alias phải có dấu gạch chéo ở cuối như tài liệu ghi. Kho nhân bản tự đi ra Internet, máy người dùng chỉ nói chuyện với kho. Cách này dễ quản lý hơn đặt proxy trên từng máy.

Kết hợp kênh nội bộ và proxy

Khi cần cả hai, ví dụ kênh nội bộ đi thẳng còn conda-forge qua proxy, dùng khóa theo host:

proxy_servers:
  'https://conda.nhom-noi-bo.vn': 'http://10.10.1.10:3128'
  https: http://user1:p%40ss%232026@203.0.113.10:8080

Requests không có giá trị đặc biệt để nói một host đi thẳng trong proxy_servers. Cách trên dẫn host nội bộ qua proxy nội bộ. Nếu kênh nội bộ không cần proxy nào, chuyển sang HTTPS_PROXY kèm NO_PROXY như đã nói ở phần thứ tự ưu tiên.

offline khi không có mạng

Mã nguồn cho thấy khi offline bật, conda gắn bộ điều hợp báo lỗi cho mọi request http, https, ftp và s3, chỉ còn file:// hoạt động. Bật offline khi muốn một lệnh không chạm mạng:

conda install --offline numpy

Lệnh này chỉ thành công khi gói đã có trong thư mục pkgs. Nó hữu ích khi kiểm xem lỗi nằm ở proxy hay ở bộ giải phụ thuộc: nếu offline cài được, mạng hoặc proxy là thủ phạm.

Cài Miniconda khi máy phải đi qua conda proxy

Tải bộ cài

Bộ cài Miniconda hay Anaconda là tệp tải từ trang của Anaconda, chưa liên quan gì tới cấu hình conda. Trình duyệt hoặc lệnh tải dùng proxy của chính nó. Trên Windows, trình duyệt thường theo proxy hệ thống. Trên Linux, lệnh wget hay curl đọc biến https_proxy. Bài wget proxy có cú pháp đầy đủ cho bước này.

Bộ cài chứa sẵn các gói nền, nên bước cài đặt không cần mạng. Lỗi mạng chỉ xuất hiện từ lệnh conda đầu tiên sau khi cài, thường là conda update conda hoặc conda create.

Đặt proxy ngay sau khi cài

Thứ tự hợp lý: cài xong, mở Anaconda Prompt hoặc terminal mới, chạy hai lệnh conda config đặt proxy_servers, chạy conda config --show proxy_servers để soát, rồi mới chạy lệnh cài gói đầu tiên. Làm ngược lại, lệnh đầu tiên sẽ treo ở bước tải repodata khá lâu trước khi báo lỗi, do bộ thử lại của conda.

Nếu máy dùng nhiều tài khoản Windows, mỗi tài khoản có .condarc riêng ở thư mục nhà. Tác vụ chạy bằng tài khoản dịch vụ sẽ không đọc .condarc của tài khoản đang đăng nhập. Muốn áp cho mọi người dùng, đặt tệp .condarc ở thư mục cài conda, nơi conda đọc như cấu hình hệ thống.

conda proxy trên Linux, macOS và WSL

Biến môi trường trong shell

Trên Linux và macOS, biến đặt bằng export chỉ sống trong phiên shell hiện tại. Đặt trong ~/.bashrc hay ~/.zshrc thì mọi phiên sau đều có. Đây cũng là nơi biến cũ hay bị quên, gây ra tình huống biến môi trường thắng .condarc đã nói ở trên. Mỗi khi đổi proxy, mở tệp này kiểm lại.

Dùng sudo để chạy conda thường không cần thiết và còn làm mất biến môi trường, vì sudo mặc định xóa phần lớn biến. Cài conda vào thư mục người dùng để tránh phải dùng sudo.

WSL và proxy của Windows

Conda chạy trong WSL là conda của Linux, không đọc proxy của Windows. Biến môi trường hoặc .condarc phải đặt bên trong WSL. Khi proxy chạy ngay trên máy Windows, địa chỉ 127.0.0.1 trong WSL 2 không trỏ về Windows, cần dùng địa chỉ của máy chủ Windows theo cấu hình mạng của WSL.

Kiểm tra conda proxy bằng nhật ký

Đọc log của conda

Thêm -v hoặc -vv vào lệnh để conda in thêm thông tin, ví dụ conda search numpy -vv. Đoạn in ra có URL repodata được tải và mã trạng thái. Nếu thấy URL đúng mà kết nối báo ProxyError, lỗi nằm ở địa chỉ hoặc tài khoản proxy. Nếu báo ConnectTimeout tới repo.anaconda.com, request đang đi thẳng, proxy chưa được áp.

Đối chiếu phía proxy

Cách chắc nhất là xem nhật ký của proxy. Với proxy tự dựng, mỗi request HTTPS hiện thành một dòng CONNECT tới tên máy chủ kênh cùng tên tài khoản. Lab ghi một dòng như sau cho ca 12:

{"proxy": "http", "method": "CONNECT", "target": "example.com:443", "auth_ok": true, "user_sent": "user1"}

Với proxy mua ngoài, nhà cung cấp thường có bảng thống kê lưu lượng. Chạy conda search một lần rồi xem lưu lượng có tăng không là cách đối chiếu nhanh.

Script kiểm nhanh trước khi chạy conda

Đoạn Python dưới mô phỏng cách conda tạo session. Chạy bằng chính Python trong môi trường base để dùng đúng bản requests mà conda dùng:

import os, requests
proxy = os.environ["PROXY_URL"]
s = requests.Session()
s.proxies.update({"http": proxy, "https": proxy})
r = s.get("https://repo.anaconda.com/pkgs/main/noarch/repodata.json", stream=True, timeout=20)
print(r.status_code, r.headers.get("Content-Type"))
print("Biến môi trường:", {k: v for k, v in os.environ.items() if "proxy" in k.lower()})

Đặt PROXY_URL bằng URL đã mã hóa mật khẩu. Kết quả 200 và kiểu application/json nghĩa là đường proxy dùng được. Dòng cuối in các biến proxy đang tồn tại, giúp phát hiện biến cũ có thể ghi đè. Tham số stream=True để không tải hết tệp repodata vài chục MB.

Bộ ca nên chạy với conda thật

Lab của bài dừng ở tầng requests. Khi có máy cài conda, chạy thêm các ca sau và ghi lại phiên bản conda bằng conda --version:

  • Ca A: chỉ proxy_servers đúng, không có biến môi trường. Chạy conda search numpy, xem nhật ký proxy có CONNECT tới repo.anaconda.com.
  • Ca B: proxy_servers trỏ tới cổng không có proxy, HTTPS_PROXY trỏ tới proxy đúng. Nếu lệnh thành công, biến môi trường đang thắng như lab.
  • Ca C: đảo lại, proxy_servers đúng và HTTPS_PROXY sai. Nếu lệnh lỗi, kết luận giống ca B.
  • Ca D: proxy_servers không có tài khoản, proxy cần tài khoản. Lệnh phải hỏi username và password.
  • Ca E: bật offline, cài một gói đã có trong pkgs. Nhật ký proxy phải trống.

Năm ca này đủ để biết cách conda trên máy anh em xử lý proxy, trước khi đưa cấu hình vào máy build hay máy của cả nhóm.

Lỗi hay gặp với conda proxy

Bảng tra

Bảng: Bảng tra

Thông báo

Nguyên nhân thường gặp

Cách xử lý

ProxyError, Cannot connect to proxy

Sai địa chỉ, cổng hoặc proxy chết

Thử bằng curl -x, kiểm cổng

407 rồi hỏi username

URL thiếu tài khoản

Thêm tài khoản đã mã hóa vào URL

Không phân giải được tên máy lạ

Mật khẩu có @ chưa mã hóa

Đổi @ thành %40

SSLError khi tới proxy

Dùng https:// cho proxy HTTP

Đổi thành http://

CERTIFICATE_VERIFY_FAILED

Proxy công ty thay chứng chỉ

ssl_verify trỏ tới PEM hoặc truststore

ConnectTimeout tới repo.anaconda.com

Proxy chưa được áp

Kiểm dòng https trong proxy_servers

Lệnh đi proxy cũ dù đã sửa .condarc

Biến HTTPS_PROXY cũ còn tồn tại

Xóa biến hoặc dùng một nơi khai báo

Mã 407 nói chung có thêm nguyên nhân phía nhà cung cấp, tổng hợp trong bài sửa lỗi 407 Proxy Authentication Required.

CondaHTTPError và thử lại

CondaSession cấu hình bộ thử lại của urllib3 với các mã 413, 429, 500, 502, 503, 504, số lần lấy từ remote_max_retries. Khi proxy chập chờn, conda tự thử lại trước khi báo lỗi CondaHTTPError. Thấy lệnh chạy rất lâu rồi mới lỗi, nên kiểm proxy trước khi tăng số lần thử.

Lỗi từ requests mang tên khác

Một số lỗi hiện dưới dạng ngoại lệ của requests, không phải thông báo riêng của conda. Bài requests.exceptions.ProxyError giải thích từng biến thể của ngoại lệ này, áp dụng được cho conda vì cùng tầng thư viện.

conda proxy với environment.yml có mục pip

Hai công cụ trong một lệnh

Tệp environment.yml thường có mục dependencies cho gói conda và một mục con pip cho gói chỉ có trên PyPI. Lệnh conda env create đọc tệp, cài gói conda trước, rồi gọi pip để cài phần còn lại. Phần conda dùng proxy_servers hoặc biến môi trường, phần pip dùng cấu hình của pip hoặc biến môi trường.

Kết quả hay gặp: phần conda cài xong, rồi lệnh báo lỗi ở bước Installing pip dependencies. Lỗi này không phải do conda, mà do pip chưa có proxy. Với tệp environment.yml có mục pip, dùng biến HTTPS_PROXY là cách gọn nhất vì cả hai cùng đọc.

Kênh conda-forge và kênh mặc định

Kênh conda-forge nằm ở conda.anaconda.org, kênh mặc định nằm ở repo.anaconda.com. Hai tên máy chủ khác nhau. Nếu dùng khóa theo host, phải khai báo đủ cả hai, nếu không một nửa số request sẽ đi thẳng. Proxy có danh sách tên miền được phép, như proxy công ty, cũng phải mở cả hai tên miền này cùng các tên miền của kênh nội bộ.

Khi dùng gói conda thương mại có điều khoản riêng, đọc kỹ điều khoản sử dụng kênh mặc định của Anaconda. Proxy không thay đổi điều khoản đó, chỉ đổi đường đi của request.

conda proxy trong CI và máy chủ

Truyền qua biến bí mật

Trên GitHub Actions, GitLab CI hay Jenkins, tạo biến bí mật chứa URL proxy đã mã hóa, rồi xuất ra HTTPS_PROXY ngay trước bước cài môi trường. Không ghi proxy_servers vào .condarc của kho mã. Như vậy chỉ có một nơi khai báo, tránh xung đột thứ tự ưu tiên đã thấy trong lab.

Bài proxy trong GitHub Actions có cách đặt biến cho từng bước và che giá trị trong nhật ký.

Docker image có conda

Khi build image từ miniconda, truyền proxy bằng tham số build, không viết vào Dockerfile, để mật khẩu không nằm lại trong lớp image. Sau khi cài xong, không cần giữ proxy trong image chạy thật. Bài proxy Docker phân biệt proxy cho bước build với proxy cho container.

mamba và conda bản mới

Từ conda 23.10, bộ giải libmamba là mặc định. Bộ giải chỉ làm việc trên dữ liệu đã tải, còn việc tải vẫn đi qua tầng kết nối của conda. Công cụ mamba hay micromamba chạy độc lập dùng thư viện tải riêng và tệp cấu hình riêng, bài này chưa kiểm hai công cụ đó.

Chọn proxy cho conda proxy

Proxy HTTP là đủ

Conda chỉ cần một proxy HTTP hỗ trợ CONNECT tới cổng 443. Không cần SOCKS5. Nếu gói proxy có cả hai cổng, dùng cổng HTTP cho conda để tránh phải cài thêm thư viện SOCKS. Bài proxy HTTP và SOCKS5 giải thích khác biệt.

IP cố định cho kênh nội bộ

Khi kênh nội bộ hay kho nhân bản chỉ cho phép một số IP truy cập, proxy có IP tĩnh giúp mọi máy chạy CI đi ra cùng một địa chỉ đã được cho phép. Proxy xoay đổi IP liên tục không hợp với kiểu kiểm soát này.

ProxyVN có proxy dân cư tĩnh, datacenter và proxy xoay, hỗ trợ HTTP và SOCKS5, cấp tài khoản user và mật khẩu hoặc xác thực theo IP. Cần một IP cố định cho máy build, anh em có thể mua proxy Việt Nam tại trang chủ ProxyVN rồi chạy script kiểm nhanh ở trên trước khi đưa vào .condarc.

Proxy không thay quyền truy cập kênh

Proxy chỉ đổi đường đi của request. Kênh cần token, như kênh thương mại hay kênh nội bộ có xác thực, vẫn cần token đúng. Proxy không tăng giới hạn tải của anh em với kênh và không cho vào kênh mà tài khoản không có quyền.

Câu hỏi thường gặp về conda proxy

conda có đọc proxy của Windows không?

Trang cấu hình nói mặc định conda lấy proxy từ biến môi trường hoặc từ hệ thống. Trên Windows, requests đọc cài đặt proxy trong registry khi không có biến môi trường. Muốn kết quả ổn định, khai báo rõ trong .condarc hoặc biến môi trường thay vì dựa vào cài đặt hệ thống.

Đặt proxy cho conda có làm pip đi proxy không?

Không. pip có cấu hình riêng trong pip.ini hoặc pip.conf. Chỉ khi dùng biến HTTPS_PROXY thì cả hai cùng đọc. Chi tiết cho pip nằm ở bài pip proxy đã nhắc.

Có thể dùng SOCKS5 cho conda không?

Requests hỗ trợ socks5h:// khi cài thêm gói PySocks vào môi trường base. Bài chưa kiểm với conda thật. Nếu gói proxy có cổng HTTP, dùng cổng HTTP đơn giản hơn.

Làm sao gỡ cấu hình proxy?

Chạy conda config --remove-key proxy_servers, rồi xóa biến HTTP_PROXY và HTTPS_PROXY nếu đã đặt. Kiểm lại bằng conda config --show proxy_servers, kết quả trống là xong.

Checklist conda proxy

Checklist conda proxy

Checklist conda proxy

Trước khi chạy lệnh cài

  • Mật khẩu đã mã hóa phần trăm, không còn @, #, : trần.
  • Cả dòng http và https trong proxy_servers, URL proxy bắt đầu bằng http://.
  • Chỉ một nơi khai báo: .condarc hoặc biến môi trường, không để cả hai khác nhau.
  • Kiểm env để chắc không còn biến proxy cũ.
  • Chạy script kiểm nhanh, nhận 200 từ repo.anaconda.com.
  • Proxy công ty thay chứng chỉ thì đặt ssl_verify bằng tệp PEM hoặc truststore.

Sau khi chạy

  • Xem nhật ký hoặc lưu lượng proxy có tăng.
  • Không để mật khẩu trần trong .condarc của kho mã chung.
  • Gỡ proxy_servers khi không còn dùng để tránh lỗi về sau.

Giới hạn của bài

Kết luận về thứ tự ưu tiên rút ra từ lab requests 2.34.2 dựng lại theo mã nguồn conda, chưa chạy conda thật. Chưa kiểm mamba, micromamba, SOCKS5 và proxy NTLM của Windows. Khi nâng cấp conda, nên chạy lại ca proxy_servers đúng và HTTP_PROXY sai để xem kết quả có đổi.

conda proxy và những điều cần nhớ

conda proxy đặt trong khóa proxy_servers của .condarc, theo scheme hoặc theo host, URL proxy bắt đầu bằng http:// cho proxy HTTP và mật khẩu phải mã hóa. Biến môi trường có thể thắng .condarc ở tầng requests, nên chỉ giữ một nơi khai báo và kiểm bằng nhật ký trước khi tin kết quả. Cần proxy HTTP ổn định cho conda proxy, liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam.

TIN TỨC LIÊN QUAN