Chocolatey proxy: choco config, biến môi trường và installer
Chocolatey proxy là phần cấu hình để lệnh choco tải package từ kho qua một máy chủ proxy, dùng khi máy Windows nằm sau tường lửa hoặc cần đi ra bằng một IP cố định. Chỗ dễ sai nhất không nằm ở lệnh choco, mà ở installer chạy bên trong package. ProxyVN đọc tài liệu và mã nguồn của Chocolatey CLI, chạy lại đoạn tải tệp của Chocolatey với proxy có nhật ký để chỉ ra phần nào đi proxy, phần nào không.
Chocolatey proxy: tác vụ cụ thể và ranh giới với bài đã có
Chocolatey tải những gì
Một lệnh choco install gồm hai lượt tải khác nhau. Lượt thứ nhất do chính choco làm: tìm package trong kho, tải tệp .nupkg về thư mục tạm. Tệp này chứa metadata và script chocolateyInstall.ps1, thường không chứa phần mềm. Lượt thứ hai do script trong package làm: script gọi hàm trợ giúp như Install-ChocolateyPackage hay Get-ChocolateyWebFile để tải bộ cài .exe, .msi hoặc .zip từ trang của nhà phát triển, rồi chạy bộ cài.
Có những package nhúng sẵn bộ cài trong .nupkg, gọi là package embedded. Khi đó chỉ có lượt tải thứ nhất. Có những bộ cài lại là web installer, sau khi chạy còn tự tải thêm dữ liệu. Lượt tải đó do bộ cài tự làm, nằm ngoài Chocolatey.
Một cấu hình Chocolatey proxy đúng chỉ bảo đảm cho hai lượt đầu, không bảo đảm cho dữ liệu mà bộ cài tự tải sau đó.
Ranh giới với các bài khác
Bài wget proxy nhắc Chocolatey như một cách cài wget, không nói về proxy của Chocolatey. Bài PowerShell proxy nói về proxy cho Invoke-WebRequest và PowerShell Gallery. Bài này chỉ nói về cấu hình proxy của Chocolatey CLI, cách nó truyền proxy xuống script của package, và phạm vi thật của cấu hình đó.
Phạm vi kiểm thử
Chocolatey cần quyền quản trị để cài, máy lab không cài. Bài đọc hướng dẫn proxy của Chocolatey và hai tệp mã nguồn trên nhánh develop ngày 29/10/2026: EnvironmentSettings.cs, nơi choco đặt biến môi trường cho script của package, và Get-WebFile.ps1, hàm trợ giúp tải bộ cài. Lab chạy lại đúng đoạn chọn proxy của Get-WebFile trong Windows PowerShell 5.1 với proxy HTTP tự dựng có tài khoản và nhật ký, rồi kiểm cách curl.exe đọc biến HTTP_PROXY mà Chocolatey tạo ra.
Cấu hình Chocolatey proxy và phân biệt tải package với installer

Hai lượt tải của một package
Thứ tự ưu tiên

