diff --git a/.github/workflows/deploy-github-pages.yml b/.github/workflows/deploy-github-pages.yml new file mode 100644 index 0000000000..7c7e689ee5 --- /dev/null +++ b/.github/workflows/deploy-github-pages.yml @@ -0,0 +1,43 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Deploy static content to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["feature/ppa-repo"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Single deploy job since we're just deploying + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Pages + uses: actions/configure-pages@v3 + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + # Upload entire repository + path: './ppa' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.gitignore b/.gitignore index aef1cee421..9d4cada8a2 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,6 @@ envs/qwerty.env cpu-cycles/libcpucycles/build foxyfox.env -.next \ No newline at end of file +.next +ppa-private-key.b64 +ppa-private-key.asc \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 554b9bcb3b..bc5d422ecd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,11 +10,13 @@ Post 1.0.0 release, the changelog format is based on [Keep a Changelog](https:// - [mixnode] replace rocket with axum ([#4071]) - incorporate the nym node HTTP api into the mixnode ([#4070]) - replaced '--disable-sign-ext' with '--signext-lowering' when running wasm-opt ([#3896]) +- Added PPA repo hosting support and nym-mixnode package with tooling for publishing ([#4165]) [#4077]: https://github.com/nymtech/nym/pull/4077 [#4071]: https://github.com/nymtech/nym/pull/4071 [#4070]: https://github.com/nymtech/nym/issues/4070 [#3896]: https://github.com/nymtech/nym/pull/3896 +[#4165]: https://github.com/nymtech/nym/pull/4165 ## [2023.3-kinder] (2023-10-31) diff --git a/Makefile b/Makefile index 499a0d7d71..d50cdbdb9f 100644 --- a/Makefile +++ b/Makefile @@ -168,3 +168,7 @@ generate-typescript: run-api-tests: cd nym-api/tests/functional_test && yarn test:qa +# Build debian package, and update PPA +# Requires base64 encode GPG key to be set up in environment PPA_SIGNING_KEY +deb: + scripts/ppa.sh diff --git a/mixnode/README.md b/mixnode/README.md index 3fb65bc916..68fec99c6c 100644 --- a/mixnode/README.md +++ b/mixnode/README.md @@ -14,3 +14,45 @@ A Rust mixnode implementation. * `nym-mixnode run --layer 1 --host x.x.x.x` will start the mixnode in layer 1 and bind to the specified host IP address. Coordinate with other people in your network to find out which layer needs coverage. By default, the Nym Mixnode will start on port 1789. If desired, you can change the port using the `--port` option. + +## Install debian + +```bash +sudo curl -s --compressed "https://nymtech.github.io/nym/nymtech.gpg" | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/nymtech.gpg > /dev/null +sudo echo "deb [signed-by=/etc/apt/trusted.gpg.d/nymtech.gpg] https://nymtech.github.io/nym/ /" > nymtech.list + +sudo apt-get update +sudo apt-get install nym-mixnode + +# See below for starting and managing the node +``` + +## Systemd support + +```bash +sudo systemctl enable nym-mixnode + +# Run +sudo systemctl start nym-mixnode + +# Check status +sudo systemctl status nym-mixnode + +# Logs +journalctl -f -u nym-mixnode + +``` + +## Build debian package + +```bash +# cargo install cargo-deb + +# Build package +cargo deb -p nym-mixnode + +# Install + +# This will init the mixnode to `/etc/nym` as `nym` user, and create a systemd service +sudo dpkg -i target/debian/ +``` \ No newline at end of file diff --git a/ppa/InRelease b/ppa/InRelease new file mode 100644 index 0000000000..1e9143f37a --- /dev/null +++ b/ppa/InRelease @@ -0,0 +1,37 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +Date: Tue, 21 Nov 2023 07:58:30 +0000 +MD5Sum: + 29bbd50eeae096bab7db9273b3d2460e 1133 Packages + fbfb649fbc1ea80e81f3f29aa8e0559c 711 Packages.gz + 55c1789b21080802c80bbc323569f324 38 Release +SHA1: + 28d2f5d52a8684a4a3d7d76765c10d30f9848ad7 1133 Packages + c6b80620b228848a9d1b006e83214612ecbcfca5 711 Packages.gz + 827f0dfd30c546e23b5014285f1cadff4068a5aa 38 Release +SHA256: + 76cc1482e7bcaebdc6d1f87140b25b2647b3d8426e2306c5ebe2ae08663c889e 1133 Packages + d7e55a929f67da9fb91f67ee86b9853a3c1f796b110eaca995753fd80018ff57 711 Packages.gz + 379613daac02063562de7a5ec48e32582b3ea8ca8dd136b4ca1f710fd7ce7b28 38 Release +SHA512: + e23aa596c3b8831fc8bc5b51b5073239b68f1d5e471802cba896b6449b493194da7e42603a478125a1dc41650262f46489f422fe37bef8ea810d71854ccf4ee5 1133 Packages + 672b6fc16c6daae98f994882ca2293b43efa8e24c92d5c85f838d9b97bfb970fff85209df077a6d65bc12f981b96a49b8a5d75108da4418760bbfd58958162b3 711 Packages.gz + d1ea202095914d4b4ad29af3fb4021878c7a3bf6688a6329e775eaadcf95bf8b30d70f45bec64d70ad20b56014f3399a096fe5c05219136727c3223174832da3 38 Release +-----BEGIN PGP SIGNATURE----- + +iQJEBAEBCgAuFiEEzWLrAxjj1jSobw5ZgQ9E11+JZgIFAmVcY00QHG55bUBueW10 +ZWNoLm5ldAAKCRCBD0TXX4lmAp8JD/4ycYaTE29tarxSjvL+f8Sp76eR7+WfKo6f +c5v0EMvf28UVMVhn5Ngljnu6df0RZhCv3SnDwT5l1DC+GUkEaAcH7QtF8uOGcOvA +8PGRYxpeLBMWE6Q2O1J7x1haOrOIXW3KJp7yrYmSj+PIlSmy/SttgrDOHVFdvm1V +DVePNzEJwCQk/or2TKvsgZ1TWdcQOox+MyksUGmOzrHb6l18CnxR9Z3QAn/TXk+I +uoJ0rNhWR8VyG7oOC/PNa5301pWenZnnP4wNowdqDq6PpORDj2814n1CJGBpcbVW +EIWwcS1lVKVTuQtnTVsWG+YytWKhuamA/twSAkuQVmm3mX8+T0R+CvW1iQPqrm2c +c2NSuDj+KDDDNG+ZynVh2yAjdSjHyXKKFHQPGcF1gyN7/D2SOsp49A61WeovcLV6 +y0GkuZrRy7u8jgGF5p8rh0WNDpbcSs1O+qdWP/wT9Vmn9KezDO0MuJNh4MtCh4lE +jo01HFttQ8sMCdSjjvvKrzL8gW1lGxH+yAvsHfCA4PBy6MrdzwqazxAGJR86Fxu4 +MqGlmHoyFwv8E7D/RcG8YMY25c1DA5wQ9cYSRS4OovPhf1THkK9ICyZymUbP0Sex +Iie4K91xdTseT1QBO5i9VAFbV0hDgeU2bggmeganrNHO3bIvNmQiFh9RUSQLpYEv +qCFYa62C3w== +=ttDt +-----END PGP SIGNATURE----- diff --git a/ppa/Packages b/ppa/Packages new file mode 100644 index 0000000000..354b23d2ed --- /dev/null +++ b/ppa/Packages @@ -0,0 +1,34 @@ +Package: nym-mixnode +Version: 1.1.33-1 +Architecture: amd64 +Maintainer: Dave Hrycyszyn +Installed-Size: 23794 +Depends: libc6 (>= 2.34) +Filename: ./debian/nym-mixnode_1.1.33-1_amd64.deb +Size: 5245732 +MD5sum: a9377a1aabfda9d95ce3a937fb4f02ed +SHA1: 535e76d7c5c0d8dc96b30c34fa1de46fbc9c40dd +SHA256: 70874c9d738998b6b671965ee724c47f56a8486d8eb6c73e94498f8c240fa62b +Priority: optional +Description: Implementation of a Loopix-based Mixnode + + . + # Nym Mixnode + . + A Rust mixnode implementation. + . + ## Usage + . + * `nym-mixnode` prints a help message showing usage options + * `nym-mixnode run --help` prints a help message showing usage options for the + run command + * `nym-mixnode run --layer 1 --host x.x.x.x` will start the mixnode in layer 1 + and bind to the specified host IP address. Coordinate with other people in your + network to find out which layer needs coverage. + . + By default, the Nym Mixnode will start on port 1789. If desired, you can change + the port using the `--port` option. + diff --git a/ppa/Packages.gz b/ppa/Packages.gz new file mode 100644 index 0000000000..0351e21497 Binary files /dev/null and b/ppa/Packages.gz differ diff --git a/ppa/Release b/ppa/Release new file mode 100644 index 0000000000..739d421404 --- /dev/null +++ b/ppa/Release @@ -0,0 +1,17 @@ +Date: Tue, 21 Nov 2023 07:58:30 +0000 +MD5Sum: + 29bbd50eeae096bab7db9273b3d2460e 1133 Packages + fbfb649fbc1ea80e81f3f29aa8e0559c 711 Packages.gz + 55c1789b21080802c80bbc323569f324 38 Release +SHA1: + 28d2f5d52a8684a4a3d7d76765c10d30f9848ad7 1133 Packages + c6b80620b228848a9d1b006e83214612ecbcfca5 711 Packages.gz + 827f0dfd30c546e23b5014285f1cadff4068a5aa 38 Release +SHA256: + 76cc1482e7bcaebdc6d1f87140b25b2647b3d8426e2306c5ebe2ae08663c889e 1133 Packages + d7e55a929f67da9fb91f67ee86b9853a3c1f796b110eaca995753fd80018ff57 711 Packages.gz + 379613daac02063562de7a5ec48e32582b3ea8ca8dd136b4ca1f710fd7ce7b28 38 Release +SHA512: + e23aa596c3b8831fc8bc5b51b5073239b68f1d5e471802cba896b6449b493194da7e42603a478125a1dc41650262f46489f422fe37bef8ea810d71854ccf4ee5 1133 Packages + 672b6fc16c6daae98f994882ca2293b43efa8e24c92d5c85f838d9b97bfb970fff85209df077a6d65bc12f981b96a49b8a5d75108da4418760bbfd58958162b3 711 Packages.gz + d1ea202095914d4b4ad29af3fb4021878c7a3bf6688a6329e775eaadcf95bf8b30d70f45bec64d70ad20b56014f3399a096fe5c05219136727c3223174832da3 38 Release diff --git a/ppa/Release.gpg b/ppa/Release.gpg new file mode 100644 index 0000000000..0e27c968f0 --- /dev/null +++ b/ppa/Release.gpg @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- + +iQJEBAABCgAuFiEEzWLrAxjj1jSobw5ZgQ9E11+JZgIFAmVcY0UQHG55bUBueW10 +ZWNoLm5ldAAKCRCBD0TXX4lmAmCfD/9dCZBTQnC6b97PQWR6EPooORsyyNNO6apN +WGKcgQ+nj8H1cyhVM0P1xUyukhnU7DJvz9yp4v+mS87178K4/EGONanSxqR3c4PX +q+F2wOXLiOalwQbS7flSbD5dYkvIcjCo5GT8+U/09JFYxn4pqItMQnkE2zD+oP98 +rSv70m8UV6ZLgRGpXWMl5qw3F2pU3Xes25brb+Gqon1EHJV+zW/2K8LBF0Zv6s5t +TjBrYM+foFnKb68fmtl8t7d47uTpzm0lLxUx8PzZliCfQwkzr1Bz7hTBpdTcpvYb ++BI32ocHgLm/tnwQapLarVFj60//0HLK6YxXlufQg3lqScPy/mEEK3Agw1ZzOhX7 +tOiMp78M4KCK3EhCx7LiMbv1LvPPK6tXzMYILwXqSz/iScK+cN/KtEOD8+75PdjK +N4mouHciCzCpeeele1yZICurktQ+7+kxhwL6Wm88sG3rXjrIEGm7Ez+0FPe9WYFD +P+R6/Zpmc/dSjGroOJst5PuEqLHs8RscgqKNtpVL1rjY22RtaOEzwUruduR5sGeA +H74V6YkehNTNAYZCLpcjwU6fDYWNPLo4Coy2kczLjsLwAXgyXPagiKWkAoOC6zcr +6ZIpzJb5OnZ9yYdoW7RrNhUedAlD89JH2tuPKdoO/qQBrCHg4YtxG3zNMcYzP+bb +VhXK4THvNg== +=0u7L +-----END PGP SIGNATURE----- diff --git a/ppa/debian/nym-mixnode_1.1.33-1_amd64.deb b/ppa/debian/nym-mixnode_1.1.33-1_amd64.deb new file mode 100644 index 0000000000..ac3e1ae786 Binary files /dev/null and b/ppa/debian/nym-mixnode_1.1.33-1_amd64.deb differ diff --git a/ppa/nymtech.gpg b/ppa/nymtech.gpg new file mode 100644 index 0000000000..657b19e391 --- /dev/null +++ b/ppa/nymtech.gpg @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +aXa0WNKki+64QaYA9Ystrg== +=9Wrg +-----END PGP PUBLIC KEY BLOCK----- diff --git a/ppa/nymtech.list b/ppa/nymtech.list new file mode 100644 index 0000000000..0cecfea5fa --- /dev/null +++ b/ppa/nymtech.list @@ -0,0 +1 @@ +deb [signed-by=/etc/apt/trusted.gpg.d/nymtech.gpg] https://nymtech.github.io/nym/ / \ No newline at end of file diff --git a/scripts/ppa.sh b/scripts/ppa.sh new file mode 100755 index 0000000000..e021753b14 --- /dev/null +++ b/scripts/ppa.sh @@ -0,0 +1,20 @@ +#/bin/bash +# Run from repository root +# Needs PPA_SIGNING_KEY base64 encoded in env var + +echo ${PPA_SIGNING_KEY} | base64 -d > ppa-signing-key.asc +gpg --import ppa-signing-key.asc +rm ppa-signing-key.asc + +cargo deb -p nym-mixnode + +mv target/debian/*.deb ppa/debian + +cd ppa + +dpkg-scanpackages --multiversion . > Packages +gzip -k -f Packages + +apt-ftparchive release . > Release +gpg --default-key "nym@nymtech.net" -abs -o - Release > Release.gpg +gpg --default-key "nym@nymtech.net" --clearsign -o - Release > InRelease