====== Linux Update Proxy Server ======
A light weight Squid Proxy can be used to cached RPM and Deb packages for both RedHat (CentOS) and Debian based Linux systems. The squid proxy server can be configured to require a login by proxy clients. Both YUM and APT-GET can be configured to use the proxy server for downloading package updates. Once one client has download a specific package it will be cached on the Squid Proxy server such that other hosts requesting the same package will not need to use Internet bandwidth to do so. One caveat is that all YUM and APT clients need to use the same mirror for updates, otherwise if the same package is coming from different mirrors it will get downloaded from the Internet multiple times.
See: https://stackoverflow.com/questions/3297196/how-to-set-up-a-squid-proxy-with-basic-username-and-password-authentication
===== Serverside =====
Add the following to the Squid Config:
**/etc/squid/squid.conf**
...
# Auth
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users
#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
...
# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256
cache_dir ufs /squid-cache 45000 16 256
Use htpasswd to create the password file with the **update-user**:
sudo htpasswd -c /etc/squid3/passwd update-user
==== Firewall ====
Be sure to open up firewall services for squid on port 3128.
e.g. on CentOS 7,8
firewall-cmd --zone=public --add-service=squid --permanent
===== Clientside =====
==== RedHat / CentOS ====
On YUM clients append the following lines to
**/etc/yum.conf**
proxy=http://SQUID_SERVER_IP:3128
proxy_username=update-user
proxy_password=********
==== Debian / Ubuntu / Raspbian ====
On apt-get Clients create the file:
/etc/apt/apt.conf.d/apt.conf
Acquire::http::Proxy "http://update-user:********@SQUID_SERVER_IP:3128/";
Then run apt-get update or apt-get install a package