How to setup a Alpine Linux mirror: Difference between revisions
Ginjachris (talk | contribs) m (added darkhttpd configuration) |
(Add link to sync-mirror script) |
||
Line 42: | Line 42: | ||
</pre> | </pre> | ||
(or use [https://gist.github.com/jirutka/288c6fff7c0b8a835d143686207316be this script]) | |||
Make it executable: | Make it executable: | ||
Line 47: | Line 49: | ||
Now it will sync every hour. (given cron runs) | Now it will sync every hour. (given cron runs) | ||
== Setting up HTTP access via lighttpd == | == Setting up HTTP access via lighttpd == |
Revision as of 01:06, 6 December 2016
This document describes how to set up an Alpine Linux mirror and make it available via http and rsync.
We will:
- create the dir where we have the mirror
- set up a cron job to sync with master mirror every hour
- set up lighttpd for http access
- set up rsync so other mirrors can rsync from you
Make sure that you have enough disk space; each v3.x branch has around 20 GiB.
Setting up the cron job
Install rsync which will be used to sync from the master mirror.
apk add rsync
Save the following file as /etc/periodic/hourly/alpine-mirror
#!/bin/sh # make sure we never run 2 rsync at the same time lockfile="/tmp/alpine-mirror.lock" if [ -z "$flock" ] ; then exec env flock=1 flock -n $lockfile "$0" "$@" fi src=rsync://rsync.alpinelinux.org/alpine/ dest=/var/www/localhost/htdocs/alpine/ # uncomment this to exclude old v2.x branches #exclude="--exclude v2.*" mkdir -p "$dest" /usr/bin/rsync \ --archive \ --update \ --hard-links \ --delete \ --delete-after \ --delay-updates \ --timeout=600 \ $exclude \ "$src" "$dest"
(or use this script)
Make it executable:
chmod +x /etc/periodic/hourly/alpine-mirror
Now it will sync every hour. (given cron runs)
Setting up HTTP access via lighttpd
Install the lighttpd server
apk add lighttpd
Enable dir listings by uncommenting the following line in /etc/lighttpd/lighttpd.conf:
dir-listing.activate = "enable"
Also set cache-control to force cache revalidate every 30 mins. Uncomment mod_setenv in /etc/lighttpd/lighttpd.conf:
"mod_setenv",
Add also the following lines to /etc/lighttpd/lighttpd.conf:
setenv.add-response-header += ( "Cache-Control" => "must-revalidate" )
Start lighttpd and make it start at boot:
rc-service lighttpd start rc-update add lighttpd
If so, simply install, start and auto-start the webserver:
apk add darkhttpd && rc-service darkhttpd start && rc-update add darkhttpd
Darkhttpd will, by default, offer directory listings and serve data from /var/www/localhost/htdocs/
See the main article on Darkhttpd for more configuration optionsSetting up rsyncd
Add the following lines to /etc/rsyncd.conf:
[alpine] path = /var/www/localhost/htdocs/alpine comment = My Alpine Linux Mirror
Optionally set a bandwidth limit in /etc/conf.d/rsyncd. In this example we limit to 500Kbytes/s (approx 5Mbit/s)
RSYNC_OPTS="--bwlimit=500"
Reference: File:Sync.sh