commit 5dbab9062c8fdbddaa24fff2aeaa839de088b0c7 Author: jasonwitty Date: Sun Nov 23 13:24:50 2025 -0800 Initialize APT repository Source: feature/debian-packaging@a9366d069d1456a62830422bb067be6cfba4d812 Date: 2025-11-23 21:24:50 UTC diff --git a/APT_REPO_SUMMARY.md b/APT_REPO_SUMMARY.md new file mode 100644 index 0000000..ae7e27d --- /dev/null +++ b/APT_REPO_SUMMARY.md @@ -0,0 +1,423 @@ +# APT Repository Setup Summary + +## 🎉 What You Now Have + +You now have a complete system for creating and hosting your own APT repository for socktop packages, **without needing a sponsor or official Debian/Ubuntu approval**. + +## 📁 Files Created + +### Scripts (in `scripts/`) +- **`init-apt-repo.sh`** - Initializes the APT repository directory structure +- **`add-package-to-repo.sh`** - Adds .deb packages to the repository and generates metadata +- **`sign-apt-repo.sh`** - Signs the repository with your GPG key +- **`setup-apt-repo.sh`** - All-in-one interactive wizard to set everything up + +### Documentation +- **`QUICK_START_APT_REPO.md`** - Quick start guide (< 10 minutes) +- **`docs/APT_REPOSITORY.md`** - Comprehensive 600+ line guide covering everything +- **`APT_REPO_SUMMARY.md`** - This file + +### GitHub Actions +- **`.github/workflows/publish-apt-repo.yml`** - Automated building, signing, and publishing + +## 🚀 Quick Start (Choose One) + +### Option 1: Interactive Setup (Recommended for First Time) + +Run the setup wizard: + +```bash +./scripts/setup-apt-repo.sh +``` + +This walks you through: +1. ✅ Checking prerequisites +2. 🔑 Setting up GPG key +3. 📦 Finding/building packages +4. 📝 Creating repository structure +5. ✍️ Signing the repository +6. 📋 Next steps to publish to gh-pages + +### Option 2: Manual Step-by-Step + +```bash +# 1. Initialize +./scripts/init-apt-repo.sh + +# 2. Build packages +cargo deb --package socktop +cargo deb --package socktop_agent + +# 3. Add packages +./scripts/add-package-to-repo.sh target/debian/socktop_*.deb +./scripts/add-package-to-repo.sh target/debian/socktop-agent_*.deb + +# 4. Sign (replace YOUR-KEY-ID) +./scripts/sign-apt-repo.sh apt-repo stable YOUR-KEY-ID + +# 5. Update URLs +sed -i 's/YOUR-USERNAME/your-github-username/g' apt-repo/*.{md,html} + +# 6. Publish to gh-pages (see below) +``` + +### Option 3: Fully Automated (After Initial Setup) + +Once gh-pages branch exists, just tag releases: + +```bash +git tag v1.50.0 +git push --tags + +# GitHub Actions will: +# - Build packages for AMD64 and ARM64 +# - Update APT repository +# - Sign with your GPG key +# - Push to gh-pages branch automatically +``` + +## 📤 Publishing to GitHub Pages (gh-pages branch) + +**Why gh-pages branch?** +- ✅ Keeps main branch clean (source code only) +- ✅ Separate branch for published content +- ✅ GitHub Actions can auto-update it +- ✅ You can customize the landing page + +**Initial Setup:** +```bash +# Create gh-pages branch +git checkout --orphan gh-pages +git rm -rf . + +# Copy apt-repo CONTENTS to root (not the folder!) +cp -r apt-repo/* . +rm -rf apt-repo + +# Commit and push +git add . +git commit -m "Initialize APT repository" +git push -u origin gh-pages + +# Return to main +git checkout main +``` + +**Enable in GitHub:** +1. Settings → Pages +2. Source: **gh-pages** → **/ (root)** +3. Save + +Your repo will be at: `https://your-username.github.io/socktop/` + +**Note:** GitHub Pages only allows `/` (root) or `/docs`. Since we use gh-pages branch, contents go in the root of that branch. + +See `SETUP_GITHUB_PAGES.md` for detailed step-by-step instructions. + +### Alternative: Self-Hosted Server + +Copy `apt-repo/` contents to your web server: +```bash +rsync -avz apt-repo/ user@example.com:/var/www/apt/ +``` + +Configure Apache/Nginx to serve the directory. See `docs/APT_REPOSITORY.md` for details. + +## 🤖 GitHub Actions Automation + +### Required Secrets + +Add these in GitHub Settings → Secrets → Actions: + +1. **GPG_PRIVATE_KEY** + ```bash + gpg --armor --export-secret-key YOUR-KEY-ID + # Copy entire output including BEGIN/END lines + ``` + +2. **GPG_KEY_ID** + ```bash + gpg --list-secret-keys --keyid-format LONG + # Use the ID after "rsa4096/" + ``` + +3. **GPG_PASSPHRASE** + ```bash + # Your GPG passphrase (leave empty if no passphrase) + ``` + +### Triggers + +The workflow runs on: +- **Version tags**: `git tag v1.50.0 && git push --tags` +- **Manual dispatch**: Actions tab → "Publish APT Repository" → Run workflow + +### What It Does + +1. ✅ Builds packages for AMD64 and ARM64 +2. ✅ Initializes or updates APT repository +3. ✅ Generates Packages files and metadata +4. ✅ Signs with your GPG key +5. ✅ Commits and pushes to gh-pages branch +6. ✅ Creates GitHub Release with artifacts +7. ✅ Generates summary with installation instructions + +## 👥 User Installation + +Once published, users install with: + +```bash +# Add repository +curl -fsSL https://your-username.github.io/socktop/KEY.gpg | \ + sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg + +echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://your-username.github.io/socktop stable main" | \ + sudo tee /etc/apt/sources.list.d/socktop.list + +# Install +sudo apt update +sudo apt install socktop socktop-agent + +# The agent service is automatically installed and configured +sudo systemctl enable --now socktop-agent +``` + +## 🔧 Maintenance + +### Release New Version (Automated) + +```bash +# Update version in Cargo.toml, commit changes +git add . && git commit -m "Bump version to 1.51.0" +git tag v1.51.0 +git push origin main --tags + +# GitHub Actions automatically: +# - Builds packages for AMD64 and ARM64 +# - Updates apt-repo +# - Signs with GPG +# - Pushes to gh-pages branch +``` + +### Manual Update (if needed) + +```bash +# On main branch +cargo deb --package socktop +./scripts/add-package-to-repo.sh target/debian/socktop_*.deb +./scripts/sign-apt-repo.sh + +# Switch to gh-pages and update +git checkout gh-pages +cp -r apt-repo/* . +git add . && git commit -m "Release v1.51.0" && git push +git checkout main +``` + +### Remove Old Versions + +```bash +# On gh-pages branch +git checkout gh-pages +rm pool/main/socktop_1.50.0_*.deb +# Regenerate metadata (re-add remaining packages) +git add . && git commit -m "Remove old versions" && git push +git checkout main +``` + +## 🎯 Key Benefits + +✅ **No sponsor needed** - Host your own repository +✅ **Full control** - You decide when to release +✅ **Free hosting** - GitHub Pages at no cost +✅ **Automated** - GitHub Actions does the work +✅ **Professional** - Just like official repos +✅ **Multi-arch** - AMD64, ARM64 support built-in +✅ **Secure** - GPG signed packages +✅ **Easy updates** - Users get updates via `apt upgrade` + +## 📊 Repository Structure + +``` +apt-repo/ +├── dists/ +│ └── stable/ +│ ├── Release # Main metadata (checksums) +│ ├── Release.gpg # Detached signature +│ ├── InRelease # Clearsigned release +│ └── main/ +│ ├── binary-amd64/ +│ │ ├── Packages # Package list +│ │ ├── Packages.gz # Compressed +│ │ └── Release # Component metadata +│ ├── binary-arm64/ +│ └── binary-armhf/ +├── pool/ +│ └── main/ +│ ├── socktop_1.50.0_amd64.deb +│ ├── socktop-agent_1.50.1_amd64.deb +│ ├── socktop_1.50.0_arm64.deb +│ └── socktop-agent_1.50.1_arm64.deb +├── KEY.gpg # Public GPG key +├── README.md # Repository info +├── index.html # Web interface +└── packages.html # Package listing +``` + +## 🔑 GPG Key Management + +### Create New Key + +```bash +gpg --full-generate-key +# Choose RSA 4096, no expiration (or 2 years) +``` + +### Export Keys + +```bash +# Public key (for users) +gpg --armor --export YOUR-KEY-ID > KEY.gpg + +# Private key (for GitHub Secrets) +gpg --armor --export-secret-key YOUR-KEY-ID +``` + +### Backup Keys + +```bash +# Backup to safe location +gpg --export-secret-keys YOUR-KEY-ID > gpg-private-backup.key +gpg --export YOUR-KEY-ID > gpg-public-backup.key +``` + +### Key Rotation + +If your key expires or is compromised: +```bash +./scripts/sign-apt-repo.sh apt-repo stable NEW-KEY-ID +gpg --armor --export NEW-KEY-ID > apt-repo/KEY.gpg +# Users need to re-import the key +``` + +## 🐛 Troubleshooting + +### "Repository not signed" +```bash +./scripts/sign-apt-repo.sh apt-repo stable YOUR-KEY-ID +ls apt-repo/dists/stable/Release* # Should show 3 files +``` + +### "Package not found" +```bash +cd apt-repo +dpkg-scanpackages --arch amd64 pool/main /dev/null > dists/stable/main/binary-amd64/Packages +gzip -9 -k -f dists/stable/main/binary-amd64/Packages +cd .. +./scripts/sign-apt-repo.sh +``` + +### "404 Not Found" on GitHub Pages +- Wait 2-3 minutes after pushing +- Check Settings → Pages is enabled +- Verify source branch/directory + +### GitHub Actions not signing +- Check all 3 secrets are set correctly +- GPG_PRIVATE_KEY must include BEGIN/END lines +- Test signing locally first + +## 📚 Documentation + +| File | Purpose | Length | +|------|---------|--------| +| `QUICK_START_APT_REPO.md` | Get started in < 10 minutes | Quick | +| `SETUP_GITHUB_PAGES.md` | Detailed gh-pages setup guide | Step-by-step | +| `docs/APT_REPOSITORY.md` | Complete guide with all options | Comprehensive | +| `docs/DEBIAN_PACKAGING.md` | How .deb packages are built | Technical | +| `DEBIAN_PACKAGING_SUMMARY.md` | Overview of packaging work | Summary | +| `APT_REPO_SUMMARY.md` | This file | Overview | + +## 🎓 Learning Path + +1. **Start here**: `QUICK_START_APT_REPO.md` (10 min) +2. **Set up**: Run `./scripts/setup-apt-repo.sh` (15 min) +3. **Publish**: Follow `SETUP_GITHUB_PAGES.md` (5 min) +4. **Automate**: Set up GitHub Actions secrets (10 min) +5. **Advanced**: Read `docs/APT_REPOSITORY.md` as needed + +## 🚦 Next Steps + +Choose your path: + +### Just Getting Started? +1. ✅ Read `QUICK_START_APT_REPO.md` +2. ✅ Run `./scripts/setup-apt-repo.sh` +3. ✅ Follow `SETUP_GITHUB_PAGES.md` to publish +4. ✅ Test installation on a VM + +### Want Automation? +1. ✅ Generate/export GPG key +2. ✅ Add GitHub Secrets +3. ✅ Tag a release: `git tag v1.50.0 && git push --tags` +4. ✅ Watch GitHub Actions magic happen + +### Want to Understand Everything? +1. ✅ Read `docs/APT_REPOSITORY.md` (comprehensive) +2. ✅ Study the scripts in `scripts/` +3. ✅ Examine `.github/workflows/publish-apt-repo.yml` +4. ✅ Learn about Debian repository format + +### Ready for Production? +1. ✅ Set up monitoring/analytics +2. ✅ Create PPA for Ubuntu (Launchpad) +3. ✅ Apply to Debian mentors for official inclusion +4. ✅ Set up repository mirrors +5. ✅ Document best practices for users + +## 🌟 Success Criteria + +You'll know you're successful when: + +- [ ] Users can `apt install socktop` +- [ ] Updates work with `apt upgrade` +- [ ] Multiple architectures supported +- [ ] Repository is GPG signed +- [ ] GitHub Actions publishes automatically +- [ ] Installation instructions in README +- [ ] Zero sponsor or approval needed + +## 💡 Pro Tips + +1. **Test first**: Always test on a fresh VM before publishing +2. **Keep versions**: Don't delete old .deb files immediately +3. **Backup GPG key**: Store it safely offline +4. **Monitor downloads**: Use GitHub Insights or server logs +5. **Document everything**: Help users troubleshoot +6. **Version consistently**: Use semantic versioning +7. **Sign always**: Never publish unsigned repositories + +## 🔗 Resources + +- [Debian Repository Format](https://wiki.debian.org/DebianRepository/Format) +- [GitHub Pages Docs](https://docs.github.com/en/pages) +- [cargo-deb](https://github.com/kornelski/cargo-deb) +- [Ubuntu PPA Guide](https://help.launchpad.net/Packaging/PPA) +- [Debian Mentors](https://mentors.debian.net/) + +## 🎊 Congratulations! + +You now have everything you need to: +- ✅ Create your own APT repository +- ✅ Host it for free on GitHub Pages +- ✅ Automate the entire process +- ✅ Distribute packages professionally +- ✅ Provide easy installation for users + +**No sponsor required. No approval needed. You're in control!** 🚀 + +--- + +**Questions?** Check the docs or open an issue. + +**Ready to publish?** Run `./scripts/setup-apt-repo.sh` and follow the wizard! \ No newline at end of file diff --git a/GETTING_STARTED_NOW.md b/GETTING_STARTED_NOW.md new file mode 100644 index 0000000..0bed0aa --- /dev/null +++ b/GETTING_STARTED_NOW.md @@ -0,0 +1,109 @@ +# 🚀 Get Your APT Repository Live in 5 Minutes + +## You're Here Because... + +You want to publish socktop packages via APT, but GitHub Pages won't let you select `apt-repo/` folder. Here's why and how to fix it: + +**The Issue:** GitHub Pages only serves from `/` (root) or `/docs`, not custom folders like `/apt-repo`. + +**The Solution:** Use a `gh-pages` branch where `apt-repo` contents go in the root. + +## Quick Setup (5 Steps) + +### 1. Create apt-repo locally (if you haven't) + +```bash +./scripts/setup-apt-repo.sh +``` + +This creates `apt-repo/` with your packages and signs them. + +### 2. Create gh-pages branch + +```bash +git checkout --orphan gh-pages +git rm -rf . +``` + +### 3. Copy apt-repo to root + +```bash +cp -r apt-repo/* . +rm -rf apt-repo +ls +# You should see: dists/ pool/ KEY.gpg index.html README.md +``` + +### 4. Push to GitHub + +```bash +git add . +git commit -m "Initialize APT repository" +git push -u origin gh-pages +git checkout main +``` + +### 5. Enable GitHub Pages + +1. Go to: **Settings → Pages** +2. Source: **gh-pages** → **/ (root)** +3. Click **Save** + +**Done!** ✅ Your repo will be live at `https://your-username.github.io/socktop/` in 1-2 minutes. + +## Test It + +```bash +curl -I https://your-username.github.io/socktop/KEY.gpg +# Should return: HTTP/2 200 +``` + +## Install It (On Any Debian/Ubuntu System) + +```bash +curl -fsSL https://your-username.github.io/socktop/KEY.gpg | \ + sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg + +echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://your-username.github.io/socktop stable main" | \ + sudo tee /etc/apt/sources.list.d/socktop.list + +sudo apt update +sudo apt install socktop socktop-agent +``` + +## What's Next? + +### Now (Optional): +- Customize `index.html` on gh-pages for a nice landing page +- Add installation instructions to your main README + +### Later: +- Set up GitHub Actions automation (see `QUICK_START_APT_REPO.md`) +- Add more architectures (ARM64, ARMv7) + +## Understanding the Setup + +``` +main branch: gh-pages branch: +├── src/ ├── dists/ +├── Cargo.toml ├── pool/ +├── scripts/ ├── KEY.gpg +└── apt-repo/ (local) └── index.html ← GitHub Pages serves this + +Work here ↑ Published here ↑ +``` + +- **main**: Your development work +- **gh-pages**: What users see/download +- **apt-repo/**: Local folder (ignored in git, see `.gitignore`) + +## Need More Help? + +- **Quick start**: `QUICK_START_APT_REPO.md` +- **Detailed setup**: `SETUP_GITHUB_PAGES.md` +- **Why gh-pages?**: `WHY_GHPAGES_BRANCH.md` +- **Full guide**: `docs/APT_REPOSITORY.md` + +--- + +**You got this!** 🎉 diff --git a/KEY.gpg b/KEY.gpg new file mode 100644 index 0000000..c96e90e --- /dev/null +++ b/KEY.gpg @@ -0,0 +1,42 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +Dg== +=AaPQ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/QUICK_START_APT_REPO.md b/QUICK_START_APT_REPO.md new file mode 100644 index 0000000..291e618 --- /dev/null +++ b/QUICK_START_APT_REPO.md @@ -0,0 +1,221 @@ +# Quick Start: Setting Up Your socktop APT Repository + +This guide will get your APT repository up and running in **under 10 minutes**. + +## Prerequisites + +- [ ] Debian packages built (or use GitHub Actions to build them) +- [ ] GPG key for signing +- [ ] GitHub repository with Pages enabled + +## Step 1: Create GPG Key (if needed) + +```bash +# Generate a new key +gpg --full-generate-key + +# Select: +# - RSA and RSA (default) +# - 4096 bits +# - Key does not expire (or 2 years) +# - Your name and email + +# Get your key ID +gpg --list-secret-keys --keyid-format LONG +# Look for the part after "rsa4096/" - that's your KEY-ID +``` + +## Step 2: Initialize Repository Locally + +```bash +cd socktop + +# Create the repository structure +./scripts/init-apt-repo.sh + +# Build packages (or download from GitHub Actions) +cargo install cargo-deb +cargo deb --package socktop +cargo deb --package socktop_agent + +# Add packages to repository +./scripts/add-package-to-repo.sh target/debian/socktop_*.deb +./scripts/add-package-to-repo.sh target/debian/socktop-agent_*.deb + +# Sign the repository (replace YOUR-KEY-ID with actual key ID) +./scripts/sign-apt-repo.sh apt-repo stable YOUR-KEY-ID + +# Update URLs with your GitHub username +sed -i 's/YOUR-USERNAME/your-github-username/g' apt-repo/README.md apt-repo/index.html +``` + +## Step 3: Publish to GitHub Pages (gh-pages branch) + +```bash +# Create gh-pages branch +git checkout --orphan gh-pages +git rm -rf . + +# Copy apt-repo CONTENTS to root (not the folder itself) +cp -r apt-repo/* . +rm -rf apt-repo + +# Commit and push +git add . +git commit -m "Initialize APT repository" +git push -u origin gh-pages + +# Go back to main branch +git checkout main +``` + +Then in GitHub: +1. Go to **Settings → Pages** +2. Source: **Deploy from a branch** +3. Branch: **gh-pages** → **/ (root)** → **Save** + +Wait 1-2 minutes, then visit: `https://your-username.github.io/socktop/` + +## Step 4: Automate with GitHub Actions + +Add these secrets to your repository (Settings → Secrets → Actions): + +```bash +# Export your private key +gpg --armor --export-secret-key YOUR-KEY-ID + +# Copy the ENTIRE output and save as secret: GPG_PRIVATE_KEY +``` + +Add these three secrets: +- **GPG_PRIVATE_KEY**: Your exported private key +- **GPG_KEY_ID**: Your key ID (e.g., `ABC123DEF456`) +- **GPG_PASSPHRASE**: Your key passphrase (leave empty if no passphrase) + +The workflow in `.github/workflows/publish-apt-repo.yml` will now: +- Build packages for AMD64 and ARM64 +- Update the APT repository +- Sign with your GPG key +- Push to gh-pages automatically + +Trigger it by: +- Creating a version tag: `git tag v1.50.0 && git push --tags` +- Manual dispatch from GitHub Actions tab + +## Step 5: Test It + +On any Debian/Ubuntu system: + +```bash +# Add your repository +curl -fsSL https://your-username.github.io/socktop/KEY.gpg | \ + sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg + +echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://your-username.github.io/socktop stable main" | \ + sudo tee /etc/apt/sources.list.d/socktop.list + +# Install +sudo apt update +sudo apt install socktop socktop-agent + +# Verify +socktop --version +socktop_agent --version +``` + +## Maintenance + +### Add a New Version + +```bash +# Build new packages +cargo deb --package socktop +cargo deb --package socktop_agent + +# Add to repository +./scripts/add-package-to-repo.sh target/debian/socktop_*.deb +./scripts/add-package-to-repo.sh target/debian/socktop-agent_*.deb + +# Re-sign +./scripts/sign-apt-repo.sh apt-repo stable YOUR-KEY-ID + +# Publish +cd docs/apt # or wherever your apt-repo is +git add . +git commit -m "Release v1.51.0" +git push origin main +``` + +### Or Just Tag and Let GitHub Actions Do It + +```bash +# Update version in Cargo.toml +# Commit changes +git add . +git commit -m "Bump version to 1.51.0" + +# Tag and push +git tag v1.51.0 +git push origin main --tags + +# GitHub Actions will: +# - Build packages for AMD64 and ARM64 +# - Update gh-pages branch automatically +# - Sign and publish! +``` + +## Troubleshooting + +### "Repository not signed" error + +Make sure you signed it: +```bash +./scripts/sign-apt-repo.sh apt-repo stable YOUR-KEY-ID +ls apt-repo/dists/stable/Release* +# Should show: Release, Release.gpg, InRelease, KEY.gpg +``` + +### "404 Not Found" on GitHub Pages + +1. Check Settings → Pages is enabled +2. Wait 2-3 minutes for GitHub to deploy +3. Verify the URL structure matches your settings + +### GitHub Actions not signing + +Check that all three secrets are set correctly: +- Settings → Secrets and variables → Actions +- Make sure GPG_PRIVATE_KEY includes the BEGIN/END lines +- Test locally first + +## What's Next? + +✅ You now have a working APT repository! + +**Share it:** +- Add installation instructions to your main README +- Tweet/blog about it +- Submit to awesome-rust lists + +**Improve it:** +- Customize your GitHub Pages site (it's just HTML!) +- Add more architectures (ARMv7) +- Create multiple distributions (stable, testing) +- Set up download statistics +- Apply to Ubuntu PPA (Launchpad) +- Eventually submit to official Debian repos + +## Full Documentation + +For detailed information, see: +- `docs/APT_REPOSITORY.md` - Complete APT repository guide +- `docs/DEBIAN_PACKAGING.md` - Debian packaging details +- `DEBIAN_PACKAGING_SUMMARY.md` - Quick summary + +## Questions? + +Open an issue on GitHub or check the full documentation. + +--- + +**Happy packaging! 📦** \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..6bac3ec --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# socktop APT Repository + +This repository contains Debian packages for socktop and socktop-agent. + +## Adding this repository + +Add the repository to your system: + +```bash +# Add the GPG key +curl -fsSL https://jasonwitty.github.io/socktop/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg + +# Add the repository +echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://jasonwitty.github.io/socktop stable main" | sudo tee /etc/apt/sources.list.d/socktop.list + +# Update and install +sudo apt update +sudo apt install socktop socktop-agent +``` + +## Manual Installation + +You can also download and install packages manually from the `pool/main/` directory. + +```bash +wget https://jasonwitty.github.io/socktop/pool/main/socktop_VERSION_ARCH.deb +sudo dpkg -i socktop_VERSION_ARCH.deb +``` + +## Supported Architectures + +- amd64 (x86_64) +- arm64 (aarch64) +- armhf (32-bit ARM) + +## Building from Source + +See the main repository at https://github.com/jasonwitty/socktop diff --git a/SETUP_GITHUB_PAGES.md b/SETUP_GITHUB_PAGES.md new file mode 100644 index 0000000..4a71979 --- /dev/null +++ b/SETUP_GITHUB_PAGES.md @@ -0,0 +1,351 @@ +# Setting Up GitHub Pages for socktop APT Repository + +This guide walks you through the initial setup of your APT repository on GitHub Pages using the `gh-pages` branch. + +## Prerequisites + +- [ ] You've run `./scripts/setup-apt-repo.sh` or manually created `apt-repo/` +- [ ] `apt-repo/` contains signed packages and metadata +- [ ] You have a GitHub repository for socktop + +## Step-by-Step Setup + +### 1. Verify Your Local Repository + +First, make sure everything is ready: + +```bash +# Check that apt-repo exists and has content +ls -la apt-repo/ + +# You should see: +# - dists/stable/Release, Release.gpg, InRelease +# - pool/main/*.deb +# - KEY.gpg +# - index.html, README.md +``` + +### 2. Create and Switch to gh-pages Branch + +```bash +# Create a new orphan branch (no history from main) +git checkout --orphan gh-pages + +# Remove all files from staging +git rm -rf . +``` + +**Important:** This creates a completely separate branch. Don't worry - your main branch is safe! + +### 3. Copy APT Repository to Root + +```bash +# Copy CONTENTS of apt-repo to root of gh-pages +cp -r apt-repo/* . + +# Remove the apt-repo directory itself +rm -rf apt-repo + +# Verify the structure +ls -la + +# You should see in the current directory: +# - dists/ +# - pool/ +# - KEY.gpg +# - index.html +# - README.md +``` + +**Why root?** GitHub Pages can only serve from: +- `/` (root) - what we're doing +- `/docs` directory +- NOT from custom directories like `/apt-repo` + +### 4. Commit and Push + +```bash +# Add all files +git add . + +# Commit +git commit -m "Initialize APT repository for GitHub Pages" + +# Push to gh-pages branch +git push -u origin gh-pages +``` + +### 5. Return to Main Branch + +```bash +# Switch back to your main development branch +git checkout main + +# Verify you're back on main +git branch +# Should show: * main +``` + +### 6. Enable GitHub Pages + +1. Go to your repository on GitHub +2. Click **Settings** (top right) +3. Click **Pages** (left sidebar) +4. Under "Build and deployment": + - Source: **Deploy from a branch** + - Branch: **gh-pages** + - Folder: **/ (root)** + - Click **Save** + +### 7. Wait for Deployment + +GitHub will deploy your site. This usually takes 1-2 minutes. + +You can watch the progress: +- Go to **Actions** tab +- Look for "pages build and deployment" workflow + +### 8. Verify Your Repository is Live + +Once deployed, your repository will be at: + +``` +https://YOUR-USERNAME.github.io/socktop/ +``` + +Test it: + +```bash +# Check the public key is accessible +curl -I https://YOUR-USERNAME.github.io/socktop/KEY.gpg + +# Should return: HTTP/2 200 + +# Check the Release file +curl -I https://YOUR-USERNAME.github.io/socktop/dists/stable/Release + +# Should return: HTTP/2 200 +``` + +### 9. Test Installation (Optional but Recommended) + +On a Debian/Ubuntu VM or system: + +```bash +# Add GPG key +curl -fsSL https://YOUR-USERNAME.github.io/socktop/KEY.gpg | \ + sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg + +# Add repository +echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://YOUR-USERNAME.github.io/socktop stable main" | \ + sudo tee /etc/apt/sources.list.d/socktop.list + +# Update package lists +sudo apt update + +# You should see: +# Get:1 https://YOUR-USERNAME.github.io/socktop stable InRelease [xxx B] + +# Install packages +sudo apt install socktop socktop-agent + +# Verify +socktop --version +``` + +## Understanding the Two Branches + +After setup, you'll have two branches: + +### `main` branch (development) +``` +main/ +├── src/ +├── Cargo.toml +├── scripts/ +├── docs/ +├── apt-repo/ ← Local build artifact (not published) +└── ... +``` + +**Purpose:** Source code, development, building packages + +### `gh-pages` branch (published) +``` +gh-pages/ +├── dists/ +├── pool/ +├── KEY.gpg +├── index.html ← Customize this for a nice landing page! +└── README.md +``` + +**Purpose:** Published APT repository served by GitHub Pages + +## Workflow Going Forward + +### Manual Updates + +When you release a new version: + +```bash +# 1. On main branch, build new packages +git checkout main +cargo deb --package socktop +cargo deb --package socktop_agent + +# 2. Update local apt-repo +./scripts/add-package-to-repo.sh target/debian/socktop_*.deb +./scripts/add-package-to-repo.sh target/debian/socktop-agent_*.deb +./scripts/sign-apt-repo.sh apt-repo stable YOUR-GPG-KEY-ID + +# 3. Switch to gh-pages and update +git checkout gh-pages +cp -r apt-repo/* . +git add . +git commit -m "Release v1.51.0" +git push origin gh-pages + +# 4. Return to main +git checkout main +``` + +### Automated Updates (Recommended) + +Set up GitHub Actions to do this automatically: + +1. Add GitHub Secrets (Settings → Secrets → Actions): + - `GPG_PRIVATE_KEY` - Your exported private key + - `GPG_KEY_ID` - Your GPG key ID + - `GPG_PASSPHRASE` - Your GPG passphrase (if any) + +2. Tag and push: + ```bash + git tag v1.51.0 + git push origin main --tags + ``` + +3. GitHub Actions will automatically: + - Build packages for AMD64 and ARM64 + - Update apt-repo + - Sign with your GPG key + - Push to gh-pages + - Create GitHub Release + +See `.github/workflows/publish-apt-repo.yml` for details. + +## Customizing Your GitHub Pages Site + +The `gh-pages` branch contains `index.html` which users see when they visit: +`https://YOUR-USERNAME.github.io/socktop/` + +You can customize this! On the `gh-pages` branch: + +```bash +git checkout gh-pages + +# Edit index.html +nano index.html + +# Add features, badges, screenshots, etc. + +git add index.html +git commit -m "Improve landing page" +git push origin gh-pages + +git checkout main +``` + +## Troubleshooting + +### "404 Not Found" on GitHub Pages + +**Check:** +- Settings → Pages shows "Your site is live at..." +- Wait 2-3 minutes after pushing +- Verify branch is `gh-pages` and folder is `/` +- Check Actions tab for deployment errors + +### "Repository not found" when installing + +**Check:** +- URL is correct: `https://USERNAME.github.io/REPO/` (no trailing /apt-repo) +- Files exist at the URLs: + ```bash + curl -I https://USERNAME.github.io/REPO/dists/stable/InRelease + curl -I https://USERNAME.github.io/REPO/KEY.gpg + ``` + +### "GPG error" when installing + +**Check:** +- Repository is signed: `ls gh-pages/dists/stable/Release.gpg` +- Users imported the key: `curl https://USERNAME.github.io/REPO/KEY.gpg | gpg --import` + +### Changes not appearing + +**Check:** +- You committed and pushed to `gh-pages` (not `main`) +- Wait 1-2 minutes for GitHub to redeploy +- Clear browser cache if viewing index.html +- For apt: `sudo apt clean && sudo apt update` + +## Success Checklist + +After completing this guide, you should have: + +- [ ] `gh-pages` branch created and pushed +- [ ] GitHub Pages enabled and deployed +- [ ] Site accessible at `https://USERNAME.github.io/socktop/` +- [ ] `KEY.gpg` downloadable +- [ ] `dists/stable/InRelease` accessible +- [ ] Packages in `pool/main/*.deb` downloadable +- [ ] Successfully tested installation on a test system +- [ ] Understand the workflow for future updates + +## Next Steps + +1. **Update your main README.md** with installation instructions +2. **Set up GitHub Actions** for automated releases +3. **Customize index.html** on gh-pages for a nice landing page +4. **Test on multiple architectures** (AMD64, ARM64) +5. **Share your repository** with users + +## Quick Reference + +**Switch branches:** +```bash +git checkout main # Development +git checkout gh-pages # Published site +``` + +**Update published site manually:** +```bash +git checkout main +# ... build packages, update apt-repo ... +git checkout gh-pages +cp -r apt-repo/* . +git add . && git commit -m "Update" && git push +git checkout main +``` + +**Your repository URL:** +``` +https://YOUR-USERNAME.github.io/socktop/ +``` + +**User installation command:** +```bash +curl -fsSL https://YOUR-USERNAME.github.io/socktop/KEY.gpg | \ + sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg +echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://YOUR-USERNAME.github.io/socktop stable main" | \ + sudo tee /etc/apt/sources.list.d/socktop.list +sudo apt update && sudo apt install socktop socktop-agent +``` + +--- + +**Need help?** See: +- `QUICK_START_APT_REPO.md` - Overall quick start +- `docs/APT_REPOSITORY.md` - Comprehensive guide +- `docs/APT_WORKFLOW.md` - Visual workflow diagrams \ No newline at end of file diff --git a/WHY_GHPAGES_BRANCH.md b/WHY_GHPAGES_BRANCH.md new file mode 100644 index 0000000..36b392a --- /dev/null +++ b/WHY_GHPAGES_BRANCH.md @@ -0,0 +1,119 @@ +# Why We Use the gh-pages Branch + +## The Problem + +GitHub Pages has a limitation - it can only serve static sites from: + +1. **`/` (root)** of a branch +2. **`/docs`** directory of a branch +3. **NOT** from custom directories like `/apt-repo` + +## Why Not `/docs`? + +When you tried to enable GitHub Pages with `apt-repo/` checked into main, you couldn't select it because: + +``` +main/ +├── src/ +├── Cargo.toml +├── apt-repo/ ← GitHub Pages can't serve from here! +└── ... +``` + +You could move it to `/docs`: +``` +main/ +├── src/ +├── Cargo.toml +├── docs/ ← GitHub Pages CAN serve from here +│ ├── dists/ +│ ├── pool/ +│ └── ... +└── ... +``` + +But this has downsides: +- ❌ Mixed source code and published content +- ❌ Large .deb files bloat the main branch +- ❌ Can't easily customize the site without affecting source +- ❌ Messy git history with binary files + +## Why gh-pages Branch (Our Solution) + +Using a separate `gh-pages` branch is cleaner: + +``` +main branch (source code): +├── src/ +├── Cargo.toml +├── scripts/ +└── docs/ ← Documentation source + +gh-pages branch (published): +├── dists/ +├── pool/ +├── KEY.gpg +├── index.html ← Customizable landing page +└── README.md +``` + +### Benefits + +✅ **Clean separation**: Source code stays in `main`, published content in `gh-pages` +✅ **No binary bloat**: .deb files don't clutter your main branch history +✅ **Easy automation**: GitHub Actions can push to gh-pages without affecting main +✅ **Customizable**: You can make a beautiful landing page on gh-pages +✅ **Standard practice**: Most GitHub Pages projects use gh-pages branch +✅ **Root URL**: Your repo is at `https://username.github.io/socktop/` (not `/apt-repo`) + +### Workflow + +``` +Developer (main branch) + ↓ + Build packages + ↓ + Update apt-repo/ (local) + ↓ + Push to gh-pages branch + ↓ + GitHub Pages serves + ↓ + Users: apt install socktop +``` + +## The Setup + +**One-time setup:** +```bash +git checkout --orphan gh-pages +git rm -rf . +cp -r apt-repo/* . +rm -rf apt-repo +git add . && git commit -m "Initialize APT repository" +git push -u origin gh-pages +git checkout main +``` + +**Going forward:** +- Work on `main` branch for development +- `gh-pages` branch gets updated by GitHub Actions (or manually) +- Never need to switch branches manually after automation is set up! + +## Comparison + +| Approach | Location | URL | Pros | Cons | +|----------|----------|-----|------|------| +| **gh-pages branch** ✅ | gh-pages:/ | `username.github.io/socktop/` | Clean, automated, customizable | Two branches | +| `/docs` on main | main:/docs | `username.github.io/socktop/` | One branch | Mixed content, binary bloat | +| `/apt-repo` on main | main:/apt-repo | ❌ Not possible | - | GitHub Pages won't allow it | + +## Conclusion + +The `gh-pages` branch approach is: +- The **cleanest** solution +- The **most flexible** for customization +- The **easiest to automate** +- **Industry standard** for GitHub Pages + +That's why we chose it! 🚀 diff --git a/dists/stable/InRelease b/dists/stable/InRelease new file mode 100644 index 0000000..0507251 --- /dev/null +++ b/dists/stable/InRelease @@ -0,0 +1,32 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +Origin: socktop +Label: socktop +Suite: stable +Codename: stable +Architectures: amd64 arm64 armhf +Components: main +Description: socktop APT repository +Date: Sun, 23 Nov 2025 04:05:21 +0000 +MD5Sum: + 0bddefb2f13cb7c86cd05fe1ce20310f 1549 main/binary-amd64/Packages + 674f0e552cbb7dc65380651a2a8d279e 799 main/binary-amd64/Packages.gz +SHA256: + babfbb4839e7fdfbc83742c16996791b0402a1315889b530330b338380398263 1549 main/binary-amd64/Packages + f8c48d0f7bf53eb02c6dbf5f1cdd046fe71b87273cf763c5bb2e95d9757a7a82 799 main/binary-amd64/Packages.gz + +-----BEGIN PGP SIGNATURE----- + +iQGzBAEBCgAdFiEEHnVWqAU5uDlLwoINESwaeYRl+/IFAmkiiAYACgkQESwaeYRl ++/KBsAv/eYhnK/XrNtPhLyw/zX2cGfUtBsBZrypFhV/n+TvudAIwQaqxDEvLlBUn +HBAhMKDQXGs7V45+nOgDX4rKWUqJh4SPbJgNbVte2PX7U+hsMpZBsYp3vkjApgTO +pq2CCkViyBXgTY+6vUigtvfJ9afTTWI6Qm4dLXZ7hxErBxgHQyowOoO/sF92cNOu +AosBMpE+qSy7sVqJU5g/JXJh0kddKFotXHSGA1kFMzJafJC/n5nLrusDzFJRQqyH +Io+6inYWjlb5o79z0tJzAvG1mgplLRppMBjoVJ/RJ+gT+QE70kokR6wvsgDqsKNd +mvB0TNj0zY0g6Is6V3XMyf0u+6BtLTbua913HPiqBfErgeV58vzsst+y0It42TXi +aw+UF2Kw/YhPq1rZFxgnAVcMja3qlXWpH57gmgIPovBCsPsiywWiHLsSHRzAI22b +zeTsUST/4toR/ruZVbUZvWoWAR4tzsSuwXJFx/hhinTQQTNHErXASOX986UaL9L7 +o2/pTKLe +=IeBY +-----END PGP SIGNATURE----- diff --git a/dists/stable/Release b/dists/stable/Release new file mode 100644 index 0000000..5e0b87a --- /dev/null +++ b/dists/stable/Release @@ -0,0 +1,14 @@ +Origin: socktop +Label: socktop +Suite: stable +Codename: stable +Architectures: amd64 arm64 armhf +Components: main +Description: socktop APT repository +Date: Sun, 23 Nov 2025 04:05:21 +0000 +MD5Sum: + 0bddefb2f13cb7c86cd05fe1ce20310f 1549 main/binary-amd64/Packages + 674f0e552cbb7dc65380651a2a8d279e 799 main/binary-amd64/Packages.gz +SHA256: + babfbb4839e7fdfbc83742c16996791b0402a1315889b530330b338380398263 1549 main/binary-amd64/Packages + f8c48d0f7bf53eb02c6dbf5f1cdd046fe71b87273cf763c5bb2e95d9757a7a82 799 main/binary-amd64/Packages.gz diff --git a/dists/stable/Release.gpg b/dists/stable/Release.gpg new file mode 100644 index 0000000..1f4a323 --- /dev/null +++ b/dists/stable/Release.gpg @@ -0,0 +1,14 @@ +-----BEGIN PGP SIGNATURE----- + +iQGzBAABCgAdFiEEHnVWqAU5uDlLwoINESwaeYRl+/IFAmkiiAEACgkQESwaeYRl ++/KzeAv+OUIbxud5FboerwpAJULV+rS3+VX4kvwg/daVZ3yX3tJNrsyNCHgmWLVu +fLeEFFc2Ax9GvFW4jrbxRAGD+3TXQEEFkb5lGzYyDjlgVzR6wLiVTTrmzWoK+cbB +4DMozqeLiZFfQjq4UFn3+mwiYFX9Dj7PVF0M60XAUJSObbJFmaEPZIfx6wcZfkiL +lLLk1eeU5MPiyudPOhVGgaD76KrUCw+8DBNKoCKIEcCY0LvuKtUK8mWYXRSPSved +4Znd3QZz063Z6R+Lj1XlGLoTPResna28T/Nca+2JgLhbrihsLMcHoFxmrvFP9FpT +MChKngj7NnGt0yqHH5J16hdwMra/vvhmF0yoQ0loIcy+q06tYEqOcau8tvAjfbId +k3rgQgnxxVE8WUmV9Bugp7jhNMO+ImKWMwzEr6wGd9ZHqpknUlAaWeO73VP+qtAN +6mEqWhkqvXGg+srH6qp3Sg0W28dYG29X3Kx8jOp7HeyvA/gLZRN7L+bq/XaA7WFA +1hba6LIY +=QoLf +-----END PGP SIGNATURE----- diff --git a/dists/stable/main/binary-amd64/Packages b/dists/stable/main/binary-amd64/Packages new file mode 100644 index 0000000..0f0a3fa --- /dev/null +++ b/dists/stable/main/binary-amd64/Packages @@ -0,0 +1,38 @@ +Package: socktop +Version: 1.50.0-1 +Architecture: amd64 +Maintainer: Jason Witty +Installed-Size: 3459 +Filename: pool/main/socktop_1.50.0-1_amd64.deb +Size: 1278940 +MD5sum: 0215e178e306d9379669065e8c78582b +SHA1: 04e0416389f5cecd584fd1f6b3568711f2645eee +SHA256: 69eb04b1de48541c95950a97b16357fcd9c51ffaceb143f63de4a9d758fad297 +Section: admin +Priority: optional +Homepage: https://github.com/jasonwitty/socktop +Description: Remote system monitor over WebSocket, TUI like top + socktop is a remote system monitor with a rich terminal user interface (TUI) + that connects to remote hosts running the socktop_agent over WebSocket. It + provides real-time monitoring of CPU, memory, processes, and more with an + interface similar to the traditional 'top' command. + +Package: socktop-agent +Version: 1.50.2-1 +Architecture: amd64 +Maintainer: Jason Witty +Installed-Size: 6793 +Filename: pool/main/socktop-agent_1.50.2-1_amd64.deb +Size: 1896272 +MD5sum: 22e78d03e83dcf84d6ec4a009b285902 +SHA1: 26a9f4fedfdba06a047044027223f2944cf72ba6 +SHA256: 11922af475146f60347a9c52cff4bbce1ce524bdb4293b2c436f3c71876e17d5 +Section: admin +Priority: optional +Homepage: https://github.com/jasonwitty/socktop +Description: Socktop agent daemon. Serves host metrics over WebSocket. + socktop_agent is the daemon component that runs on remote hosts to collect and + serve system metrics over WebSocket. It gathers CPU, memory, disk, network, + GPU, and process information that can be monitored remotely by the socktop TUI + client. + diff --git a/dists/stable/main/binary-amd64/Packages.gz b/dists/stable/main/binary-amd64/Packages.gz new file mode 100644 index 0000000..2584bd7 Binary files /dev/null and b/dists/stable/main/binary-amd64/Packages.gz differ diff --git a/dists/stable/main/binary-amd64/Release b/dists/stable/main/binary-amd64/Release new file mode 100644 index 0000000..7b55517 --- /dev/null +++ b/dists/stable/main/binary-amd64/Release @@ -0,0 +1,5 @@ +Archive: stable +Component: main +Origin: socktop +Label: socktop +Architecture: amd64 diff --git a/index.html b/index.html new file mode 100644 index 0000000..fc486f2 --- /dev/null +++ b/index.html @@ -0,0 +1,58 @@ + + + + + + socktop APT Repository + + + +

