DEV Community

Fatih ASLAN
Fatih ASLAN

Posted on

3 1

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

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

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

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more