Thứ tự ưu tiên proxy
Tài liệu liệt kê bốn nguồn, ưu tiên từ cao xuống thấp:
- Tham số trên dòng lệnh của từng lần chạy.
- Cấu hình lưu bằng choco config.
- Biến môi trường http_proxy, https_proxy, no_proxy.
- Proxy của hệ thống Windows.
Nguồn cao hơn thắng nguồn thấp hơn. Máy có proxy hệ thống và cũng có choco config proxy thì choco dùng giá trị trong choco config.
Proxy hệ thống
Không cấu hình gì, Chocolatey dùng proxy đặt trong cài đặt Windows. Tài liệu ghi chú danh sách bỏ qua có thể không áp dụng với cách này, và khuyên khai báo rõ ràng. Bài cài đặt proxy cho Windows 10 hướng dẫn đặt proxy hệ thống, nhưng proxy hệ thống ảnh hưởng mọi ứng dụng, không chỉ choco.
Chocolatey truyền proxy xuống script của package
Đọc EnvironmentSettings.cs thấy khi choco config có proxy, trước khi chạy script của package, choco đặt các biến môi trường sau cho tiến trình PowerShell chạy script:
Biến |
Giá trị |
|---|---|
chocolateyProxyLocation |
Địa chỉ proxy như trong cấu hình |
chocolateyProxyUser |
Tên đăng nhập |
chocolateyProxyPassword |
Mật khẩu đã giải mã |
chocolateyProxyBypassList |
Danh sách bỏ qua |
chocolateyProxyBypassOnLocal |
true khi bật bỏ qua địa chỉ cục bộ |
HTTP_PROXY và HTTPS_PROXY |
Ghép user:mật khẩu@ với địa chỉ proxy |
NO_PROXY |
Danh sách bỏ qua |
Các hàm trợ giúp của Chocolatey đọc nhóm biến chocolateyProxy. Chương trình khác mà script gọi, như curl, git hay python, có thể đọc HTTP_PROXY. Bộ cài .exe hay .msi thì thường không đọc biến nào trong số này, chúng dùng proxy của Windows hoặc không dùng proxy.
Chuẩn bị phiên bản, tài khoản và môi trường kiểm thử Chocolatey proxy
Ghi lại phiên bản
Trước khi đổi cấu hình, chạy choco --version và ghi lại. Tài liệu proxy không ghi chú theo phiên bản, nhưng hành vi có thể đổi giữa các bản lớn. Kết quả kiểm thử nên đi kèm số phiên bản để lần sau so sánh.
Tài khoản proxy
Chuẩn bị địa chỉ proxy, cổng, tên đăng nhập và mật khẩu. Nếu nhà cung cấp cho phép xác thực bằng IP, thêm IP của máy vào danh sách cho phép thì không cần lưu mật khẩu trên máy. Bài xác thực proxy bằng IP whitelist hay user password so sánh hai cách.
Proxy có nhật ký để đối chiếu
Không có nhật ký thì không biết request có đi qua proxy hay không. Với proxy tự dựng, bật ghi log truy cập. Với proxy mua ngoài, dùng bảng thống kê lưu lượng của nhà cung cấp. Lab của bài dùng proxy tự dựng ghi mỗi request thành một dòng gồm phương thức, đích, tài khoản gửi lên và kết quả xác thực.
Package thử nghiệm an toàn
Để kiểm phần script, tạo một package riêng chỉ in biến môi trường và tải một tệp nhỏ từ máy chủ của mình, thay vì cài phần mềm thật. Script mẫu cho package thử nghiệm:
$ErrorActionPreference = 'Stop'
Write-Host "chocolateyProxyLocation = $env:chocolateyProxyLocation"
Write-Host "chocolateyProxyUser = $env:chocolateyProxyUser"
Write-Host "HTTP_PROXY co gia tri: $([bool]$env:HTTP_PROXY)"
Get-ChocolateyWebFile -PackageName 'lab-proxy' -FileFullPath "$env:TEMP\lab.bin" -Url 'https://tep-thu.vi-du.vn/lab.bin'
Script chỉ in việc HTTP_PROXY có giá trị hay không, không in giá trị, vì giá trị chứa mật khẩu. Đóng gói bằng choco pack rồi cài từ thư mục cục bộ bằng choco install lab-proxy --source . là đủ. Bài chưa chạy package này vì máy lab không có Chocolatey.
Cấu hình tối thiểu cho Chocolatey proxy
Lệnh choco config
Tài liệu đưa năm lệnh, mỗi lệnh đặt một khóa:
choco config set --name="'proxy'" --value="'http://203.0.113.10:8080'"
choco config set --name="'proxyUser'" --value="'user1'"
choco config set --name="'proxyPassword'" --value="'p@ss#2026'"
choco config set --name="'proxyBypassList'" --value="'nexus\.noi-bo\.vn,.*\.local'"
choco config set --name="'proxyBypassOnLocal'" --value="'true'"
Cặp nháy kép bọc nháy đơn là cách tài liệu viết để giá trị đi qua cả cmd lẫn PowerShell mà không bị cắt. Chỉ khóa proxy là bắt buộc. Tài khoản chỉ được dùng khi có đủ cả proxyUser lẫn proxyPassword. Mật khẩu được lưu mã hóa trong tệp cấu hình của Chocolatey.
Giải thích từng khóa
proxy là địa chỉ và cổng của proxy. Nên ghi kèm tiền tố http:// để hàm tải của PowerShell hiểu đúng. proxyUser và proxyPassword là tài khoản, với tài khoản miền Windows thì thêm tiền tố tên miền. proxyBypassList là danh sách biểu thức chính quy cách nhau bằng dấu phẩy, không phải danh sách tên miền thường. Dấu chấm trong tên miền phải viết \. nếu muốn so khớp đúng dấu chấm. proxyBypassOnLocal=true cho phép địa chỉ cục bộ đi thẳng.
Biến môi trường no_proxy cũng được choco hiểu là danh sách biểu thức chính quy cách nhau bằng dấu phẩy. Cách hiểu này khác curl và nhiều công cụ khác, nơi no_proxy là danh sách đuôi tên miền. Cùng một giá trị no_proxy có thể cho kết quả khác nhau giữa choco và các công cụ khác. Bài No_proxy là gì nói rõ cách hiểu thông dụng.
Đặt cho một lần chạy
Khi chỉ cần proxy cho một lệnh, dùng tham số thay vì lưu cấu hình:
choco install 7zip --proxy="http://203.0.113.10:8080" --proxy-user="user1" --proxy-password="$env:PROXY_PASS"
Tham số dòng lệnh thắng mọi nguồn khác. Cách này tiện cho kịch bản cài đặt một lần, nhưng mật khẩu có thể nằm lại trong lịch sử lệnh nếu gõ thẳng. Lấy từ biến môi trường như ví dụ để tránh.
Kiểm lại cấu hình
choco config get proxy
choco config get proxyUser
choco config list
Lệnh list in toàn bộ cấu hình. Khóa proxyPassword lưu dạng mã hóa, nên muốn biết mật khẩu có đúng không thì kiểm bằng một lần tải thật và đọc nhật ký proxy, không đọc từ tệp cấu hình.
Bỏ qua proxy cho từng nguồn package
Ngoài proxyBypassList, lệnh choco source có tùy chọn --bypass-proxy, theo tài liệu lệnh source dùng để một nguồn bỏ qua mọi proxy đã đặt rõ hoặc proxy hệ thống. Cách này gọn hơn viết biểu thức chính quy khi chỉ có một kho nội bộ:
choco source add --name="noi-bo" --source="https://nexus.noi-bo.vn/repository/choco/" --bypass-proxy
choco source list
Lưu ý tùy chọn này chỉ áp cho việc tải từ nguồn đó. Script trong package tải bộ cài từ trang khác vẫn theo cấu hình proxy chung.
Cấu hình theo máy, không theo người dùng
Cấu hình choco config lưu trong tệp chocolatey.config của thư mục cài Chocolatey, dùng chung cho mọi tài khoản trên máy. Điều này khác proxy hệ thống của Windows, vốn đặt theo từng người dùng. Một tác vụ lập lịch chạy choco upgrade bằng tài khoản SYSTEM sẽ thấy choco config proxy, nhưng không thấy proxy hệ thống mà anh em đặt trong tài khoản của mình.
Đây là lý do chính để khai báo proxy bằng choco config thay vì dựa vào proxy hệ thống trên máy chủ: tác vụ tự động và người dùng thường cùng thấy một cấu hình.
Chạy đối chứng và đọc log Chocolatey proxy
Ca 1: hàm tải dùng proxy tường minh
Get-WebFile.ps1 kiểm biến chocolateyProxyLocation trước. Nếu có, hàm tạo đối tượng WebProxy với địa chỉ đó, bật bỏ qua địa chỉ cục bộ, gán tài khoản khi có mật khẩu, nạp danh sách bỏ qua, rồi in dòng Using explicit proxy server. Lab chạy lại đúng các dòng này trong Windows PowerShell 5.1.19041:
$env:chocolateyProxyLocation = 'http://127.0.0.1:8971'
$env:chocolateyProxyUser = 'user1'
$env:chocolateyProxyPassword = 'p@ss#2026'
$env:chocolateyProxyBypassList = 'shop2\.test'
$req = [System.Net.HttpWebRequest]::Create('http://shop.test:8970/setup.exe')
$proxy = New-Object System.Net.WebProxy($env:chocolateyProxyLocation, $true)
$pw = ConvertTo-SecureString $env:chocolateyProxyPassword -AsPlainText -Force
$proxy.Credentials = New-Object System.Management.Automation.PSCredential ($env:chocolateyProxyUser, $pw)
$proxy.BypassList = $env:chocolateyProxyBypassList.Split(',', [System.StringSplitOptions]::RemoveEmptyEntries)
$req.Proxy = $proxy
$req.GetResponse().StatusCode
Kết quả: tệp tại shop.test trả 200, nhật ký proxy ghi request có tài khoản user1. Mật khẩu chứa @ và # vẫn chạy vì được truyền như một chuỗi riêng, không nằm trong URL.
Ca 1 cũng cho thấy một chi tiết của .NET: request đầu tiên đi tới proxy không kèm tài khoản, nhận 407, rồi mới gửi lại kèm Proxy-Authorization. Nhật ký proxy vì vậy có hai dòng cho một lần tải, một dòng thất bại và một dòng thành công. Thấy dòng 407 lẻ trong log proxy khi dùng Chocolatey không có nghĩa là cấu hình sai, chỉ cần có dòng thành công ngay sau.
Ca 2: danh sách bỏ qua
Cùng đoạn mã, đổi URL sang shop2.test. Tên này chỉ proxy lab biết. Request báo không phân giải được shop2.test, nhật ký proxy trống. Nghĩa là biểu thức shop2\.test đã khớp, request đi thẳng thay vì qua proxy, đúng như cấu hình.
Ca 3: sai mật khẩu
Đổi chocolateyProxyPassword thành giá trị sai, request trả 407 Proxy Authentication Required. Đây là lỗi anh em sẽ thấy trong log của choco khi lưu nhầm mật khẩu bằng choco config.
Ca 4: biến HTTP_PROXY cho chương trình con

