DEV Community

Fatih ASLAN
Fatih ASLAN

Posted on

Ubuntu/Debian/Ceph/Pardus Local Mirror, Repository Kurulum with Ftp, Http and Https Used apt-mirror, Rsyncmirror and Wget

image

İnternet hızından, güvenlik sebebiyle ya da intranet ağınızdan dolayı apt için local yansı kurmanız gerekebilir.

Aşağıda ülke bazında yakın depoları kullanarak yansı oluşturabiliriz.

Ubuntu: https://launchpad.net/ubuntu/+archivemirrors

Debian: https://wiki.debian.org/SourcesList#Repository_URL | https://debgen.simplylinux.ch/

Ceph: https://download.ceph.com/

Pardus: https://belge.pardus.org.tr/display/PYMBB/Pardus+Repo+Mirrorlama

Bu işlem için ilgili makinede yeterince disk alanı(TB olması tavsiye edilir) ayrıca bonding nic ve simetrik yüksek seviyede net bandwidth olması tavsiye edilir.

sudo apt install apt-mirror proftpd-basic apache2 rsync wget git 
Enter fullscreen mode Exit fullscreen mode

With apt-mirror

Konuya girmeden önce, defaultta yüklenen apt-mirror paketinde bazı sorunlar mevcut bu yüzden aşağıdaki ilgili repodaki apt-mirror’u kendinize indirin ve default apt-mirror yerine aşğıdaki gibi güncelleyin.

git clone https://github.com/Stifler6996/apt-mirror.git cd apt-mirror cp apt-mirror /usr/bin/apt-mirror 
Enter fullscreen mode Exit fullscreen mode
sudo vi /etc/apt/mirror.list 
Enter fullscreen mode Exit fullscreen mode

Aşağıdaki satırları değiştiriyorum, verileri saklayacağı yeri data’nın altında ayarlıyorum ayrıca Ubuntu 20 ve Ceph repolarını aşağıdaki gibi ekliyorum.

set base_path /data/apt-mirror deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse deb http://archive.canonical.com/ubuntu focal partner deb-src http://archive.canonical.com/ubuntu focal partner deb https://download.ceph.com/debian-pacific/ focal main restricted universe multiverse 
Enter fullscreen mode Exit fullscreen mode

Ve mirror’lamayı başlatıyoruz.

sudo apt-mirror 
Enter fullscreen mode Exit fullscreen mode

İşlem bitiminde ls ile kontrol edelim.

fatlan@u20-repo:~$ ls /data/apt-mirror/mirror/ archive.canonical.com archive.ubuntu.com download.ceph.com 
Enter fullscreen mode Exit fullscreen mode

Şimdi Proftp’yi hem directory’sini(/srv/ftp) hem de kullanıcıların(anonymous olarak) bağlanabilmesi için yapılandıralım.

sudo vi /etc/proftpd/conf.d/anonymous.conf 
Enter fullscreen mode Exit fullscreen mode
<Anonymous ~ftp> User ftp Group nogroup UserAlias anonymous ftp RequireValidShell off # MaxClients 10 <Directory *> <Limit WRITE> DenyAll </Limit>  </Directory>  </Anonymous> 
Enter fullscreen mode Exit fullscreen mode

Servisi başlatalım

sudo systemctl restart proftpd.service 
Enter fullscreen mode Exit fullscreen mode

Şimdi apt-mirror path’lerini ftp için mount edelim.

sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/ 
Enter fullscreen mode Exit fullscreen mode

Ceph için;

sudo mkdir -r /srv/ftp/ceph sudo mount --bind /opt/apt-mirror/mirror/download.ceph.com/ /srv/ftp/ceph/ 
Enter fullscreen mode Exit fullscreen mode

Debian ve Pardus için;

sudo mkdir -r /srv/ftp/debian sudo mkdir -r /srv/ftp/pardus sudo mount --bind /opt/apt-mirror/mirror/deb.debian.org/ /srv/ftp/debian/ sudo mount --bind /opt/apt-mirror/mirror/depo.pardus.org.tr/ /srv/ftp/pardus/ 
Enter fullscreen mode Exit fullscreen mode

mount” ve “df -h” komutlarıyla durumu gözlemleyebilirsiniz.

Şimdi crontab’ı yapılandıralım,

NoT: @reboot'lar cron tarafında çalışmayabilir, fstab kullanabilirsiniz ya da kalıcı dizinleri en başından seçip tüm servislerde işaret edebilirsiniz ya da systemd unit file ile servis yazabilirsiniz.

crontab -e 
Enter fullscreen mode Exit fullscreen mode
@reboot sleep 5 @reboot sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/ @reboot sudo mount --bind /opt/apt-mirror/mirror/download.ceph.com/ /srv/ftp/ceph/ @reboot sudo mount --bind /opt/apt-mirror/mirror/deb.debian.org/ /srv/ftp/debian/ @reboot sudo mount --bind /opt/apt-mirror/mirror/depo.pardus.org.tr/ /srv/ftp/pardus/ 0 2 * * * sudo /usr/bin/apt-mirror >> /data/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log 
Enter fullscreen mode Exit fullscreen mode

