Use a Proxy for Downloads

Cubic downloads distribution images over HTTPS. On a network that only reaches the internet through a proxy the download fails or hangs. Set the proxy in the environment and Cubic uses it.

Only the image download goes through the proxy. A VM instance has its own network through QEMU and does not inherit these settings.

Set the Proxy

Export the proxy URL and create a VM instance:

$ export HTTPS_PROXY=http://proxy.example.com:3128
$ cubic create builder --image ubuntu:resolute

On Windows use set instead:

> set HTTPS_PROXY=http://proxy.example.com:3128
> cubic create builder --image ubuntu:resolute

Set it for a single command when you do not want it in your shell:

$ HTTPS_PROXY=http://proxy.example.com:3128 cubic create builder --image ubuntu:resolute

A Proxy That Needs a Login

Put the user name and the password in the URL:

$ export HTTPS_PROXY=http://user:password@proxy.example.com:3128

The password then sits in your shell history, so prefer a proxy without a login where you can, or set the variable from a file your shell reads instead of typing it.

Skip the Proxy for Some Hosts

NO_PROXY lists the hosts that are reached directly:

$ export NO_PROXY=localhost,127.0.0.1,mirror.internal.example.com

Use a single * to bypass the proxy for every host.

Check That It Works

cubic images downloads the image list, so it is the quickest test:

$ cubic images

An error or a hang points at a proxy that is not reachable or at a wrong port. Add --verbose to any command to see more.

Platform Notes

On Windows the proxy of the Internet Settings is used when no variable is set, so a system wide proxy already works.

On macOS the system proxy settings are not read. Set the variables even when System Settings already has a proxy.

TLS Interception

Cubic ships its own root certificates and does not read SSL_CERT_FILE or SSL_CERT_DIR. A proxy that terminates TLS with its own certificate authority makes the download fail with a certificate error. Download the image on another host and place it in the image cache instead, see File Locations.