How do you configure proxy settings in the Ubuntu Server or Minimal (CLI) versions using the terminal?
System-wide proxies in CLI Ubuntu/Server must be set as environment variables.
- Open the
vi(or your favorite editor). This file stores the system-wide variables initialized upon boot.
Add the following lines, modifying appropriately. You must duplicate in both upper-case and lower-case because (unfortunately) some programs only look for one or the other:
http_proxy="http://myproxy.server.com:8080/" https_proxy="http://myproxy.server.com:8080/" ftp_proxy="http://myproxy.server.com:8080/" no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" HTTP_PROXY="http://myproxy.server.com:8080/" HTTPS_PROXY="http://myproxy.server.com:8080/" FTP_PROXY="http://myproxy.server.com:8080/" NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com"
aptitude, etc. will not obey the environment variables when used normally with
sudo. So separately configure them; create a file called
/etc/apt/apt.conf.d/, and include the following:
Acquire::http::proxy "http://myproxy.server.com:8080/"; Acquire::ftp::proxy "ftp://myproxy.server.com:8080/"; Acquire::https::proxy "https://myproxy.server.com:8080/";
Finally, logout and reboot to make sure the changes take effect.
If you have an authenticating proxy, then the URLs will be different. Instead of:
Note that these are still URLs, so passwords (and possibly usernames) will have to be URL encoded.
For example, a username of
muru and a password of
)qv3TB3LBm7EkP} would look like:
This can be done in various ways:
- There several websites for encoding:
In a pinch, you can use
man url to see which characters need to be encoded:
An escaped octet is encoded as a character triplet, consisting of the percent character "%" followed by the two hexadecimal digits representing the octet code...
And the octet codes are available on
Proxy Environment Variables:
http_proxy: Proxy server for HTTP Traffic
https_proxy: Proxy server for HTTPS traffic
ftp_proxy: Proxy server for FTP traffic
no_proxy: Patterns for IP addresses or domain names that shouldn’t use the proxy
The value for every proxy setting, except for no_proxy, uses the same template.
Temporary setting proxy:
Persistent Proxy Settings:
vim ~/.bash_profile to open bash setup file, then put following lines inside it
export http_proxy=username:firstname.lastname@example.org:8080 export https_proxy=username:email@example.com:8081 export no_proxy=localhost, 127.0.0.1, *.my.lan
source ~/.bash_profile to apply the changes