Şimdi de apache2’yi yapılandıralım. Ben default config üzerinde sadece 80 olarak yapılandıracağım, siz isterseniz hem özelleştirebilir hem de 443’ü aktif edebilirsiniz.

sudo vi /etc/apache2/sites-enabled/000-default.conf 
Enter fullscreen mode Exit fullscreen mode
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /srv/ftp/ <Directory "/srv/ftp"> Options Indexes MultiViews AllowOverride None Require all granted </Directory>  ErrorLog ${APACHE_LOG_DIR}/error.log  CustomLog ${APACHE_LOG_DIR}/access.log combined  </VirtualHost> 
Enter fullscreen mode Exit fullscreen mode

With rsync

Sadece apt-mirror yerine dosyaları indirmek ve güncel tutmak için rsync’yi kullanacağız. Proftp ve apache2 aynı kalacak, sadece dizin yolunu değiştirmeniz gerekebilir.

sudo mkdir -p /data/apt-mirror/ubuntu rsync -a rsync://archive.ubuntu.com/ubuntu /data/apt-mirror/ubuntu #rsync bant genişliği belirlemek için(bayt olarak ölçer) --bwlimit=256 ve indirmenin ilerlemesini görmek için --progress parametrelerini rsync komutuna ekleyebilirsiniz. 
Enter fullscreen mode Exit fullscreen mode

Yansıyı güncel tutmak içinse https://wiki.ubuntu.com/Mirrors/Scripts adresindeki hazır scripti("/usr/local/bin/sync_ubuntu_mirror.sh") kullanabilirsinz.

crontab -e 
Enter fullscreen mode Exit fullscreen mode
0 2 * * * /usr/local/bin/sync-ubuntu-mirror.sh > /dev/null 2> /dev/null 
Enter fullscreen mode Exit fullscreen mode

With wget

sudo mkdir -p /data/apt-mirror/ubuntu cd /data/apt-mirror/ubuntu wget -r -nH --no-parent http://archive.ubuntu.com/ubuntu/ #isterseniz indirilen kısımlardan belli dosya ve versiyonlu yapıları exclude edebilirsiniz. --reject="index.html*" --reject="*-dbg*" --reject="*13.2.0*" 
Enter fullscreen mode Exit fullscreen mode

Ama hem repoyu güncel tutmak için ve hem de her seferinde indirmeleri başa sarmamak(bandwidth’ten yememek) için yukardaki mirror scriptini kullamalısınız.

CLİENT TARAFI

sudo vi /etc/apt/sources.list 
Enter fullscreen mode Exit fullscreen mode
deb http://10.10.10.203/ubuntu/ focal-updates main restricted universe multiverse deb-src http://10.10.10.203/ubuntu/ focal-updates main restricted universe multiverse deb http://10.10.10.203/ubuntu/ focal-security main restricted universe multiverse deb-src http://10.10.10.203/ubuntu/ focal-security main restricted universe multiverse deb http://10.10.10.203/ubuntu/ focal-backports main restricted universe multiverse deb-src http://10.10.10.203/ubuntu/ focal-backports main restricted universe multiverse deb http://10.10.10.203/ubuntu focal partner deb-src http://10.10.10.203/ubuntu focal partner deb http://10.10.10.203/ubuntu focal main restricted universe multiverse deb-src http://10.10.10.203/ubuntu focal main restricted universe multiverse deb http://10.10.10.203/ceph/debian-pacific/ focal main 
Enter fullscreen mode Exit fullscreen mode
fatlan@u20-repo-client:~$ sudo apt update Hit:1 http://10.10.10.203/ubuntu focal-updates InRelease Hit:2 http://10.10.10.203/ubuntu focal-security InRelease Hit:3 http://10.10.10.203/ubuntu focal-backports InRelease Get:4 http://10.10.10.203/ubuntu focal InRelease [265 kB] Hit:5 http://10.10.10.203/ceph/debian-pacific focal InRelease Fetched 265 kB in 1s (345 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done 74 packages can be upgraded. Run 'apt list --upgradable' to see them. 
Enter fullscreen mode Exit fullscreen mode

Top comments (1)

Collapse
 
kwabenasapong profile image
kwabenasapong

How will you download the website if it requires authentication using a username, password and an authenticity token? I tried the following below but I get stuck on the sign-in page;

!/usr/bin/env bash

username=username
password=password
code=wget -qO- https://urlname/sign_in service=https://urlname.io | cat | grep 'name="lt"' | cut -d"_" -f2
hidden_code=_$code
wget --save-cookies cookies.txt \
--keep-session-cookies \
--post-data 'username=$username&password=$password&lt=$hidden_code&_eventId=submit' \
--auth-no-challenge
--delete-after \
urlname/sign_in?service=https://ur...

wget --load-cookies cookies.txt \
urlname.io