A Tier 2 Arch Linux mirror supported by Teknopark Istanbul Vocational and Technical Anatolian High School and its students.
Syncs from: rsync://mirrors.pidginhost.com/Arch/ (a tier 1 mirror)
Sync interval: Every 6 hours
Geoghraphical location: Turkiye (Istanbul)
ayilmaz - Abdurrahim YILMAZ <ayilmaz08@proton.me>
alpoproo - Alperen GOKDENIZ <alperengokdeniz@gmail.com>
omertheroot - Omer Faruk SONMEZ <faruksonmez1453@gmail.com>
dybdeskarphet - Ahmet Arda KAVAKCI <ahmetardakavakci@gmail.com>
Refer to: DeveloperWiki:NewMirrors
- Storage: 120+ GiB suggested
- Required packages: rsync and nginx
You should first decide on which directory to use for the repository.
/srv/http/mirror/archlinux/ # suggested and used by us
After creating the directories you should own them.
sudo chown -R (yourusername):(yourgroupname) /path/to/mirror/directory
After deciding what mirror to sync from and target directory. You can create a syncing executable. You can use syncrepo.sh (in the repository here) and put it in /usr/bin/.
Then make it executable with:
sudo chmod a+x /usr/bin/syncrepo.sh
You have to edit the bash command based on your needs
Now you can sync for the first time! Execute the command and wait. It may take long based on your bandwith.
If you don't want to manually perform a sync everytime you need to, a service with a timer might be your saviour.
Service file must be placed at /etc/systemd/system/ directory. You can use syncrepo.service (in the repository here) as a base. You have to edit this service based on your needs
Timer file must be placed at /etc/systemd/system/ directory. You can use syncrepo.timer (in the repository here) as a base. You have to edit this timer based on your needs
Then you need to enable and start the timer:
sudo systemctl enable --now syncrepo.timer
And finally you are done! You have a directory that is kept up-to-date. It should be published now!
Nginx (an HTTP and reverse proxy server) or an alternative must be installed on the server. This guide is only for nginx.
On Debian/Ubuntu:
sudo apt install nginx
On Arch Linux:
sudo pacman -S nginx
On CentOS:
sudo yum install nginx
nginx_fileserver.conf (in the repository here) will be placed at /etc/ngnix/sites-available/ directory.
Download it with curl:
sudo curl "https://raw.githubusercontent.com/yilmaz08/arch-linux-mirror/main/nginx_fileserver.conf" -o /etc/nginx/sites-available/nginx_fileserver.conf
You have to edit the configuration based on your needs
Then the configuration file should be linked to /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/nginx_fileserver.conf /etc/nginx/sites-enabled/
Finally you can start/restart the service.
sudo systemctl start nginx # if not started before
sudo systemctl restart nginx # so it can use the latest configs
And do not forget to enable it:
sudo systemctl enable nginx
You can test your mirror even with your browser by visiting its URL or IP.
With curl:
curl https://yourdomainhere/archlinux/lastsync
HTTP and HTTPS protocols needs the 80 and 443 ports. So if you use a firewall, you should allow 80 and 443 ports.
For UFW:
sudo ufw allow 80 # for http
sudo ufw allow 443 # for https
If you are planning to become a Tier 1 Arch Linux mirror you will need to support rsync so other Tier 2 mirrors can sync from you.
The service configuration should be placed at /etc/rsyncd.conf. If needed rsync.conf (in the repository here) can be used too. To make the service use this new config:
sudo systemctl restart rsync.service
Then the rsync service must be enabled so it can start on boot.
sudo systemctl enable rsync.service
To test if the rsync service is working:
rsync -rlptH --safe-links --delete-delay --delay-updates rsync://yourdomainhere/lastsync ~/
The lastsync file will be downloaded into your home directory.
Rsync protocol needs the port 873. So if you use a firewall, you should allow 873 port.
For UFW:
sudo ufw allow 873