diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 707044da..8dcaf8bc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -245,3 +245,65 @@ jobs: git add Casks/mcpmux.rb git commit -m "Update mcpmux to ${VERSION}" git push + + # ───────────────────────────────────────────────────────────── + # Update APT Repository: Add .deb to self-hosted APT repo on R2 + # ───────────────────────────────────────────────────────────── + update-apt-repo: + needs: [release-please, publish-release] + if: needs.release-please.outputs.release_created == 'true' + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + + - name: Install tools + run: sudo apt-get update && sudo apt-get install -y reprepro + + - name: Configure AWS CLI for R2 + run: | + aws configure set aws_access_key_id "${{ secrets.R2_ACCESS_KEY_ID }}" + aws configure set aws_secret_access_key "${{ secrets.R2_SECRET_ACCESS_KEY }}" + aws configure set default.region auto + env: + AWS_DEFAULT_OUTPUT: json + + - name: Import GPG signing key + run: echo "${{ secrets.APT_GPG_PRIVATE_KEY }}" | gpg --batch --import + + - name: Download .deb from GitHub Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + VERSION="${{ needs.release-please.outputs.version }}" + mkdir -p artifacts + # Download all .deb files from the release + gh release download "v${VERSION}" --pattern "*.deb" --dir artifacts + + - name: Sync existing APT repo from R2 + run: | + mkdir -p repo + aws s3 sync "s3://mcpmux-apt/" repo/ \ + --endpoint-url "${{ secrets.R2_ENDPOINT }}" \ + || echo "No existing repo (first run)" + + - name: Update APT repo with new packages + run: | + # Copy reprepro config + cp -r scripts/apt-repo/conf repo/ + + # Add each .deb package + for deb in artifacts/*.deb; do + echo "Adding: $deb" + reprepro -b repo includedeb stable "$deb" + done + + # Export public key + gpg --armor --export hello@mcpmux.com > repo/key.gpg + + - name: Sync APT repo back to R2 + run: | + aws s3 sync repo/ "s3://mcpmux-apt/" \ + --endpoint-url "${{ secrets.R2_ENDPOINT }}" \ + --delete diff --git a/README.md b/README.md index 960805d7..9769e13a 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,43 @@ That's the last config file you'll need to touch. --- +## Install on Linux + +**Quick install** (detects your distro automatically): +```bash +curl -fsSL https://install.mcpmux.com | bash +``` + +
+Other install methods + +**Debian / Ubuntu** (APT repository for automatic updates): +```bash +curl -fsSL https://install.mcpmux.com/apt | sudo bash +``` + +**Fedora / RHEL** (from GitHub Releases): +```bash +# Download the latest .rpm +sudo dnf install https://github.com/mcpmux/mcp-mux/releases/latest/download/mcpmux-0.0.12-1.amd64.rpm +``` + +**Arch Linux** (AUR): +```bash +yay -S mcpmux-bin +``` + +**AppImage** (any distro): +```bash +curl -fsSL https://install.mcpmux.com | bash # auto-detects, falls back to AppImage +``` + +Or download directly from [GitHub Releases](https://github.com/mcpmux/mcp-mux/releases/latest). + +
+ +--- + ## Development ```bash diff --git a/scripts/apt-repo/conf/distributions b/scripts/apt-repo/conf/distributions new file mode 100644 index 00000000..646009db --- /dev/null +++ b/scripts/apt-repo/conf/distributions @@ -0,0 +1,7 @@ +Origin: McpMux +Label: McpMux +Codename: stable +Architectures: amd64 arm64 +Components: main +Description: McpMux APT Repository +SignWith: yes