TDCTF Academy Logo TDCTF ACADEMY

APT Fast Setup

Mengapa APT Perlu Dioptimasi?

APT (Advanced Package Tool) adalah default package manager di Debian/Ubuntu. Tanpa optimasi, download package bisa lambat karena:

  • Mirror default mungkin jauh secara geografis
  • Download dilakukan sequential (satu per satu)
  • Package cache tidak dikelola
  • Repo yang tidak dibutuhkan masih aktif

Dengan optimasi yang tepat, kecepatan install bisa meningkat 5-10x lipat!

1. Ganti Mirror ke yang Tercepat

Cara Otomatis dengan netselect-apt

# Install netselect-apt
sudo apt update
sudo apt install netselect-apt

# Cari mirror tercepat untuk Ubuntu
sudo netselect-apt -n -o /etc/apt/sources.list

# Update sources list
sudo apt update

Atau Manual dengan Ubuntu Mirror Selector

Buka https://mirrors.ubuntu.com/mirrors.txt - daftar mirror resmi.

Pilih mirror terdekat (Indonesia/Singapura):

# Contoh untuk Ubuntu - ganti release name sesuai
# noble = 24.04, jammy = 22.04, focal = 20.04

# Backup dulu
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

# Edit file
sudo nano /etc/apt/sources.list

Isi file untuk Ubuntu 24.04 (Noble) - mirror Indonesia:

deb http://kartolo.sby.datautama.net.id/ubuntu/ noble main restricted universe multiverse
deb http://kartolo.sby.datautama.net.id/ubuntu/ noble-updates main restricted universe multiverse
deb http://kartolo.sby.datautama.net.id/ubuntu/ noble-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse
tip

Untuk mirror Indonesia yang stabil:

  • kartolo.sby.datautama.net.id (Surabaya)
  • buaya.klas.or.id (Indonesia)

Test kecepatan mirror dengan: sudo apt update && timeout 5 ping -c 3 kartolo.sby.datautama.net.id :::

Mirror untuk Debian

deb http://kartolo.sby.datautama.net.id/debian/ bookworm main contrib non-free non-free-firmware
deb http://kartolo.sby.datautama.net.id/debian/ bookworm-updates main contrib non-free non-free-firmware
deb http://kartolo.sby.datautama.net.id/debian-security/ bookworm-security main contrib non-free non-free-firmware

2. Install & Konfigurasi apt-fast

apt-fast adalah wrapper untuk APT yang mendownload package secara paralel menggunakan aria2 atau axel.

Instalasi

# Install dependencies
sudo apt update
sudo apt install aria2 wget

# Clone repo apt-fast
sudo git clone https://github.com/ilikenwf/apt-fast /opt/apt-fast
sudo cp /opt/apt-fast/apt-fast /usr/local/bin/
sudo cp /opt/apt-fast/apt-fast.conf /etc/

# Atau install langsung via PPA (Ubuntu)
sudo add-apt-repository ppa:apt-fast/stable -y
sudo apt update
sudo apt install apt-fast

Konfigurasi

Edit /etc/apt-fast.conf:

sudo nano /etc/apt-fast.conf

Setel parameter berikut:

# Jumlah download paralel (sesuai koneksi)
_MIRRORS=(
'http://kartolo.sby.datautama.net.id/ubuntu/'
'http://archive.ubuntu.com/ubuntu/'
)

# Download manager (aria2c direkomendasikan)
_DOWNLOADER='aria2c'
_DOWNLOADER_OPTIONS='-x 5 -s 5 -k 1M'

Penggunaan apt-fast

# Update package list
sudo apt-fast update

# Install package (jauh lebih cepat dari apt)
sudo apt-fast install nginx mariadb-server phpmyadmin

# Upgrade semua package
sudo apt-fast upgrade

# Dist-upgrade
sudo apt-fast dist-upgrade

# Remove package
sudo apt-fast remove nginx

# Autoremove
sudo apt-fast autoremove

# Download only (tanpa install)
sudo apt-fast download docker-ce
peringatan

apt-fast menggunakan lebih banyak bandwidth karena download paralel. Pastikan kuota internet cukup!

3. Parallel Download dengan aria2

Bahkan tanpa apt-fast, kamu bisa menggunakan aria2 untuk download package secara manual:

# Install aria2
sudo apt install aria2