Biến HTTP_PROXY ghép sai dạng
Như bảng ở trên, Chocolatey ghép HTTP_PROXY theo mẫu tài_khoản:mật_khẩu@ cộng với nguyên văn giá trị proxy trong cấu hình. Mật khẩu không được mã hóa phần trăm. Lab đặt bốn biến thể của chuỗi này rồi gọi curl.exe 8.13.0 có sẵn trong Windows:
Giá trị HTTP_PROXY |
Kết quả curl |
|---|---|
user1:p@ss#2026@http://127.0.0.1:8971 |
Mã 5, không phân giải được proxy |
user1:p@ss#[email protected]:8971 |
Mã 5, không phân giải được proxy |
user1:matkhau2026@http://127.0.0.1:8971 |
Mã 5, không phân giải được proxy |
user1:[email protected]:8971 |
Tới được proxy, nhận 407 vì mật khẩu khác của lab |
Chỉ dòng cuối được curl hiểu đúng: địa chỉ proxy không có tiền tố http:// và mật khẩu không có ký tự đặc biệt. Khi cấu hình proxy có tiền tố http://, điều mà hàm tải PowerShell cần, thì chuỗi HTTP_PROXY ghép ra lại hỏng với curl. Đây là suy luận từ mã nguồn kết hợp phép thử curl, chưa kiểm trên một package thật.
Hệ quả thực tế: package nào gọi curl, git hay python để tải thêm dữ liệu có thể lỗi dù choco tải .nupkg bình thường. Trong script của package tự viết, đọc nhóm biến chocolateyProxy rồi tự dựng URL proxy có mã hóa mật khẩu sẽ ổn định hơn.
Trình tự chẩn đoán khi cài lỗi
Khi một lệnh choco install lỗi mạng, đi lần lượt theo các bước dưới thay vì đổi nhiều cấu hình cùng lúc:
- Đọc log choco, xác định lỗi xảy ra ở bước tải .nupkg hay ở bước script tải bộ cài.
- Lỗi ở bước tải .nupkg: kiểm choco config proxy, tài khoản, và nguồn có đang bật --bypass-proxy không.
- Lỗi ở bước tải bộ cài: tìm dòng Using explicit proxy server hoặc Using system proxy server ngay trước lỗi để biết hàm tải đang dùng proxy nào.
- Tải được bộ cài nhưng cài lỗi: mở log của chính bộ cài, xem nó có tự tải thêm dữ liệu không.
- Package có gọi curl, git hay python: thử chạy lệnh đó tay với cùng biến môi trường để xem chuỗi proxy có hỏng.
Mỗi bước chỉ đổi một thứ, rồi chạy lại. Đổi nhiều thứ cùng lúc thì khi chạy được cũng không biết cái nào là nguyên nhân.
Bộ cài trong package và Chocolatey proxy
Bộ cài .msi và .exe
Sau khi tải xong, Install-ChocolateyPackage chạy bộ cài với tham số im lặng. Phần lớn bộ cài offline không cần mạng nữa. Bộ cài kiểu web installer như của trình duyệt, bộ công cụ phát triển hay runtime lại tải tiếp hàng trăm MB. Lượt tải này thường dùng WinINet hoặc WinHTTP, tức là proxy hệ thống, không đọc choco config.
Khi cài phần mềm loại này qua Chocolatey trên máy không có proxy hệ thống, choco báo tải package thành công, rồi bộ cài treo hoặc báo lỗi mạng. Log của choco chỉ ghi mã thoát của bộ cài. Cần đọc log riêng của bộ cài, thường nằm trong thư mục tạm.
Cách xử lý
Có ba hướng. Hướng thứ nhất là chọn package embedded hoặc tìm tham số cài offline của phần mềm. Hướng thứ hai là đặt proxy hệ thống trong lúc cài rồi gỡ ra, chấp nhận ảnh hưởng tới ứng dụng khác. Hướng thứ ba là dùng kho nội bộ chứa sẵn bộ cài đầy đủ.
Với WinHTTP, lệnh netsh winhttp set proxy đặt proxy cho dịch vụ hệ thống, cần quyền quản trị và ảnh hưởng toàn máy. Bài cách tắt proxy trên Windows hướng dẫn gỡ khi xong việc.
Kho nội bộ thay cho proxy
Doanh nghiệp dùng Chocolatey thường đặt một kho nội bộ như Nexus hay ProGet, bật chức năng nội bộ hóa package để tải sẵn bộ cài vào kho. Máy người dùng chỉ nói chuyện với kho, không cần ra Internet. Đặt proxyBypassList cho tên kho nội bộ để request tới kho đi thẳng trong khi phần còn lại qua proxy.
Chocolatey proxy với proxy công ty xác thực theo tài khoản Windows
Nhánh proxy hệ thống trong hàm tải
Khi không có chocolateyProxyLocation, Get-WebFile.ps1 rơi sang nhánh thứ hai. Nếu WebClient thấy có proxy hệ thống và URL không nằm trong danh sách bỏ qua, hàm lấy DefaultCredentials, tức tài khoản Windows đang chạy tiến trình. Hàm gắn tài khoản đó vào proxy rồi in dòng Using system proxy server. Nhánh này dùng địa chỉ proxy lấy từ cài đặt Windows của chính tài khoản đang chạy, nên kết quả phụ thuộc người dùng nào gọi choco. Nếu DefaultCredentials rỗng, mã nguồn gọi Get-Credential để hỏi tài khoản.
Nhánh này hợp với proxy công ty dùng xác thực NTLM hoặc Kerberos theo tài khoản miền: máy đã đăng nhập miền thì không cần khai báo mật khẩu. Với proxy thương mại dùng Basic, tài khoản Windows không có ý nghĩa với proxy, nên request sẽ nhận 407.
Hỏi tài khoản trong tác vụ tự động
Lời gọi Get-Credential mở hộp thoại hoặc hỏi trên cửa sổ dòng lệnh. Trong tác vụ lập lịch hay CI không có người ngồi trước máy, lời hỏi này làm script treo. Lab không chạy nhánh này. Để tránh, luôn khai báo proxy tường minh bằng choco config trên máy chạy tự động, để hàm tải đi nhánh thứ nhất.
Tài khoản miền trong proxyUser
Tài liệu dặn thêm tiền tố tên miền khi tài khoản là tài khoản miền, dạng TENMIEN endangnhap. Thiếu tiền tố, proxy công ty có thể từ chối dù mật khẩu đúng. Với tài khoản của nhà cung cấp proxy thương mại thì không có tên miền, chỉ ghi tên đăng nhập.
Danh sách tên miền cần mở khi dùng Chocolatey proxy
Proxy có danh sách cho phép
Proxy công ty thường chỉ cho đi tới các tên miền đã duyệt. Khi đó, mở tên miền của kho Chocolatey thôi là chưa đủ. Mỗi package tải bộ cài từ trang của nhà phát triển, có khi là trang tải riêng, có khi là kho phát hành trên GitHub, có khi là mạng phân phối nội dung. Mỗi package một danh sách khác nhau.
Cách tìm nhanh: mở tệp chocolateyInstall.ps1 trong package, đọc tham số Url và Url64bit. Đó là tên miền mà script sẽ gọi. Gom các tên miền này cho danh sách package cần cài, rồi gửi cho bộ phận quản trị proxy một lần. Nhớ rằng URL trong script có thể chuyển hướng sang một tên miền khác khi tải, ví dụ trang tải chuyển sang máy chủ phân phối. Thử tải một lần qua proxy có nhật ký sẽ thấy đủ các tên miền thật sự được gọi.
Khi danh sách quá dài
Nếu nhóm cài nhiều phần mềm, danh sách tên miền sẽ dài và đổi liên tục khi nhà phát triển đổi nơi phát hành. Đây là lúc kho nội bộ có bộ cài đầy đủ đáng đầu tư hơn: chỉ một máy chủ kho cần ra Internet, các máy còn lại chỉ cần tới kho.
Cài chính Chocolatey sau Chocolatey proxy
Script install.ps1
Lần cài Chocolatey đầu tiên chưa có choco config. Tài liệu hướng dẫn tải install.ps1 về máy, mở PowerShell quyền quản trị, đặt biến rồi chạy script trong cùng cửa sổ:
$env:chocolateyProxyLocation = 'http://203.0.113.10:8080'
$env:chocolateyProxyUser = 'user1'
$env:chocolateyProxyPassword = $env:PROXY_PASS
.\install.ps1
Nếu proxy không cần tài khoản mà vẫn báo lỗi, tài liệu gợi ý gán [Net.WebRequest]::DefaultWebProxy.Credentials bằng DefaultCredentials trước khi chạy, dùng cho proxy công ty xác thực theo tài khoản Windows.
Lỗi trust relationship
Tài liệu ghi lỗi về quan hệ tin cậy khi tải có thể do máy thiếu chứng chỉ gốc, nêu ví dụ GoDaddy Secure Certificate Authority G2. Lỗi này hay gặp trên máy chủ Windows cũ chưa cập nhật chứng chỉ, hoặc khi proxy công ty chặn và ký lại HTTPS. Không tắt kiểm tra chứng chỉ để vượt qua, hãy cài chứng chỉ gốc còn thiếu.
Sau khi cài xong
Biến đặt trong cửa sổ PowerShell chỉ sống tới khi đóng cửa sổ. Ngay sau khi cài, chạy các lệnh choco config ở phần trên để lưu proxy cho những lần sau.
Lỗi hay gặp với Chocolatey proxy
Bảng tra
Hiện tượng |
Nguyên nhân thường gặp |
Hướng xử lý |
|---|---|---|
407 khi tải .nupkg |
Sai hoặc thiếu proxyUser, proxyPassword |
Đặt lại mật khẩu, kiểm đủ cả hai khóa |
Không kết nối được tới kho |
Sai địa chỉ hoặc cổng proxy |
Thử bằng Test-NetConnection tới cổng proxy |
Kho nội bộ vẫn đi qua proxy |
proxyBypassList viết như tên miền thường |
Viết dạng biểu thức, thoát dấu chấm |
.nupkg tải được, bộ cài lỗi mạng |
Bộ cài tự tải, dùng proxy hệ thống |
Bộ cài offline, kho nội bộ hoặc proxy hệ thống tạm thời |
Script package gọi curl lỗi proxy |
HTTP_PROXY ghép sai dạng |
Script tự dựng URL proxy từ biến chocolateyProxy |
Lỗi trust relationship |
Thiếu chứng chỉ gốc hoặc proxy chặn TLS |
Cài chứng chỉ gốc, kiểm proxy |
Mã 407 nói chung còn nhiều 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.
Giới hạn tài liệu nêu
Tài liệu ghi ba giới hạn: Chocolatey GUI tải biểu tượng không theo proxy của CLI, Chocolatey Agent không dùng cấu hình proxy nào, và proxy SOCKS chưa được kiểm chứng, có thể chạy hoặc không. Với gói proxy có cả hai cổng, dùng cổng HTTP cho Chocolatey.
Đọc log của choco
Thêm --verbose hoặc --debug vào lệnh để xem choco đang dùng proxy nào. Log mặc định nằm trong thư mục logs của thư mục cài Chocolatey. Dòng Using explicit proxy server trong log cho biết hàm tải PowerShell đã nhận proxy. Dòng Using system proxy server cho biết đang dùng proxy hệ thống.
Gỡ cấu hình, quản lý bí mật và checklist Chocolatey proxy
Gỡ cấu hình
choco config unset proxy
choco config unset proxyUser
choco config unset proxyPassword
choco config unset proxyBypassList
choco config unset proxyBypassOnLocal
Kiểm lại bằng choco config list, các khóa proxy phải trống. Nếu đã đặt proxy hệ thống hay netsh winhttp trong lúc thử, gỡ luôn.
Mật khẩu đi tới đâu
Mật khẩu lưu mã hóa trong tệp cấu hình, nhưng khi chạy package, choco giải mã và đặt nó vào biến môi trường chocolateyProxyPassword và HTTP_PROXY của tiến trình chạy script. Mọi script trong mọi package đều đọc được. Package từ kho cộng đồng do nhiều người viết, nên chỉ cài package đã kiểm và cân nhắc dùng tài khoản proxy riêng cho máy cài phần mềm, có thể đổi mật khẩu bất kỳ lúc nào.
Không in biến môi trường trong log của CI. Một lệnh Get-ChildItem env: trong script gỡ lỗi là đủ làm lộ mật khẩu proxy.
Checklist

