Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

The Chaotic Pacstall Programs Repository

License

Notifications You must be signed in to change notification settings

pacstall/chaotic-PPR

Repository files navigation

Setup

Requirements:

  • aptly
  • apache2
  • certbot
  • python3-certbot-apache

Jumpstart (only for the main host):

git clone --recurse-submodules https://github.com/pacstall/chaotic-PPR.git
cd chaotic-PPR
# set up the user for hosting
mkdir -p ~/.aptly/public
sed -i "s/\${USER}/${USER}/g" server/systemd/aptly-api.service server/apache2/aptly.conf
chmod -R o+r ~/.aptly/public
chmod o+x ~/
chmod o+x ~/.aptly
cp server/ppr-public-key.asc ~/.aptly/public
# enable and start aptly api
APTLY_PORT=1234
sed -i "s/\${APTLY_PORT}/${APTLY_PORT}/g" server/systemd/aptly-api.service
sudo cp server/systemd/aptly-api.service /etc/systemd/system/
sudo systemctl enable --now aptly-api
# set up aptly repos
./scripts/creator.sh "${APTLY_PORT}"
# enable and start apache forwarding
sudo cp server/apache2/aptly.conf /etc/apache2/sites-available/aptly.conf
sudo a2ensite aptly.conf
sudo systemctl reload apache2
sudo systemctl enable apache2 --now
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo certbot --apache -d ppr.pacstall.dev

Then, set the following repository secrets for GitHub Actions:

  • Set the chosen APTLY_PORT from above
  • Generate an ssh keygen pair and set SSH_USER, SSH_IP, and SSH_KEY:
    • SSH_USER - the host user
    • SSH_IP - the IP of the server
    • SSH_KEY - the contents of the generated ppr_ssh_key file:
ssh-keygen -t ed25519 -C "github-actions@ppr" -f ppr_ssh_key < /dev/null
cat ppr_ssh_key.pub >> ~/.ssh/authorized_keys
  • Get the keyid from ppr-public-key.asc and set it to GPG_KEY:
gpg --list-packets server/ppr-public-key.asc | awk '/keyid: / {print 2ドル}'
  • On the server, import the private GPG key (get from maintainers):
gpg --import ppr-private-key.asc

If the GPG key ever needs to be regenerated:

echo "%echo Generating PPR PGP key
Key-Type: RSA
Key-Length: 4096
Name-Real: PPR
Name-Email: pacstall@pm.me
Expire-Date: 0
%no-ask-passphrase
%no-protection
%commit" > /tmp/pgp-key.batch
gpg --no-tty --batch --gen-key /tmp/pgp-key.batch
gpg --armor --export "PPR" > ppr-public-key.asc
gpg --armor --export-secret-keys "PPR" > ppr-private-key.asc

The main server is now set up and ready to accept and publish packages.

To set up the landing page:

# Install npm
sudo apt install npm
# Install pnpm (Optional, but preferred):
sudo npm install -g pnpm
cd chaotic-ppr-landing/
pnpm i && pnpm build
# OR
npm i && npm run build
cp -r out/* ~/.aptly/public

Jumpstart (for mirrors):

WIP

Management

Currently using manager.py. Type python3 manager.py {command} -h for usage tips.

positional arguments:
 {add,remove,list,generate}
 add Add or edit a package
 remove Remove a package
 list List all packages
 generate Generate workflows for all packages

Examples:

python3 manager.py list
python3 manager.py add ${package} -d ubuntu-latest,debian-stable -a amd64,arm64
python3 manager.py remove ${package}
python3 manager.py generate

About

The Chaotic Pacstall Programs Repository

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Contributors 5

AltStyle によって変換されたページ (->オリジナル) /