# Download package-package besar sekaligus
sudo apt install --download-only git docker.io mysql-server
cd /var/cache/apt/archives/

# Download paralel dengan aria2c
aria2c -x 5 -s 5 -j 3 <(apt-get --print-uris -qq update && apt-get --print-uris -qq install git)

4. Auto-Clean & Maintenance

Perintah Rutin

# Hapus package yang tidak lagi dibutuhkan
sudo apt autoremove

# Hapus file .deb di cache yang tidak diperlukan
sudo apt autoclean

# Hapus SEMUA file .deb di cache (tapi tetap di repo)
sudo apt clean

# Hapus konfigurasi package yang sudah dihapus
sudo apt purge $(dpkg -l | awk '/^rc/ {print $2}')

# Cek ukuran cache saat ini
du -sh /var/cache/apt/archives/

Auto-Clean Script (Cron Job)

# Buat script
sudo tee /usr/local/bin/apt-clean.sh << 'EOF'
#!/bin/bash
echo "[$(date)] Cleaning APT cache..."
sudo apt autoremove -y || true
sudo apt autoclean -y || true
echo "[$(date)] Done!"
EOF

sudo chmod +x /usr/local/bin/apt-clean.sh

# Jadwalkan tiap minggu
sudo crontab -e
# Tambahkan:
# 0 3 * * 0 /usr/local/bin/apt-clean.sh

5. Must-Have Packages untuk Security Lab

# Tools dasar
sudo apt update && sudo apt install -y \
curl wget git vim htop net-tools \
build-essential software-properties-common

# Network & Security
sudo apt install -y \
nmap netcat-openbsd tcpdump wireshark \
dnsutils whois traceroute \

# Web Pentesting
sudo apt install -y \
nikto sqlmap dirb gobuster hydra \
john hashcat

# Development
sudo apt install -y \
python3 python3-pip python3-venv \
nodejs npm \
docker.io docker-compose-plugin

# Monitoring
sudo apt install -y \
htop iotop nload iftop glances \
neofetch
tip

Simpan daftar package favorit di script agar cepat install ulang: sudo apt install $(cat ~/package-list.txt)

6. APT-Cacher-NG (Cache untuk Banyak VM)

Berguna jika kamu punya banyak container/VM yang perlu package yang sama.

Server (Host utama)

sudo apt install apt-cacher-ng

# Konfigurasi
sudo nano /etc/apt-cacher-ng/acng.conf

# Setel:
# CacheDir: /var/cache/apt-cacher-ng
# Port: 3142

# Start & enable
sudo systemctl enable --now apt-cacher-ng

# Cek status
sudo systemctl status apt-cacher-ng
sudo tail -f /var/log/apt-cacher-ng/apt-cacher-ng.log

Client (VM/Container)

# Di setiap VM, buat file proxy config
echo 'Acquire::HTTP::Proxy "http://192.168.1.100:3142";' | \
sudo tee /etc/apt/apt.conf.d/00proxy
echo 'Acquire::HTTPS::Proxy "false";' | \
sudo tee -a /etc/apt/apt.conf.d/00proxy

Atau untuk Docker:

# Di Dockerfile
RUN echo 'Acquire::HTTP::Proxy "http://host.docker.internal:3142";' > /etc/apt/apt.conf.d/00proxy
RUN echo 'Acquire::HTTPS::Proxy "false";' >> /etc/apt/apt.conf.d/00proxy

7. Pinning: Hold Packages

Mencegah package tertentu ter-upgrade:

# Hold package
sudo apt-mark hold docker-ce nginx

# Unhold
sudo apt-mark unhold docker-ce

# Lihat semua package yang di-hold
sudo apt-mark showhold

# Hold via dpkg
echo "docker-ce hold" | sudo dpkg --set-selections
dpkg --get-selections | grep hold

8. Troubleshooting

GPG Key Error

W: GPG error: ... NO_PUBKEY 1234567890ABCDEF
# Fix dengan apt-key (legacy)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1234567890ABCDEF

# Atau cara modern (gpg)
sudo gpg --homedir /etc/apt/trusted.gpg.d \
--keyserver keyserver.ubuntu.com \
--recv 1234567890ABCDEF
sudo gpg --homedir /etc/apt/trusted.gpg.d \
--export 1234567890ABCDEF | \
sudo tee /etc/apt/trusted.gpg.d/custom-key.gpg > /dev/null

Broken Packages

# Fix broken dependencies
sudo apt --fix-broken install

# Force install
sudo apt install -f

# Reconfigure package
sudo dpkg --configure -a

# Force overwrite
sudo apt install -o Dpkg::Options::="--force-overwrite" package-name

dpkg Lock Error

E: Could not get lock /var/lib/dpkg/lock-frontend
# 1. Cek proses yang menggunakan dpkg
ps aux | grep -i apt
ps aux | grep -i dpkg

# 2. Kill proses jika ada
sudo kill -9 <PID>

# 3. Hapus lock file (jika yakin tidak ada proses jalan)
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
sudo dpkg --configure -a
peringatan

Hapus lock file hanya jika kamu yakin tidak ada proses APT/dpkg yang berjalan. Memaksa hapus lock bisa merusak sistem!

Package Dependency Hell

# Cek dependensi suatu package
apt depends nginx

# Cek package yang bergantung pada package lain
apt rdepends nginx

# Cari package yang menyediakan file tertentu
apt-file update
apt-file search /etc/nginx/nginx.conf

# Cek versi yang tersedia
apt policy nginx

Perbandingan: update vs upgrade vs dist-upgrade

Perintah Fungsi Efek Samping
apt update Update daftar package dari repo Hanya update index, no install
apt upgrade Upgrade package ke versi terbaru (tanpa hapus package) Aman, tidak install/hapus package baru
apt full-upgrade Upgrade dengan resolusi dependensi cerdas Mungkin install/hapus package
apt dist-upgrade Sama seperti full-upgrade Biasanya untuk upgrade release
apt autoremove Hapus package tidak terpakai Hati-hati dengan dependencies manual
apt autoclean Hapus .deb lama di cache Aman
apt clean Hapus semua .deb di cache Download ulang jika dibutuhkan

Perintah Lengkap APT

Perintah Deskripsi Contoh
apt update Update daftar package sudo apt update
apt upgrade Upgrade semua package sudo apt upgrade -y
apt install <pkg> Install package sudo apt install nginx
apt remove <pkg> Hapus package (konfigurasi tetap) sudo apt remove nginx
apt purge <pkg> Hapus package + konfigurasi sudo apt purge nginx
apt search <keyword> Cari package apt search web server
apt show <pkg> Lihat detail package apt show nginx
apt policy <pkg> Lihat versi tersedia apt policy nginx
apt depends <pkg> Lihat dependensi apt depends nginx
apt rdepends <pkg> Lihat package yang bergantung apt rdepends libssl3
apt list --installed Lihat semua package terinstall apt list --installed | wc -l
apt list --upgradable Lihat package bisa di-upgrade apt list --upgradable
apt edit-sources Edit sources list sudo apt edit-sources
apt changelog <pkg> Lihat changelog apt changelog nginx
apt download <pkg> Download .deb saja apt download nginx
apt source <pkg> Download source code apt source nginx
apt build-dep <pkg> Install build dependencies sudo apt build-dep nginx
apt-mark hold <pkg> Hold package sudo apt-mark hold nginx
apt-mark unhold <pkg> Unhold package sudo apt-mark unhold nginx

Kesimpulan

Dengan optimasi APT, install dan update package di Ubuntu/Debian jadi jauh lebih cepat dan efisien.

Workflow optimasi lengkap:

# 1. Pilih mirror tercepat
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
# Edit pake mirror Indonesia

# 2. Install apt-fast + aria2
sudo apt install aria2
sudo add-apt-repository ppa:apt-fast/stable -y
sudo apt update && sudo apt install apt-fast -y

# 3. Gunakan apt-fast untuk semua operasi
sudo apt-fast update
sudo apt-fast upgrade -y

# 4. Install package-package penting
sudo apt-fast install -y curl wget git htop nmap nikto sqlmap

# 5. Set auto-clean rutin
sudo crontab -e
# 0 4 * * 0 /usr/bin/apt-get autoremove -y && /usr/bin/apt-get autoclean -y

# 6. (Opsional) Setup apt-cacher-ng di server lab
sudo apt install apt-cacher-ng

APT yang optimal = waktu tunggu lebih sedikit, produktivitas lebih tinggi!

PADA HALAMAN INI