Checklist Chocolatey proxy
- Ghi phiên bản choco trước khi kiểm.
- Đặt proxy có tiền tố http://, đủ cả proxyUser và proxyPassword.
- proxyBypassList viết dạng biểu thức chính quy, thoát dấu chấm.
- Kiểm bằng log choco, tìm dòng Using explicit proxy server.
- Thử một package embedded và một package có web installer để thấy khác biệt.
- Package tự viết gọi curl hay git thì tự dựng URL proxy có mã hóa mật khẩu.
- Gỡ cấu hình khi không dùng, không in biến môi trường trong log.
Chọn proxy cho Chocolatey proxy
Loại proxy phù hợp
Chocolatey cần proxy HTTP hỗ trợ CONNECT tới cổng 443, vì kho cộng đồng và hầu hết trang tải bộ cài đều dùng HTTPS. SOCKS chưa được kiểm chứng theo tài liệu. Với máy cài phần mềm theo lịch, proxy IP tĩnh giúp tường lửa của kho nội bộ hay của đối tác cho phép đúng một địa chỉ.
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 proxy HTTP có IP cố định cho máy cài phần mềm, anh em có thể mua proxy Việt Nam tại trang chủ ProxyVN rồi chạy các ca kiểm ở trên.
Proxy không thay giới hạn của kho
Kho cộng đồng Chocolatey có giới hạn tốc độ tải cho mỗi IP. Proxy không phải cách để vượt giới hạn đó. Nhiều máy cài cùng lúc nên dùng kho nội bộ có bộ nhớ đệm.
Câu hỏi thường gặp về Chocolatey proxy
Đặt proxy trong choco config có làm Windows đi proxy không?
Không. Cấu hình chỉ dùng cho choco và các script package mà choco chạy. Trình duyệt và ứng dụng khác không bị ảnh hưởng.
Tại sao choco vẫn đi proxy dù đã gỡ choco config?
Còn hai nguồn thấp hơn: biến môi trường http_proxy, https_proxy và proxy hệ thống. Kiểm cả hai.
Dùng proxy cho choco upgrade all có khác không?
Không khác về cấu hình. Nhưng upgrade all chạy nhiều bộ cài liên tiếp, mỗi bộ cài có thể có cách tải riêng như đã nói, nên lỗi mạng hay xuất hiện ở một vài package chứ không phải tất cả.
Có cần đặt proxy cho từng người dùng không?
Không. choco config dùng chung cho cả máy. Người dùng nào chạy choco cũng thấy cùng proxy, kể cả tài khoản SYSTEM của tác vụ lập lịch.
Package Chocolatey trong Ansible hay Intune có theo proxy không?
Các công cụ này gọi choco bên dưới, nên choco config trên máy vẫn được dùng. Công cụ quản lý thường có cách truyền tham số proxy riêng cho từng lần chạy. Kiểm tài liệu của công cụ, và đừng để mật khẩu proxy nằm trong tệp cấu hình đưa vào kho mã.
Có nên dùng proxy xoay cho Chocolatey không?
Không cần. Chocolatey không có lý do gì để đổi IP giữa các lượt tải. Proxy xoay còn làm khó việc cho phép IP ở kho nội bộ. Proxy tĩnh hợp hơn.
Giới hạn của bài
Bài chưa chạy choco thật. Kết luận về biến môi trường rút ra từ mã nguồn nhánh develop ngày 29/10/2026, phép thử hàm tải chạy lại trong PowerShell 5.1 và curl.exe 8.13.0. Cần kiểm lại với package thử nghiệm khi có máy cài Chocolatey.
Chocolatey proxy và những điều cần nhớ
Chocolatey proxy đặt bằng choco config hoặc tham số dòng lệnh, áp cho việc tải package và cho các hàm tải trong script package, còn bộ cài tự tải dữ liệu thường theo proxy hệ thống. Viết danh sách bỏ qua dạng biểu thức chính quy và kiểm bằng log trước khi tin cấu hình. Cần proxy HTTP ổn định cho Chocolatey proxy, liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam.