Mirroring the ProteanOS Package Archive

Running a public mirror of the ProteanOS package archive contributes to the availability of ProteanOS.

Organizations deploying many ProteanOS systems are encouraged to make local mirrors, which they may keep private or make public, to save bandwidth on both their and ProteanOS's infrastructure.

Setting up a Mirror

Overview

(Impatient mirror administrators may skip this informational section and read the instructional sections below.)

A mirror takes about 730 MiB of storage space as of this writing and should be expected to grow beyond that.

The curious may view a list of files in the archive with the following command:

$ rsync --recursive --exclude .db rsync://files.proteanos.com/proteanos

See below for commands to copy archive files to a local mirror.

Packages are processed from the incoming queue into the archive four times daily, so mirrors need not be updated more frequently than that. The archive management software is configured to keep unreferenced files in the pool for one day, so mirrors must be updated at least once a day. Otherwise, during the update, some feed index files may reference deleted files. Updating at least twice daily is recommended, in case the synchronization source is ever temporarily unreachable.

Serving the archive mirror at /pub/proteanos over HTTP and FTP is recommended, but any path and either protocol may be used. HTTP Strict Transport Security (HSTS) must not be used except on private mirrors used by ProteanOS systems known to install the wolfssl-util package. The ProteanOS package archive is already cryptographically verified using software smaller than a TLS implementation.

Mirrors are classified by their synchronization source as either "primary" or "secondary" as described below. This design distributes synchronization bandwidth usage more efficiently across the mirror network. Secondary mirrors will typically update a few hours after primary mirrors do, but are otherwise still "first-class citizens". All mirrors regardless of classification are treated equally by prokit, the installer utility that selects a mirror.

Please configure private mirrors as secondary mirrors, so as to reserve ProteanOS project bandwidth for those that contribute bandwidth back to the project.

Primary Public Mirror

Primary mirrors are those that synchronize directly from <files.proteanos.com> and must serve their contents publicly over HTTP (without HSTS) and rsync and may also serve over anonymous FTP as defined by IETF RFC 1635 with no password requirements.

Run the following command one to four times (four times preferred) daily to synchronize your mirror:

$ rsync --recursive --times --delete --exclude .db \
> rsync://files.proteanos.com/proteanos /path/to/your/mirror/directory/

Secondary Public or Private Mirror

Secondary mirrors are those that synchronize from a primary mirror and serve their contents either publicly or privately. Public mirrors must serve over HTTP (without HSTS) and may also serve over anonymous FTP as defined by IETF RFC 1635 with no password requirements. Private mirrors may serve over either protocol.

Run the following command one to four times (four times preferred) daily to synchronize your mirror:

$ rsync --recursive --times --delete --exclude .db \
> ${src} /path/to/your/mirror/directory/

Where ${src} is any primary mirror in the rsync mirrors list. Please try to select a primary mirror that is being used by few or no other secondary mirrors, to evenly spread the load across the primary mirrors.

Announcing a Public Mirror

After setting up a public mirror, please announce it to the ProteanOS development mailing list (list info). Please include the following information in your announcement:

Your mirror will be reviewed and added to the official mirror lists (HTTP and FTP used by prokit, as well as rsync referenced above).