socktop APT Repository

+

System monitor with remote agent support for Linux systems.

+ +

Adding this repository

+
# Add the GPG key
+curl -fsSL https://jasonwitty.github.io/socktop/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg
+
+# Add the repository
+echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://jasonwitty.github.io/socktop stable main" | sudo tee /etc/apt/sources.list.d/socktop.list
+
+# Update and install
+sudo apt update
+sudo apt install socktop socktop-agent
+ +

Manual Installation

+

Download packages from pool/main/

+ +

Supported Architectures

+
    +
  • amd64 (x86_64)
  • +
  • arm64 (aarch64)
  • +
  • armhf (32-bit ARM)
  • +
+ +

Source Code

+

Visit the GitHub repository

+ + diff --git a/pool/main/socktop-agent_1.50.2-1_amd64.deb b/pool/main/socktop-agent_1.50.2-1_amd64.deb new file mode 100644 index 0000000..45fd533 Binary files /dev/null and b/pool/main/socktop-agent_1.50.2-1_amd64.deb differ diff --git a/pool/main/socktop_1.50.0-1_amd64.deb b/pool/main/socktop_1.50.0-1_amd64.deb new file mode 100644 index 0000000..90a7972 Binary files /dev/null and b/pool/main/socktop_1.50.0-1_amd64.deb differ