- Notifications
You must be signed in to change notification settings - Fork21
[Ubuntu / Debian / CentOS / Alpine] Lightweight APT / YUM / APK CHACHE PROXY just over 2MB in size!
License
soulteary/apt-proxy
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A lightweightAPT Cache Proxy - just over 2MB in size!
APT Proxy is a lightweight and reliable caching tool forAPT, YUM, and APK packages (supporting Ubuntu, Debian, CentOS, and Alpine Linux). It's designed to work seamlessly with both traditional system installations and Docker environments.
It serves as a drop-in replacement forapt-cacher-ng.
- Linux: x86_64 / x86_32 / Ubuntu ARM64v8
- ARM: ARM64v8 / ARM32v6 / ARM32v7
- macOS: x86_64 / Apple Silicon (ARM64v8)
Simply run the binary:
./apt-proxy2022/06/12 16:15:40 running apt-proxy2022/06/12 16:15:41 Start benchmarking mirrors2022/06/12 16:15:41 Finished benchmarking mirrors2022/06/12 16:15:41 using fastest mirror https://mirrors.company.ltd/ubuntu/2022/06/12 16:15:41 proxy listening on 0.0.0.0:3142
To use the proxy withapt-get
commands, prefix them with the proxy settings:
# Update package lists using apt-proxyhttp_proxy=http://your-domain-or-ip-address:3142 apt-get -o pkgProblemResolver=true -o Acquire::http=true update# Install packages using apt-proxyhttp_proxy=http://your-domain-or-ip-address:3142 apt-get -o pkgProblemResolver=true -o Acquire::http=true install vim -y
Subsequent package operations will be significantly faster as packages are cached locally.
While CentOS uses Yum instead of APT, APT-Proxy provides acceleration for both CentOS 7 and 8.
For CentOS 7:
cat /etc/yum.repos.d/CentOS-Base.repo| sed -e s/mirrorlist.*$//| sed -e s/#baseurl/baseurl/ | sed -e s#http://mirror.centos.org#http://your-domain-or-ip-address:3142# | tee /etc/yum.repos.d/CentOS-Base.repo
For CentOS 8:
sed -i -e"s#mirror.centos.org#http://your-domain-or-ip-address:3142#g" /etc/yum.repos.d/CentOS-*sed -i -e"s/#baseurl/baseurl/" /etc/yum.repos.d/CentOS-*sed -i -e"s#\$releasever/#8-stream/#" /etc/yum.repos.d/CentOS-*
Verify the configuration by runningyum update
.
APT Proxy also accelerates package downloads for Alpine Linux:
cat /etc/apk/repositories| sed -e s#https://.*.alpinelinux.org#http://your-domain-or-ip-address:3142#| tee /etc/apk/repositories
Verify the configuration by runningapk update
.
You can specify mirrors in two ways:
Using Full URLs:
# Cache both Ubuntu and Debian packages./apt-proxy --ubuntu=https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ --debian=https://mirrors.tuna.tsinghua.edu.cn/debian/# Cache Ubuntu packages only./apt-proxy --mode=ubuntu --ubuntu=https://mirrors.tuna.tsinghua.edu.cn/ubuntu/# Cache Debian packages only./apt-proxy --mode=debian --debian=https://mirrors.tuna.tsinghua.edu.cn/debian/
Using Shortcuts:
go run apt-proxy.go --ubuntu=cn:tsinghua --debian=cn:1632022/06/15 10:55:26 running apt-proxy2022/06/15 10:55:26 using specify debian mirror https://mirrors.163.com/debian/2022/06/15 10:55:26 using specify ubuntu mirror https://mirrors.tuna.tsinghua.edu.cn/ubuntu/2022/06/15 10:55:26 proxy listening on 0.0.0.0:3142
Available shortcuts:
- cn:tsinghua
- cn:ustc
- cn:163
- cn:aliyun
- cn:huaweicloud
- cn:tencent and more...
To accelerate package installation in Docker containers:
# Start a container (Ubuntu or Debian)docker run --rm -it ubuntu# ordocker run --rm -it debian# Install packages using the proxyhttp_proxy=http://host.docker.internal:3142 apt-get -o Debug::pkgProblemResolver=true -o Debug::Acquire::http=true update&& \http_proxy=http://host.docker.internal:3142 apt-get -o Debug::pkgProblemResolver=true -o Debug::Acquire::http=true install vim -y
Deploy with a single command:
docker run -d --name=apt-proxy -p 3142:3142 soulteary/apt-proxy
./apt-proxy -hUsage of apt-proxy: -alpine string the alpine mirrorfor fetching packages -cachedir string the dir to store cache datain (default"./.aptcache") -centos string the centos mirrorfor fetching packages -debian string the debian mirrorfor fetching packages -debug whether to output debugging logging -host string the host tobind to (default"0.0.0.0") -mode allselectthe mode of system to cache: all /`ubuntu` /`debian` /`centos` /`alpine` (default"all") -port string the port tobind to (default"3142") -ubuntu string the ubuntu mirrorfor fetching packages
Running Tests:
# Run tests with coverage reportinggotest -cover ./...# Generate and view detailed coverage reportgotest -coverprofile=coverage.out ./...go tool cover -html=coverage.out
For Ubuntu/Debian:
http_proxy=http://192.168.33.1:3142 apt-get -o Debug::pkgProblemResolver=true -o Debug::Acquire::http=true updatehttp_proxy=http://192.168.33.1:3142 apt-get -o Debug::pkgProblemResolver=true -o Debug::Acquire::http=true install apache2
This project is licensed under theApache License 2.0.
- No License Specified
- MIT License
- Mozilla Public License 2.0
About
[Ubuntu / Debian / CentOS / Alpine] Lightweight APT / YUM / APK CHACHE PROXY just over 2MB in size!
Topics
Resources
License
Security policy
Stars
Watchers
Forks
Languages
- Go99.7%
- Dockerfile0.3%