{"id":20926142,"url":"https://github.com/pacstall/chaotic-ppr","last_synced_at":"2025-05-13T17:33:30.410Z","repository":{"id":62889591,"uuid":"559349889","full_name":"pacstall/chaotic-PPR","owner":"pacstall","description":"The Chaotic Pacstall Programs Repository","archived":false,"fork":false,"pushed_at":"2024-07-24T19:49:42.000Z","size":108,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-29T14:22:17.792Z","etag":null,"topics":["chaotic","gplv3","pacstall"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pacstall.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"pacstall","open_collective":"pacstall","liberapay":"pacstall"}},"created_at":"2022-10-29T20:50:55.000Z","updated_at":"2024-08-31T23:01:02.000Z","dependencies_parsed_at":"2023-09-24T03:33:06.480Z","dependency_job_id":"c3a9acc3-acd5-4f80-937e-505f5ef3cb22","html_url":"https://github.com/pacstall/chaotic-PPR","commit_stats":{"total_commits":88,"total_committers":4,"mean_commits":22.0,"dds":0.06818181818181823,"last_synced_commit":"eb42d2c328b905f13e341b60f7bf5fa2a7ccdbb9"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacstall%2Fchaotic-PPR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacstall%2Fchaotic-PPR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacstall%2Fchaotic-PPR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacstall%2Fchaotic-PPR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pacstall","download_url":"https://codeload.github.com/pacstall/chaotic-PPR/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225248968,"owners_count":17444352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chaotic","gplv3","pacstall"],"created_at":"2024-11-18T20:37:01.422Z","updated_at":"2025-05-13T17:33:30.400Z","avatar_url":"https://github.com/pacstall.png","language":"Shell","funding_links":["https://github.com/sponsors/pacstall","https://opencollective.com/pacstall","https://liberapay.com/pacstall"],"categories":[],"sub_categories":[],"readme":"## Setup\n\nRequirements:\n- `aptly`\n- `apache2`\n- `certbot`\n- `python3-certbot-apache`\n\nJumpstart (only for the main host):\n```bash\ngit clone --recurse-submodules https://github.com/pacstall/chaotic-PPR.git\ncd chaotic-PPR\n\n# set up the user for hosting\nmkdir -p ~/.aptly/public\nsed -i \"s/\\${USER}/${USER}/g\" server/systemd/aptly-api.service server/apache2/aptly.conf\nchmod -R o+r ~/.aptly/public\nchmod o+x ~/\nchmod o+x ~/.aptly\ncp server/ppr-public-key.asc ~/.aptly/public\n\n# enable and start aptly api\nAPTLY_PORT=1234\nsed -i \"s/\\${APTLY_PORT}/${APTLY_PORT}/g\" server/systemd/aptly-api.service\nsudo cp server/systemd/aptly-api.service /etc/systemd/system/\nsudo systemctl enable --now aptly-api\n\n# set up aptly repos\n./scripts/creator.sh \"${APTLY_PORT}\"\n\n# enable and start apache forwarding\nsudo cp server/apache2/aptly.conf /etc/apache2/sites-available/aptly.conf\nsudo a2ensite aptly.conf\nsudo systemctl reload apache2\nsudo systemctl enable apache2 --now\nsudo ufw allow 80/tcp\nsudo ufw allow 443/tcp\nsudo certbot --apache -d ppr.pacstall.dev\n```\nThen, set the following repository secrets for GitHub Actions:\n- Set the chosen `APTLY_PORT` from above\n- Generate an ssh keygen pair and set `SSH_USER`, `SSH_IP`, and `SSH_KEY`:\n  - `SSH_USER` - the host user\n  - `SSH_IP` - the IP of the server\n  - `SSH_KEY` - the contents of the generated `ppr_ssh_key` file:\n```bash\nssh-keygen -t ed25519 -C \"github-actions@ppr\" -f ppr_ssh_key \u003c /dev/null\ncat ppr_ssh_key.pub \u003e\u003e ~/.ssh/authorized_keys\n```\n\n- Get the `keyid` from `ppr-public-key.asc` and set it to `GPG_KEY`:\n```bash\ngpg --list-packets server/ppr-public-key.asc | awk '/keyid: / {print $2}'\n```\n\n- On the server, import the private GPG key (get from maintainers):\n```bash\ngpg --import ppr-private-key.asc\n```\n\nIf the GPG key ever needs to be regenerated:\n```bash\necho \"%echo Generating PPR PGP key\nKey-Type: RSA\nKey-Length: 4096\nName-Real: PPR\nName-Email: pacstall@pm.me\nExpire-Date: 0\n%no-ask-passphrase\n%no-protection\n%commit\" \u003e /tmp/pgp-key.batch\ngpg --no-tty --batch --gen-key /tmp/pgp-key.batch\ngpg --armor --export \"PPR\" \u003e ppr-public-key.asc\ngpg --armor --export-secret-keys \"PPR\" \u003e ppr-private-key.asc\n```\n\nThe main server is now set up and ready to accept and publish packages.\n\nTo set up the [landing page](https://github.com/pacstall/chaotic-ppr-landing.git):\n```bash\n# Install npm\nsudo apt install npm\n# Install pnpm (Optional, but preferred):\nsudo npm install -g pnpm\n\ncd chaotic-ppr-landing/\n\npnpm i \u0026\u0026 pnpm build\n# OR\nnpm i \u0026\u0026 npm run build\n\ncp -r out/* ~/.aptly/public\n```\n\n\nJumpstart (for mirrors):\n```bash\nWIP\n```\n\n## Management\n\nCurrently using `manager.py`. Type `python3 manager.py {command} -h` for usage tips.\n```\npositional arguments:\n  {add,remove,list,generate}\n    add                 Add or edit a package\n    remove              Remove a package\n    list                List all packages\n    generate            Generate workflows for all packages\n```\n\nExamples:\n\n```bash\npython3 manager.py list\n\npython3 manager.py add ${package} -d ubuntu-latest,debian-stable -a amd64,arm64\n\npython3 manager.py remove ${package}\n\npython3 manager.py generate\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpacstall%2Fchaotic-ppr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpacstall%2Fchaotic-ppr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpacstall%2Fchaotic-ppr/lists"}