Det här sätter du upp
En spegel är en fullständig kopia av en distributions paket som hålls i takt med originalet och gör dem tillgängliga för andra. En publik spegel hjälper distributionen och alla i din närhet; en privat betjänar bara dina egna maskiner.
Här gör en egen användare som heter mirror tre saker:
- synkar med rsync på en timer, på det sätt varje distribution ber sina speglar att göra,
- kör en liten webbservercontainer bakom Caddy från Podman-guiden,
- serverar filerna över både vanlig HTTP och HTTPS, som distributionerna förväntar sig av speglar.
Bara för dina egna servrar är en paketcache oftast det bättre valet: den behåller bara det du installerar. Arch Linux ber dig överväga en innan du sätter upp en privat Arch-spegel.
Varje steg nedan har körts på en server hos Melonslab med Debian 13. Paketförrådet för EndeavourOS synkades helt och pacman på Arch Linux installerade från det. Synkskriptet från Arch Linux sattes upp och dess uppdateringskontroll kördes, och synken det skulle göra mättes; en fullständig kopia fick inte plats på testserverns disk. Både HTTP och HTTPS serverade filerna utan omdirigering.
Vilka distributioner som får plats
| Distribution | Storlek | Serverpaket |
|---|---|---|
| Arch Linux, så som dess eget skript synkar den | 285 GB | Standard med 500 GB eller mer |
| EndeavourOS, bara paket | 0,25 GB | alla |
| EndeavourOS, med installationsavbilder | 93 GB | alla Standard-paket |
| CachyOS | 197 GB | Standard med 500 GB eller mer |
| Debian, amd64 med källkod | omkring 1 450 GB | mer lagring: fråga vårt säljteam |
| Ubuntu | omkring 3 600 GB | mer lagring: fråga vårt säljteam |
| Alpine Linux | omkring 4 800 GB | mer lagring: fråga vårt säljteam |
| Rocky Linux | omkring 7 400 GB | mer lagring: fråga vårt säljteam |
Vi mätte storlekarna den 2026-09-25; Debians, Ubuntus och Alpines kommer från projektens egna siffror. De växer med tiden, så lämna marginal. De fyra sista behöver mer lagring än våra Standard-paket har: vårt säljteam kan ordna det, och bara för dina egna servrar räcker paketcachen med några gigabyte i stället. Den här guidens synksteg gäller Arch Linux-familjen.
Innan du börjar
Du behöver:
- en server uppsatt som i Podman-guiden, med Caddy igång, och diskutrymme enligt tabellen ovan;
- ett namn för spegeln, till exempel
mirror.example.com, med en A-post och en AAAA-post som pekar på din server.
1. Installera rsync och curl
Som root:
apt update
apt install -y rsync curl
Synkskriptet från Arch Linux använder curl för att se efter ändringar innan det kör rsync.
2. Skapa användaren
useradd -m -s /bin/bash mirror
loginctl enable-linger mirror
machinectl shell mirror@
3. Servera filerna
mkdir -p ~/mirror ~/bin ~/.config/containers/systemd ~/.config/systemd/user
Skapa ~/.config/containers/systemd/mirror-web.container:
[Unit]
Description=File server for the mirror
[Container]
ContainerName=mirror-web
Image=docker.io/library/caddy:2
Volume=%h/mirror:/srv:ro
# Only Caddy, on this server, can reach it: the port is not open to the internet.
PublishPort=127.0.0.1:8086:8080
Exec=caddy file-server --root /srv --browse --listen :8080
AutoUpdate=registry
[Service]
Restart=always
[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user start mirror-web
systemctl --user enable --now podman-auto-update.timer
Filerna ligger i hemkatalogen för mirror. Ingen annan användare kan läsa den, så mirror serverar filerna själv, skrivskyddat, med kataloglistning.
4. Sätt Caddy framför
Gå tillbaka till root med exit, byt till machinectl shell caddy@ och lägg till det här blocket sist i ~/Caddyfile:
# Both HTTP and HTTPS, without redirecting: distributions expect plain HTTP on mirrors.
http://mirror.example.com, https://mirror.example.com {
reverse_proxy 127.0.0.1:8086
}
Starta om Caddy med systemctl --user restart caddy. När både http:// och https:// anges omdirigerar Caddy inte besökare från vanlig HTTP till HTTPS. Paketen är signerade, så pacman kan lita på dem oavsett protokoll.
5. Synka en distribution
Gå tillbaka till användaren mirror med exit och machinectl shell mirror@. Sätt sedan upp en eller flera av följande.
Arch Linux
Arch Linux publicerar skriptet som dess speglar använder. Det kontrollerar först en liten lastupdate-fil över HTTPS och kör rsync bara när den har ändrats. Ladda ner det och ställ in det att synka från accum.se i Umeå, en av Archs Tier 1-speglar:
curl -o ~/bin/syncrepo-archlinux https://gitlab.archlinux.org/archlinux/infrastructure/-/raw/main/roles/syncrepo/files/syncrepo-template.sh
sed -i \
-e 's|^target=.*|target="$HOME/mirror/archlinux"|' \
-e 's|^lock=.*|lock="$HOME/.syncrepo-archlinux.lock"|' \
-e 's|^source_url=.*|source_url="rsync://mirror.accum.se/mirror/archlinux/"|' \
-e 's|^tls=.*|tls=0|' \
-e 's|^lastupdate_url=.*|lastupdate_url="https://mirror.accum.se/mirror/archlinux/lastupdate"|' \
~/bin/syncrepo-archlinux
chmod +x ~/bin/syncrepo-archlinux
tls=0 behövs eftersom accum.se inte erbjuder rsync över TLS. Skapa ~/.config/systemd/user/sync-archlinux.service:
[Unit]
Description=Sync the Arch Linux mirror
[Service]
Type=oneshot
ExecStart=%h/bin/syncrepo-archlinux
Och ~/.config/systemd/user/sync-archlinux.timer:
[Unit]
Description=Sync the Arch Linux mirror every hour, on a fixed random minute
[Timer]
OnCalendar=hourly
RandomizedDelaySec=1h
FixedRandomDelay=true
[Install]
WantedBy=timers.target
Kör den första synken för hand, vilket visar förloppet och kopierar omkring 285 GB, och slå sedan på timern:
~/bin/syncrepo-archlinux
systemctl --user daemon-reload
systemctl --user enable --now sync-archlinux.timer
Från och med då kontrollerar timern varje timme, alltid på samma slumpvis valda minut, som Arch ber sina speglar om. När inget har ändrats tar en körning några sekunder.
EndeavourOS
Skapa ~/bin/sync-endeavouros:
#!/bin/sh
# Sync EndeavourOS. flock stops a run from starting while the last one is still going.
exec flock -n "$HOME/.sync-endeavouros.lock" \
rsync -rlptH --safe-links --delete-delay --delay-updates --timeout=600 \
rsync://alpix.eu.rsync.endeavouros.com/endeavouros/ "$HOME/mirror/endeavouros/"
Skriptet synkar paketen och installationsavbilderna, 93 GB. För bara paketen lägger du till repo/ i båda sökvägarna. Gör det körbart med chmod +x ~/bin/sync-endeavouros, och skapa en tjänst och en timer som för Arch Linux, med namnet sync-endeavouros och ExecStart=%h/bin/sync-endeavouros. Starta tjänsten en gång för den första synken och slå sedan på timern.
--delay-updates och --delete-delay håller spegeln konsistent medan den synkar: de nya filerna dyker upp samtidigt i slutet, och de gamla tas bort först därefter.
CachyOS
CachyOS tillåter speglar, men publicerar inte varifrån man synkar. Skriv till admin@cachyos.org, som ger dig en rsync-källa. Kopiera sedan EndeavourOS-skriptet till ~/bin/sync-cachyos, sätt källan du fick i stället för EndeavourOS-källan och $HOME/mirror/cachyos/ som mål, och lägg till en tjänst och en timer på samma sätt. CachyOS-speglar har paketen under repo/, som raden i steg 6 förväntar sig; kontrollera att din har det efter den första synken.
6. Kontrollera den
Öppna https://mirror.example.com/: kataloglistningen visar varje distribution du synkar. För att använda spegeln från pacman lägger du den först i spegellistan:
| Distribution | Fil | Rad |
|---|---|---|
| Arch Linux | /etc/pacman.d/mirrorlist | Server = https://mirror.example.com/archlinux/$repo/os/$arch |
| EndeavourOS | /etc/pacman.d/endeavouros-mirrorlist | Server = https://mirror.example.com/endeavouros/repo/$repo/$arch |
| CachyOS | /etc/pacman.d/cachyos-mirrorlist | Server = https://mirror.example.com/cachyos/repo/$arch/$repo |
7. Håll den privat, eller gör den publik
Privat. För att bara släppa in dina egna maskiner lägger du till en adresskontroll i Caddy-blocket, som i paketcache-guiden.
Publik. Varje distribution listar publika speglar själv, efter att ha kontrollerat dem:
- Arch Linux: öppna en funktionsbegäran på gitlab.archlinux.org/archlinux/arch-mirrors (du behöver logga in) och ange vilken Tier 1-spegel du synkar från. Dess speglar synkar hela uppströmsspegeln, högst en gång i timmen och minst en gång om dagen, på en slumpvis minut, vilket stegen ovan gör.
- EndeavourOS: skicka e-post till alpix på endeavouros.com. De ber om minst 100 Mbit/s, IPv4, en synk minst var tredje timme och ingen Cloudflare framför, och övervakar en ny spegel i en eller två veckor innan de listar den.
- CachyOS: fråga när du får din rsync-källa.
Felsökning
Arch Linux-synken kan inte ansluta på port 874. tls är fortfarande 1: accum.se erbjuder bara vanlig rsync. Kontrollera sed-steget.
En synk startar inte. Den förra körs fortfarande: låsfilen gör att en andra körning avslutas direkt. systemctl --user status sync-archlinux visar vad den gör.
Disken blir full. Jämför du -sh ~/mirror/* med tabellen ovan, som växer med tiden.
Kör du en publik spegel?
En publik spegel hanterar jämn, tung trafik: en populär skickar många terabyte i månaden. Prata med vårt säljteam innan du öppnar den för allmänheten, så att vi kan planera kapaciteten tillsammans med dig.